【FME-HOW-TO系列】22 多边形与多边形的叠加
概述
在本练习中,您将学习如何使用AreaOnAreaOverlayer在重叠的面要素之间执行并集。AreaOnAreaOverlayer通常用于三个主要操作:(1)解构重叠多边形以产生交叉和差异,(2)比较区域重叠的多个数据集,以及(3)基于重叠面数据的面积计算。
下载
polygon-in-polygon-overlay.fmwt
注意:由于您正在处理面向公众的数据库,因此有时可能会覆盖和/或修改表。如果您的转换产生意外结果,请参阅重置PostGIS培训数据库文章。或者,您可以下载提供的文件,并使用适当格式的读模块替换PostGIS读模块。
练习
在此方案中,您将基于重叠的历史区域和街区多边形执行面积计算。这将允许您识别哪个历史区域属于每个街区以及每个历史区域的总面积。
说明
1.启动FME Workbench
- 如果尚未打开,请启动FME Workbench。
2.创建一个新工作空间
- 在“开始”页面的“创建工作空间”部分中,选择“创建新工作空间”选项。
3.添加PostGIS读模块
- 在画布上没有选择任何内容的情况下开始键入“PostGIS”,然后通过双击或使用箭头键和Enter键从读模块列表中选择PostGIS格式将其添加到画布。
- 接下来,从读模块连接列表中选择PostGIS Training Database。如果尚未设置数据库连接,请选择“添加数据库连接”并输入以下参数:
- 主机:postgis.train.safe.com
- 端口:5432
- 数据库:fmedata
- 用户名:fmedata
- 密码:fmedata
- 接下来,打开读模块参数并表列中选择Neighborhoods和HistoricZones表。
4.添加AreaOnAreaOverlayer转换器
- 选择“Neighborhoods”和“HistoricZones读模块要素类”,然后键入“AreaOnAreaOverlayer”,然后从“快速添加搜索”中的“转换器”列表中选择“AreaOnAreaOverlayer”。这将自动建立从Neighborhood和HistoricZones读模块到AreaOnAreaOverlayer的连接。Neighborhoods和HistoricZones读模块要素类应连接到AreaOnAreaOverlayer:Area端口。
5.设置属性聚合模式
AreaOnAreaOverlayer转换器将对相交的多边形执行面对面压盖 - 所有多边形彼此相对,并且在它们重叠的位置,创建新多边形,表示重叠区域和删除重叠的原始区域。有关AreaOnAreaOverlayer的更多技术详细信息,请参阅文档。
- 添加AreaOnAreaOverlayer后,双击AreaOnAreaOverlayer或单击齿轮图标以打开转换器参数。
- 将Attribute Accumulation Mode设置为Merge Incoming Attributes(合并进入的属性)。这将允许您连接要素重叠的HistoricZones和Neighborhood多边形两者的属性。
6.计算每个多边形的面积
- 在AreaOnAreaOverlayer之后添加AreaCalculator - 这将自动计算由AreaOnAreaOverlayer创建的每个多边形的面积。
- 将AreaCalculator连接到AreaOnAreaOverlayer:Area端口。
注意:面积以正方形图单位计算。有关面积计算的更深入的教程,请参阅Area Measurements with the AreaCalculator一文。
7.添加Inspector
- 接下来,添加一个Inspector并将其连接到AreaOnAreaOverlayer:Output端口。
8.添加GeoJSON写模块
- 与添加读模块类似,键入“GeoJSON”,然后从写模块列表中选择GeoJSON格式。
- 单击数据集省略号以指定保存数据的位置并命名文件:HistoricAreas(例如,C:\ Users \ Documents \ FME \ HistoricAreas \ HistoricAreas.json)
- 将“图层定义”设置为“自动”以确保将创建或重命名的所有属性都写入GeoJSON文件。
- 将GeoJSON写模块连接到AreaOnAreaOverlayer:Output端口。
9.运行工作空间
- 单击工具栏上的“运行”按钮,或使用菜单栏上的“运行”>“运行转换”运行工作空间。由于您将Inspector连接到最终的转换器,因此输出数据集将自动在FME Data Inspector中打开。
结果
输入
输出
转换器
- AreaCalculator - 计算多边形对象的面积并将值存储在属性中。
- AreaOnAreaOverlayer - 执行面对面压盖(多边形相交),以便所有输入面相互交叉,并创建和输出合成面要素。
- Inspector - 将要素发送到FME Data Inspector以供显示。