span8
span4
使用FME服务器和FME桌面,我们可以使用一个感兴趣的多边形区域(例如一个城市边界)来剪辑一组用户指定的层,这与读取整个层集,然后剪辑功能的传统方法不同。
要执行此任务,将使用featuereader变压器。这个转换器允许我们使用任何格式,并允许将空间过滤器应用到用户指定的层。
此外,featuereader允许你动态地将数据写入它读取的任何表的目标特性类型中。这是通过
下面是一个循序渐进的指南。有关已完成的示例,请参阅所附的工作区。
这个特性将用于在空间上过滤我们想要的数据。在此边界内找到的所有特性都将被读取到工作流中。亚搏在线
在画布上添加一个新的Mapinfo标签阅读器。
格式MapInfo标签(MITAB)
数据集FME数据:< > \分区\ Zones.tab
这个选项将允许终端用户根据他们选择的区域类型选择不同的边界(例如工业和住宅),从而实现灵活性。在导航器中,右键单击Published Parameters并选择“Add Parameter”。创建一个新的' Choice '参数并从MapInfo文件中导入Zone类型。
a)在导航器中右键单击Published Parameters并选择‘Add’。输入以下:
b)点击配置按钮,在下面的界面中选择“导入”:
c)读取Zones .Tab文件和setup导入模式:
单击“Next”。
单击“导入”以导入类别。
选择“OK”保存参数。
额外的信用
使用网络映射工具:如果你的用户正在用某种网络映射工具绘制感兴趣的区域,你可以将这个多边形的顶点发送到一个新的发布参数,然后使用Creator和转换器组合从这些顶点创建一个多边形。
使用Where子句:如果您的用户通过添加阅读器来选择感兴趣的领域,您可以为该阅读器发布Where子句(如果适用于格式),以提供用户灵活性。(在我们的例子中,Mapinfo没有这个功能,所以我们必须创建一个参数)
以上两种方法都可以组合在一个工作区中,给用户提供任意一种选择。
区域数据集中的每个区域类别由多个多边形组成。由于我们希望使用单个区域作为边界,因此需要一种方法将这些功能聚合为一个有组织的功能。为此,我们将使用Dissolver、Aggregator和Tester转换器。
一)将Dissolver放置在连接到MITAB读取器的画布上,设置如下:
组:ZoneCategory
b)添加一个聚合器:
组:ZoneCategory
c)使用我们发布的参数(TYPE)添加一个Tester:
左值:ZoneCategory操作符:=右值:$(TYPE)
在这个阶段,我们将读取我们感兴趣的实际数据层,这些数据层将通过写入器写入。这是我们想要被边界多边形过滤的数据。
将featuereader添加到Canvas并将其连接到Tester。然后设置如下:
格式: PostGIS
数据集:嵌入连接参数
PostGIS凭证:
宿主 | postgis.train.亚搏在线safe.com |
港口 | 5432 |
数据库 | fmedata |
用户 | fmedata |
密码 | fmedata |
要读取的特征类型:公共。Parks(输入文本或使用“…”按钮搜索)
空间滤波器:包含
输出接口:单输出端口
输出>属性和几何处理> <通用端口> >属性暴露:fme_feature_type
选择“Ok”。
运行工作区并检查输出。您应该注意到,只保留了所选边界多边形内的公园数据。在这个阶段,只有Parks会被读取到工作区中,因此我们可以通过给用户提供图层选择来提高灵活性。
要做到这一点,需要创建第二个发布参数,以允许用户选择他们想要的层(即特性类型)。在featureereader中,选择“Feature Types”旁边的下拉箭头,然后选择“User Parameter > Create User Parameter”,然后选择Fixed List从存储在数据库中的图层中进行选择。选择:“公众。道路、公共。公园和公共。然后选择“OK”来创建参数。
额外的信用
还可以将参数创建为文本字段。文本字段允许输入工作区创建时不存在的选项;它们需要手工输入或通过另一个程序(如使用FME服务器的web应用程序)传入。您将把用户的选择以空格分隔的列表的形式发送给该参数。例如:“addresspopoints包裹邻里”。
由于工作区在读取内容方面非常灵活,因此需要将写入器设置为动态模式,以确保数据能够被写入。
在画布上添加一个Generic writer,并选择' Autodesk Autocad DWG/DXF '作为参数中使用的格式。当工作空间运行时,您可以在提示时将其更改为任何您想要的格式(功能强大!)
请注意:工作区将按照基于文件和文件夹的格式工作。对于其他格式,如基于云的和数据库,需要设置额外的写入器参数,以指定并连接到所需的目的地。
Generic格式允许用户选择格式。然后将模式设置为Dynamic,模式源设置为“来自模式特性的模式”。
为了在FME中写出数据,写入器特性类型需要知道它将使用的模式。在本例中,我们需要使用来自featureereader的数据作为我们的模式。
我们如何得到模式?
在FME 2015年,featuereader有一个额外的输出端口“
请注意要使用固定模式(本例中没有显示),您需要为用户可能读取的任何表添加一个写入器和目标特性类型。使用FeatureTypeFilter转换器将特性路由到适当的目标特性类型。
现在使用Prompt和Run选项来执行工作区。尝试使用不同的Zone Types和tablename来生成不同的输出集。
正在发生的是,featuereader变压器是由Initiator特性触发的。在我们的例子中,这是Zone数据的边界多边形集合。如果我们有10个边界多边形,那么featuereader将被执行10次。如果启动器特性较少,则性能最好。
当featureereader被初始化时,它连接到格式并读取TableNames参数中指定的特性类型。转换器允许空间过滤,因此使用“Contains”子句意味着返回的特性被Initiator多边形所包含。然后,编写器动态地获取所有特性,并根据传入的层名和模式将它们写入各自的层。任何落在边界框之外的特性都不包括在内。
©2020 S亚搏在线afe Software Inc |法律