概述
在本教程中,您将学习如何使用ContourGenerator和数字高程模型(DEM)创建等高线。FME中的ContourGenerator基于栅格单元的输入值构建Delaunay三角剖分,然后使用该栅格单元生成等高线。
下载
generate-contours-from-raster.fmwt
练习
在这种情况下,您将从DEM创建等高线,因为您想要创建一个50米的等高线数据集供以后使用。
说明
1.启动FME Workbench
- 如果尚未打开,请启动FME Workbench。
2.创建一个新工作空间
- 在“开始”页面的“创建工作空间”部分中,选择“创建新工作空间”选项。
3.添加加拿大数字高程数据(CDED读模块
- 在画布上没有选择任何内容的情况下开始键入“CDED”,然后通过双击或使用箭头键和Enter键从读模块列表中选择CDED格式将其添加到画布。
- 单击数据集省略号,然后导航到示例数据文件夹并选择DEM-Full.dem文件(例如,C:\ Users \ Documents \ FME \ ElevationModel \ DEM-FULL.dem)。
4.添加ContourGenerator
- 选择CDED读模块并键入“ContourGenerator”,然后从“快速添加搜索”中的“转换器”列表中选择ContourGenerator。这将自动建立从Reprojector 到ContourGenerator的连接。
5.设置输出等高线间隔
- 打开ContourGenerator转换器参数。
- 将表面容差(Surface Tolerance)参数的值设置为0. Surface Tolerance是用于过滤顶点的参数; 但是,由于您正在使用栅格数据集,因此可以通过指定值0来关闭此功能。
- 接下来,将输出高程属性的名称从“_elevation”更改为“elevation”。
- 最后,将输出等高线间隔设置为50 - 这将应用使用输入要素单位。
将所有其他参数保留为默认值,然后单击“确定”接受对ContourGenerator参数的更改。ContourGenerator参数对话框应类似于下面提供的屏幕截图中的对话框:
注意:ContourGenerator输出的默认维度为3D。
6.组合等高线线段
- 将LineCombiner Transformer添加到画布并连接ContourGenerator:Contours端口。您的工作空间应如下面的屏幕截图所示:
此转换器的目的是组合路径以使每个路径ID具有一个记录,而不是具有分段的等高线。
- 打开LineCombiner参数。
- 唯一需要更改的参数是”组合属性(Combine On Attributes)”。单击“组合属性”省略号以显示要合并的属性列表。从列表中选择Elevation属性,然后单击OK返回LineCombiner参数。
- 单击“确定”接受更改并关闭LineCombiner参数。
注意:为了组合行,它们必须在完全相同的起点/终点处相遇。另外,在三条或更多条线的交汇点处,线将保持断开。有关更多信息,请参阅LineCombiner文档。
- 将所有其他参数保留为默认值,然后单击“确定”接受对LineCombiner参数的更改。
8.添加一个Inspector
- 接下来,在LineCombiner之后添加一个Inspector并将其连接到LineCombiner:Line端口。这将在转换运行后自动打开FME Data Inspector中的栅格数据集。
9.添加Industry Foundation Class STEP Files(IFC)写模块
- 与添加读模块类似,键入“IFC”,然后从写模块列表中选择Industry Foundation Class STEP Files(IFC)格式。
- 单击数据集省略号以指定保存数据的位置并命名文件:50mContour(例如,C:\ Users \ Documents \ FME \ Contours \ 50mContour.ifc)
- 将“图层定义”设置为“自动”以确保将创建或重命名的所有属性都写入IFC文件。
(Industry Foundation Class-工业基础类 STEP-产品模型数据交换标准)
10.运行工作空间
- 单击工具栏上的“运行”按钮,或使用菜单栏上的“运行”>“运行转换”运行工作空间。由于您将Inspector连接到最终的转换器,因此输出数据集将自动在FME Data Inspector中打开。
结果
输入
输出
转换器
- ContourGenerator - 根据输入点和隔断线构造Delaunay三角剖分。
- Inspector - 将要素发送到FME Data Inspector以供显示。
- LineCombiner - 占用线并连接它们以形成更长的线。