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