锻炼8 | 高程模型更新 |
数据 | 轮廓(esri shapefile) 光栅正色摄影(JPEG) |
总体目标 | 使用更新的信息生成三维表面模型 |
演示了 | 工作区组件和参数 |
开始工作 | 无 |
结束工作 | C: \ \ DesktopBasic \ Components-Ex8-Complete.fmw FMEData2016 \工作区 C:\fmedata2016\workspaces\desktopbasic\components-ex8-complete-advanced.fmw |
这个城市正在规划一个新的房地产开发项目。规划部要求对城市立面模型进行三维可视化,考虑到这一新的发展。
任务是读取当前的海拔模型,申请物业发展商提供的更改,并以adobepdf格式创建三维输出。
你的经理已经把这个任务交给你了,认为这将是非常困难的。他不像你那么了解我!
1)检查数据
第一个任务是将现有的轮廓文件读入工作区。检查文件夹,你会看到轮廓线被保存在一组形状文件块中:
可以使用FME数据检查器检查这些源文件。
2)添加读卡器
启动FME工作台,从一个空白的工作区开始。选择Reader >添加Reader读取轮廓文件:
读者的格式 | ESRI形状文件 |
读者数据集 | C:\fmedata2016\数据\高程模型\等高线\*.shp |
在选择数据时,选择该文件夹中的所有形状文件。但是不要点击OK。首先,为“单一合并要素类型”亚搏在线选择工作流选项:
这将做的是添加一个单一的功能类型与合并过滤器自动设置:
妹妹直观的说…… |
这是一个巨大的捷径。它添加了一个单一的功能类型,并设置了一个合并过滤器来读取所有数据。在这个场景中,与每个文件都有自己的特性类型相比,它使工作区更加整洁和易于使用。 当然,这只适用于所有源文件都具有相同的属性模式(比如这里),并且我们确定要读取所有的源层(我们这样做了)的情况。 |
3)添加读者
现在让我们添加开发人员的数据。再次从菜单栏中选择“读卡器>添加读卡器”。
读者的格式 | ESRI形状文件 |
读者数据集 | C: \ FMEData2016 \ \包裹\ NewDevelopment.zip数据 |
因为数据是以zip文件发送的,我们仍然可以读到,但是当我们浏览数据时,我们需要更改过滤器以查找zip文件:
我们应该做的另一件事是将工作流选项设置回单个功能类型,亚搏在线以防里面有轮廓线以外的数据。
现在单击OK。当提示您从zip文件中选择所需的功能类型时,仅选择新加入者。
4)添加ChangeDetector
变化检测器变压器将告诉我们在这个数据集中哪些轮廓是新的,更换,和之前一样。所以,放置一个变化探测器变压器,并连接它。原始等值线应连接到原始端口(!),修改后的等值线连接到修改后的端口。
你可以检查参数,但没有人需要改变。我们可以检入2D,因为轮廓线是2D的,带有高程属性。
5)增加检验人员
将检查器转换器添加到变更检测器的输出端口,并运行工作区,以查看到目前为止我们得到了什么。
提示 |
可能会出现意外的输入移除器,但你知道这不是问题正确的?我们故意选择不从源数据中读取buildingfootprint或标签。 |
你会发现3967条等高线没有变化;即。它们在原始数据和新版本中。增加了7条等高线;即。它们出现在新的数据中,而不是原始版本中。删除了三(3)个轮廓;即。它们出现在原始数据中,但不出现在新数据中。
我们将要从未更改和添加的特征生成新的立面模型;删除的我们可以删除。但首先,还有一个更紧迫的问题……
6)导入特征类型定义
您是否注意到添加的轮廓线没有设置高程值?这是一个问题,因为我们不能生成一个适当的三维模型没有海拔!必须是源数据中的标签用于表示轮廓高程(可以使用数据检查器打开数据并确认这一点)。
因此,我们需要将这些数据添加到工作区中。我们已经有了一个阅读器,所以您只需要添加特性类型。
因此,选择读卡器>导入功能类型并选择要导入到的新开发读卡器。这一次,当列表出现时,请务必选择标签的功能类型:
单击OK,现在应该得到一个新特性类型。因为我们从一个zip文件中读取,我们甚至不需要更改dataset参数;FME无论如何都会收集数据。
7)添加邻居查找工具
邻域查找变压器将标签值转移到最近的轮廓上。所以,添加一个睦邻查找变压器,并连接它。变更检测器:添加的功能是基础,标签是候选:
打开参数对话框并设置最大距离参数。这定义了从轮廓到标签的最大距离。因为标签看起来几乎在轮廓的顶部你可以把这个设置为一个小数值,例如5。
现在添加更多的检查器并重新运行工作区,以确保所有七个轮廓特征现在都有一个高程值。
8)增加3dforcer
有一个仰角属性很好,但要实际创建一个三维模型,我们必须将其转换为真正的z值。这是用3DForcer变压器完成的,所以放其中一个。ChangeDetector: changed和NeighborFinder:Matched是我们需要处理的特性。
.1更新 |
上面截图中的3DForcer变压器获得了a
|
现在打开parameters对话框。海拔高度,单击下拉箭头并选择属性值> Elevation。
再次运行工作区,你会看到轮廓现在有一个Z值和数据检查报告,他们是真正的3D功能:
9)添加SurfaceModeler
现在我们有了三维轮廓,我们可以创建一个表面模型。添加一个连接到3dforcer输出的SurfaceModeller变压器。要连接的输入端口是点/线。
打开parameters对话框。设置表面公差为1,并关闭输出轮廓的复选框(没有它会运行得更快)。如果现在将检查器连接到tinsurface输出端口并运行工作区,您将能够以3D方式查看数据。
提示 |
要在FME数据检查器中以3D方式旋转数据,点击工具栏上的轨道图标,如果有的话,也可以按下鼠标中间的按钮。 |
10)放大比例(可选)
如果温哥华看起来有点平,那为什么不把Z调大一点来补偿呢?
在3DForcer之前添加一个ExpressionEvaluator,并用它将仰角值乘以4。您将要使用to选项将结果应用于现有属性:
现在温哥华将有一个更有趣的简介:
11)添加编写器
现在,让我们来编写这个数据。选择authors > Add Writer并添加一个具有以下规范的Writer:
写入程序格式 | Adobe三维PDF |
作家数据集 | C:\fmedata2016\output\training\surfacemodel.pdf文件 |
确保您选择了PDF编写器的3D(而不是2D)版本。您可以选择以任何您想要的方式为输出添加新特性类型。最好的方法是从Add Writer对话框中选择手动或自动。给特征类型起一个名字,例如Surface,并将其连接到SurfaceModeller:TINSurface端口。
在编写器参数(导航器窗口)中,找到背景颜色参数并将其更改为黑色(0,0,0)。找到页面大小参数并将其更改为600 400:
现在运行翻译。找到输出数据——大约需要一分钟的时间来写——然后在AdobeReader中打开它。
高级健身 |
现在,您已经使用阅读器和编写器(以及转换器)来更新仰角模型并创建它的3D呈现。但我们能做的还有很多。 作为一个高级任务,让我们把光栅图像悬垂到表面模型,使它看起来更漂亮。 |
12)添加读者
添加一个读取器来读取光栅数据。细节是:
读者的格式 | 联合摄影专家组 |
读者数据集 | C: \ FMEData2016 \ \ OverlayImage.jpg资源 |
13)添加AppearanceSetter
现在添加一个外观排字机变压器。这是用来应用光栅作为一个“外观”或纹理到DEM表面。栅格数据为外观,TINSurface端口为几何形状:
打开parameters对话框。将“Set Appearance On”更改为正面。
展开切片纹理坐标生成参数,从俯视图设置“纹理映射类型”:
运行工作区(如果PDF在adobereader中打开,请确保首先关闭它)。这一次,PDF输出应该有一个光栅图像覆盖在它上面。
警告 |
默认情况下,PDF输出的大小将接近100mb。如果这个太大,你的电脑无法处理,在jpeg功能类型之前添加一个rasterresampler转换器,并将参数设置为重新采样为原始的25%。 PDF现在只有8mb大小,但质量会,当然,是少得多。 |
14)覆盖建筑占地面积
在之前的输出中,你有没有在将要开发新特性的地方发现表面的肿块?我们能做的最后一件事是添加建筑轮廓,这样我们就能看到它的走向。
由于工作区中没有构建数据,所以第一个任务是使用导入特性类型将其添加回NewDevelopment Shapefile阅读器。
将其连接到SurfaceModeller:DrapeFeatures输入端口(即我们想把建筑挂在正在生成的3D表面上)。
添加挤出机变压器,连接到surface emodeller:DrapedFeatures输出端口。
将挤出机参数设置为挤出数据的高度为25。这将建造一座25米高的建筑。
现在添加一个新的Writer特性类型,为建筑物创建一个新的输出层。将其连接到挤出机变压器,您将有一个如下所示的工作区:
运行工作区,现在输出将如下所示:
哇!即使考虑到DEM上4倍的尺度增长,这座建筑在温哥华的天际线上非常显眼!
祝贺你 |
通过完成这个练习,你证明了你知道如何:
|