span8
span4
有了FME服务器和FME桌面,我们可以使用感兴趣的区域(如多边形)。一个城市的边界)剪切一组用户指定的层,这是不同的更传统的方法读取整个层,然后剪切的特点。
要执行此任务,将使用FeatureReader转换器。这个转换器允许我们使用任何格式,并且实际上允许将空间过滤器应用到用户指定的层。
另外,FeatureReader允许您将数据动态地写入它所读取的任何表的目标特性类型。这是通过
以下是一个循序渐进的指南。请参阅附加的工作空间以获得完成的示例。
这个特性将用于对所需的数据进行空间过滤。在这个边界内找到的所有特性都将被读入工作流。亚搏在线
向画布添加一个新的Mapinfo选项卡阅读器。
格式: MapInfo标签(MITAB)
数据集:
这个选项允许终端用户根据他们选择的区域类型选择不同的边界,从而为终端用户提供了灵活性。工业vs。住宅)。在导航器中,右键单击已发布的参数并选择“添加参数”。创建一个新的' Choice '参数并从MapInfo文件导入区域类型。
a)在导航栏中右键点击已发布的参数,选择“添加”。输入以下:
b)点击配置按钮,在如下画面中选择“导入”:
c)读取zone .Tab文件,设置导入模式:
单击“Next”。
点击“导入”来导入分类。
选择“OK”保存参数。
额外的信用
使用Web映射工具:如果您的用户正在绘制某种Web映射工具中感兴趣的区域,您可以将此多边形的顶点发送到一个新的发布参数,然后使用创建者和变形器的组合从这些顶点创建一个多边形。
使用Where子句:如果您的用户通过添加阅读器来选择感兴趣的区域,那么您可以为该阅读器发布Where子句(如果适用于该格式),以提供用户灵活性。(在我们的例子中,Mapinfo没有这个功能,所以我们必须创建一个参数)
以上两种方法都可以在一个单独的工作空间中组合使用,为用户提供两种选择。
区域数据集中的每个区域类别由多个多边形组成。由于我们希望使用单个区域作为边界,所以我们需要一种方法来将这些特性聚合到一个有组织的特性中。为此,我们将使用溶解器、聚合器和测试转换器。
一)将溶解器放在连接到MITAB读取器的画布上,设置如下:
组:ZoneCategory
b)添加一个聚合器:
组:ZoneCategory
c)添加一个测试使用我们发布的参数(类型):
左值:ZoneCategory操作符:=右值:$(类型)
在此阶段,我们将读取感兴趣的实际数据层,并通过写入器将其写入。这是我们想要被边界多边形过滤的数据。
向画布添加一个FeatureReader并将其连接到测试器。然后设置如下:
格式:PostGIS
数据集:嵌入连接参数
PostGIS凭证:
主机 | postgis.train.亚搏在线safe.com |
港口 | 5432 |
数据库 | fmedata |
用户 | fmedata |
密码 | fmedata |
要读取的特性类型:公共。Parks ( type this text or use the ‘…’ button to search)
空间滤波器:包含
输出端口:单输出端口
输出>属性和处理>的几何图形
选择“Ok”。
运行工作区并检查输出。您应该注意到,只有公园数据存在于您选择的边界多边形中。在这个阶段,只有Parks会被读取到工作空间中,所以我们可以通过给用户层的选择来提高灵活性。
为此,需要创建第二个已发布的参数,以允许用户选择哪些层(即。,特性类型)他们想要的。在FeatureReader中,选择“Feature Types”旁边的下拉箭头,选择“User Parameter > Create User Parameter”,然后选择Fixed List从数据库中存储的各个层中进行选择。选择:“公众。道路、公共。Parks and public.AddressPoints’ and then choose 'OK' to create the parameter.
额外的信用
还可以将参数创建为文本字段。文本字段允许输入工作区创建时不存在的选项;它们需要手动输入或通过另一个程序(如使用FME服务器的web应用程序)传入。您将把用户的选择作为空格分隔的列表发送到此参数。例如:“addresspots包裹社区”。
由于工作区可以读取的内容非常灵活,因此需要将写入器设置为动态模式,以确保可以将数据写入。
向画布添加一个通用的写入器,并选择“Autodesk Autocad DWG/DXF”作为参数中使用的格式。当工作空间运行时,您可以在提示时将其更改为您想要的任何格式(功能强大!)。
请注意:工作区的工作原理是基于文件和文件夹的格式。对于其他格式,如基于云的和数据库,需要设置额外的写入器参数,以指定和连接到所需的目的地。
通用格式允许用户选择格式。然后将模式设置为Dynamic,模式源设置为“模式来自模式特性”。
为了在FME中写出数据,writer特性类型需要知道它将使用的模式。在这种情况下,我们需要使用来自FeatureReader的数据作为模式。
我们如何获得模式?
在FME 2015 FeatureReader有一个额外的输出端口”
请注意:要使用固定模式(在本例中没有显示),您需要为用户可能读取的任何表添加写入器和目标功能类型。使用FeatureTypeFilter转换器将特性路由到适当的目标特性类型。
现在使用提示和Run选项来执行工作区。尝试使用不同的区域类型和表名来生成不同的输出集。
所发生的是FeatureReader转换器是由发起者特性触发的。在我们的例子中,这是区域数据的边界多边形集。如果我们有10个边界多边形,那么FeatureReader将被执行10次。如果启动程序特性较少,则性能最好。
当FeatureReader启动时,它连接到格式并读取表名参数中指定的特性类型。transformer允许空间过滤,因此使用“Contains”子句意味着返回的特性由发起者多边形包含。然后编写器根据传入的层名称和模式动态获取所有特性并将它们写入各自的层。任何落在我们的边界框之外的功能都不包括在内。
©2019安全亚搏在线软件公司法律