【FME-HOW-TO系列】25 多边形中的线

概述

在本练习中,您将使用SpatialFilter设置空间谓词,以确定哪些线要素与多边形要素相交。SpatialFilter会比较两组要素,以查看它们的空间关系是否符合所选的测试条件。正在测试的要素((Candidate要素)被识别为已通过或未通过测试。例如,如果您有道路数据集(线),并且想要提取通过公园(多边形)的所有道路,您可以将道路引导到Candidate输入端口,并将公园引导到Filter 输入端口。


下载

topological-intersection.fmwt

mountpleasantclipboundary.zip

streets.zip

注意:由于您正在处理面向公众的数据库,因此有时可能会覆盖和/或修改表。如果您的转换产生意外结果,请参阅重置PostGIS培训数据库文章或者,您可以下载提供的文件,并使用适当格式的读模块替换PostGIS读模块

练习

在这种情况下,您将线街道要素MountPleasantClipBoundary多边形要素进行合并,并根据空间谓词“Filter Intersect Candidate”连接属性。在这种情况下,Neighborhoods数据集是过滤器,因为您想要提取与MountPleasantClipBoundary相交的所有街道并且合并两个要素的属性。

说明

1.启动FME Workbench

  • 如果尚未打开,请启动FME Workbench。

2.创建一个新工作空间

  • 在“开始”页面的“创建工作空间部分中,选择“创建新工作空间选项。

3.添加PostGIS 读模块

  • 在画布上没有选择任何内容的情况下开始键入“PostGIS”,然后通过双击或使用箭头键和Enter键从读模块列表中选择PostGIS格式将其添加到画布。
  • 接下来,从读模块连接列表中选择PostGIS Training Database。如果尚未设置数据库连接,请选择“添加数据库连接”并输入以下参数:
  • 接下来,打开读模块参数并从表列中选择MountPleasantClipBoundary和Streets表。

4.添加Spatial Filter

  • 与添加读模块类似,键入“SpatialFilter”以显示FME转换器列表。双击转换器列表中的SpatialFilter,或者使用箭头键和Enter键将其添加到画布中。

5.连接转换器输入端

  • 将MountPleasantClipBoundary 读模块连接到SpatialFilter:Filter端口。同样,将Streets 读模块连接到SpatialFilter:Candidate端口。您的连接应如下面的屏幕截图所示:

在这种情况下,您不必修改任何SpatialFilter的参数,因为默认情况下,空间谓词是“Filter Intersects Candidate”,并且已经选择了Merge Attributes。有关SpatialFilter如何工作的更多信息,请参阅SpatialFilter文档

6.添加Inspector

  • 接下来,添加一个Inspector并将其连接到SpatialFilter:Passed端口。

这将在转换运行后显示与FME Data Inspector中的MountPleasantClipBoundary多边形相交的街道

7.添加Esri地理数据库(File Geodb Open API)写模块

  • 与添加读模块类似,键入“Geodatabase”,然后从写模块列表中选择Esri地理数据库(File Geodb Open API)格式。
  • 通过单击数据集省略号,创建新文件夹或使用文件扩展名为.gdb的现有文件夹,然后选择.gdb文件夹(即C:\ Users \ Documents \ MountPleasant \ Streets.gdb)来指定文件地理数据库文件夹。指定文件地理数据库文件夹位置后,将“表定义”设置为“自动”,然后单击“确定”。要了解有关使用Esri地理数据库的更多信息,请参阅“地理数据库入门文。

自动属性定义是指Workbench根据所连接的读模块要素类自动定义属性列表,要了解有关属性定义的更多信息,请参阅关于写模块要素类文档

  • 最后,在写模块参数中设置要素类名称以及在出现的对话框中设置几何对象,然后单击“确定”将地理数据库写模块添加到“画布”。在这种情况下,SpatialFilter将输出多边形要素,因此您应将几何类型设置为:geodb_polygon。
  • 设置要素类名称并指定几何对象后,单击确定将Esri地理数据库写模块添加到画布。
  • 添加写模块后,将其连接到SpatialFilter:Passed port。

8.运行工作空间

  • 单击工具栏上的“运行”按钮,或使用菜单栏上的“运行”>“运行转换”运行工作空间。由于您附加了Inspector,输出将自动显示在FME Data Inspector中。

结果

输入

输出


转换器

  • Inspector - 要素发送到FME Data Inspector以供显示。
  • SpatialFilter - 根据空间关系过滤点,线,面和文本要素

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在FME,你可以使用Python语言编写自定义代码来实现更高级的数据转换和处理功能。以下是一些在FME写Python代码的方法: 1. PythonCaller转换器:PythonCaller是FME的一个转换器,它允许你在转换过程插入自定义的Python代码。你可以在PythonCaller转换器的参数设置编写Python代码,然后使用该转换器来执行你的代码逻辑。 2. Python脚本参数:FME的许多转换器都支持使用Python脚本作为参数。你可以在这些转换器的参数设置使用Python脚本来实现更复杂的功能。例如,在属性过滤器(AttributeFilter)转换器,你可以使用Python脚本作为过滤条件。 3. Startup Python脚本:FME允许你在工作空间启动时执行自定义的Python脚本。你可以在FME Workbench软件的“Workspace Parameters”对话框设置Startup Python脚本,该脚本会在每次运行工作空间时被调用。 4. 用户自定义转换器:如果你需要实现更复杂的功能,你还可以通过编写自定义的FME转换器来使用Python代码。FME提供了API和文档来帮助你开发自定义转换器,并将其集成到FME Workbench。 无论你选择哪种方法,编写Python代码时,你可以使用FME提供的Python API来访问和操作数据集、要素和属性。你还可以使用标准的Python库来进行更高级的数据处理和计算。 希望这些信息对你有帮助!如果你需要更多关于在FME使用Python的指导,请继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值