练习 8:创建和使用 terrain 数据集
terrain 数据集是一种多分辨率的基于 TIN 的表面数据结构,它通过存储在地理数据库的一个或多个要素类中的测量值获得。
在本练习中,您将使用地理处理工具执行以下操作:将表面数据加载到地理数据库、构造 terrain 数据集,以及在 ArcMap 和 ArcGlobe 内使用 terrain。
将表面要素数据加载到地理数据库
这种情况下,您会将激光雷达点和摄影测量隔断线存储在两个独立的 ASCII 文本文件中。该数据将用于构造 terrain 数据集。要构造 terrain 数据集,您需要将激光雷达点和摄影测量隔断线导入到要素数据集中的要素类内。会在源数据所在的位置生成 terrain。
已为您提供了带有要素数据集的文件地理数据库。它包含两个面要素类:一个用于湖泊,而另一个则用于描绘研究区域。初始步骤是将两个 ASCII 文件以要素类的形式导入到要素数据集中,其中一个要素类描绘摄影测量隔断线,而另一个要素类包含激光雷达点。
- 单击开始 > 所有程序 > ArcGIS > ArcCatalog 10 启动 ArcCatalog。
-
单击自定义 > 扩展模块。
将打开扩展模块 对话框。
- 在目录树中,导航到 Exercise8 文件夹,然后双击 terrain.gdb 打开地理数据库。
- 双击地形要素数据集。
- 在目录树中,通过展开工具箱 > 系统工具箱 > 3D Analyst 工具导航到 3D Analyst 工具箱。
- 展开转换工具集,然后展开由文件转出工具,再双击 3D ASCII 文件转要素类工具。
- 在 3D ASCII 文件转要素类工具中,请确保将浏览下拉列表设置为“文件”。
-
单击输入字段旁边的浏览
按钮,导航到 Exercise8 文件夹,然后选择 masspoints.xyz 文件作为输入。
- 确保输入文件格式设置为 XYZ。
-
单击输出要素类的浏览
按钮,然后导航到地形要素数据集。
- 如果尚未执行此操作,请将输出要素类类型设置为多点。
- 单击平均点间距文本框,然后将值设置为 10。
- 接受所有其他默认设置,然后单击确定执行地理处理工具。
- 双击 3D ASCII 文件转要素类打开地理处理工具。
- 确保将浏览下拉列表设置为“文件”。
-
单击浏览
按钮,然后选择 breaklines.lin 文件作为输入。
- 将输入文件格式设置为 GENERATE。
-
单击输出要素类的浏览
按钮,然后浏览到地形要素数据集。将输出要素类命名为 topo_break_lines。
- 将输出要素类类型设置为折线 (polyline)。
- 单击确定执行地理处理工具。
- 在目录树中单击选择 topo_break_lines 要素类。
- 单击预览选项卡查看隔断线数据。
- 确保预览类型设置为“地理”。预览结果应与上图中显示的隔断线数据类似。




接下来,您要将简单文本文件中 XYZ 格式的 ASCII 点转换为多点要素类。这些点只定义表面几何,且属性中只包含 x、y 和 z 值。多点要素类每行存储一个点,各坐标之间以空格分隔。由于没有与这些点相关联的属性,因此,为每个点指定一个数据库行会很浪费,且效率低下。但可以将它们合并为多点。对于多点,每个形状或行可以存储很多点,从而节省了存储空间并改进了读写性能。



现在,您已加载了将用于构建 terrain 数据集的离散多点和隔断线。激光雷达点为 XYZ 格式,而摄影测量线为 3-D GENERATE 格式。两者均为用于简单 3D 数据的 ASCII 格式,且可使用同一工具 3D ASCII 文件转要素类进行读取。

- 如果需要处理较大的激光雷达点集合,可考虑使用 LAS 格式而非 XYZ 格式。LAS 是激光雷达数据的行业标准格式。因为它是二进制的,因此较为高效。它还可将与数据相关的更多信息存储在文件中。
- 有一个单独的工具(LAS 转多点)可用于导入 LAS 格式文件,该工具与 3D ASCII 文件转要素类工具位于同一工具集内。
使用要素构建 terrain 数据集
接下来,您将使用 ArcCatalog 中的新建 Terrain 向导定义和构建 terrain 数据集。
- 在 ArcCatalog 中,右键单击地形要素数据集,指向新建,然后从快捷菜单中选择 Terrain。
- 在新建 Terrain 对话框中,接受 terrain 数据集的默认名称。
- 单击全选选中要素数据集中的所有要素类。
- 将近似点间距设置为 10。
- 单击下一步。
- 单击高级按钮展开列的列表。
- 将要素类 topo_water_poly 的表面要素类型 (SFType) 设置为硬断线。
- 单击下一步确定 terrain 金字塔类型。




由于离散多点和隔断线具有 z 值(用于定义地形表面),所以它们的高度源被设置为 Shape。这意味着 z 来自形状几何。
要素类 topo_clip_poly 中包含 2D 多边形。它可定义表面的水平范围并最小化表面周长周围的插值伪影。
如果裁剪多边形小于将用于提供 z 值的数据范围,则使用裁剪多边形的效果最佳。水多边形由 2D 几何表示,但具有高度属性 SPOT。每个多边形都可具有其自身的高度,但该高度是恒定的。对于湖泊,由于它们是平坦的,所以高度就应该是恒定不变的。对于此数据,湖泊边界内部不会有与湖泊 SPOT 值相矛盾的测量值,因此您可以将边界作为隔断线进行添加;否则,它们将作为替换多边形进行添加以确保其区域平坦。
除了隔断线,所有项目都用于 terrain 的概貌表示。概貌是 terrain 的概化表示,类似于基于矢量的缩略图。隔断线对于概貌来说过于详细,但需要使用所有其他信息来生成合理的概貌外观。
定义 terrain 数据集的金字塔
Terrain 金字塔用于创建多分辨率表面。它们在概念上类似于栅格金字塔(即,粗糙的金字塔用于以较小比例进行显示以提高显示性能),但也有差别。最显著的差别是 terrain 金字塔由基于矢量的测量值组成并且可用于分析和显示。
可使用两种类型的金字塔构建地形数据集:z 容差和窗口大小。
Z 容差金字塔化会对点进行细化,以使生成的表面在相对于全分辨率数据的近似垂直精度之内。
窗口大小金字塔类型通过将数据划分为相等的区域(窗口),而每个区域只选择一两个点作为代表,来抽稀每个金字塔等级的点。选择是基于以下条件之一进行的:最小值、最大值、平均值或最小和最大 z 值。
- 单击 Z 容差金字塔类型旁边的单选按钮。
- 单击下一步定义 terrain 金字塔等级。
- 单击四次添加。这样会对表进行填充来自定义属性。
- 通过单击每列内的值手动重置 Z 容差和最大比例值。使用下图中指定的值。
- 单击分辨率界限设置按钮打开金字塔分辨率界限对话框。
- 将要素类 topo_break_lines 的最大 Z 容差设置为 1。并接受所有其他选项的默认设置。
- 单击确定关闭金字塔分辨率界限 对话框。
- 单击下一步进入摘要面板。
- 单击完成。
- 现在系统会询问您是否要构建 terrain。单击是启动 terrain 构建过程。


通过这些设置,可在地图显示中使用比例可高达 1:2,500 的全分辨率数据。在显示比例 1:2,500 和 1:10,000 之间,只会使用需要满足近似垂直容差 1.0(相对于全分辨率数据)的数据。在 1:10,000 和 1:25,000 之间,会使用容差 2.5。在 1:25,000 和 1:50,000 之间,会使用容差 5。对于所有小于该值的比例,会使用容差 10。
用于定义 terrain 金字塔的容差和比例需要根据应用程序要求进行指定。一种方法是模拟等值线地图系列的精度要求。一个普遍接受的规则是:等值线应精确到它们间距的一半以内。例如,如果研究区域内的 1:24,000 比例地图使用 5 英尺的等值线间距,则垂直精度应为 2.5 个单位 RMSE。使金字塔基于适合 terrain 地图系列的比例和等值线间距。
当在所有金字塔等级中根据需要使用隔断线折点时,可将实际的线强化限定在这些等级的子集中。例如,在比例小于 1:24,000 的情况下不需要在 terrain 中将道路的路边强化为三角形边。可通过“金字塔界限”对话来框控制强化。




在 ArcMap 中查看 terrain
由于已创建了 terrain 数据集,因此,可在 ArcMap 中将其作为图层进行添加,以便进行进一步的可视化和分析。您可以在内容列表中打开和关闭其显示。此外,还可通过图层属性 对话框来控制显示参数。图层属性的符号系统选项卡与 TIN 图层相同。
-
从 ArcCatalog 中,单击标准 工具条上的启动 ArcMap
按钮启动应用程序。
-
在 ArcMap - 启动 对话框中,单击浏览
,然后将默认地理数据库路径设置为 D:\3DAnalyst\3D_Default.gdb。
- 单击确定关闭启动 对话框。
- 单击目录选项卡打开目录 窗口,从 Exercise8 文件夹中导航到 topography_Terrain,将它拖到地图视图中,然后释放鼠标键。
-
放大
显示。
-
通过从工具 工具条中单击全图
按钮可缩放至图层的全图范围。
- 双击 terrain 图层打开图层属性 对话框,然后单击显示选项卡。
- 将点限制从 800000 更改为 125000,然后单击确定关闭图层属性 对话框。
- 从地图显示中进行缩放,然后进行平移。





在 ArcMap 中使用交互式表面分析工具
现在,您将使用 3D 交互式工具来完成一些表面分析。
- 确保通过先单击自定义然后单击扩展模块在 ArcMap 中启用 3D Analyst 扩展模块。
- 单击自定义和工具条,添加 3D Analyst 工具条(如果尚未显示)。terrain 将出现在工具条的图层列表中。
- 双击 terrain 图层打开图层属性 对话框,然后单击分析选项卡。
- 从下拉菜单中将 3D Analyst 工具的分辨率阈值设置为 1.000000。
- 单击确定。
-
放大
terrain 直到显示比例大于 1:10,000。
-
单击创建通视线
按钮。
- 将观察点偏移设置为 5,并将目标偏移设置为 2。
- 单击 terrain 的左上部分(观察点)中山脉的南坡,向右下部分拖出一条线,然后释放鼠标键(目标点)。
- 单击右上角的 x 关闭通视线 对话框,然后按 DEL 键从视图中删除图形。
-
单击线插值
按钮。
- 数字化视图中心左侧的第一个点,向右上角拖出一条线创建第二个点,然后向右下角进行拖动。双击创建最后一个点,然后停止数字化。
-
单击剖面图工具
按钮绘制 3D 线。
- 单击右上角的 x 关闭剖面图标题 对话框,然后按 DEL 键从视图中删除图形。

如果放大程度不足,工具条上的工具将不可用。默认情况下,只有在全分辨率下显示 terrain 时它们才可用。根据 terrain 金字塔的定义方式,当显示比例为 1:2,500 或更大时会发生这种情况。
您可通过 terrain 的图层属性 对话框中的分析选项卡在较低分辨率下启用这些工具。在低于全分辨率的 LOD 下启用这些工具时,精度也会降低。交互式工具始终在当前显示分辨率下运行。如果针对分析要求对全分辨率 terrain 进行了过采样,这将十分有用。







使用地理处理工具栅格化 terrain
可基于任意范围、单元大小和垂直容差栅格化 Terrain 数据集。可在线性插值器和自然邻域插值器两者之间进行选择。自然邻域插值方法产生的结果通常质量较高,但处理时间会较长。将通过 Terrain 转栅格地理处理工具进行栅格化。
- 从目录 窗口中,展开工具箱,单击系统工具箱,然后单击 3D Analyst 工具工具箱。
- 导航到转换工具集的由 Terrain 转出工具,然后双击 Terrain 转栅格地理处理工具。
- 在输入 Terrain 下拉列表中选择 topography_Terrain。
- 依照下图设置其他值。
- 单击确定执行地理处理工具
-
当地理处理工具已完成执行并要查看结果时,单击全图
。关闭 topography_Terrain 图层。



使用地理处理工具生成山体阴影
要查看获得的栅格表面形态,可生成山体阴影图像。进行分析或图形显示时,特别是使用透明度设置时,表面的山体阴影表示可大大增强表面的可视化。
- 从目录 窗口中,展开工具箱,单击系统工具箱,然后单击 3D Analyst 工具工具箱。
- 导航到栅格表面工具集,然后双击山体阴影工具。
- 在输入栅格下拉列表中选择 terrain_grd。
- 确认其他所有值均与下图中的设定值一致。
- 单击确定执行该工具,然后检查得到的山体阴影图层。



在 ArcGlobe 中将 terrain 用作高程图层
Terrain 数据集可在 ArcGlobe 中用作高程图层或叠加图层,从而参与地球表面的定义。
-
从 ArcMap 中,单击 3D Analyst 工具条上的启动 ArcGlobe
按钮启动应用程序。
- 在 ArcGlobe - 启动 窗口中,确保默认地理数据库路径设置为 D:\3DAnalyst\3D_Default.gdb。
- 单击确定关闭启动 对话框。
- 关闭 ArcMap。本练习的其余部分将不再需要它。
- 从目录 窗口中,导航到 Exercise8 文件夹中的 topography_Terrain,将它拖到 ArcGlobe 的 3D 视图中,然后释放指针。
- 如果出现提示,请关闭地理坐标系警告 消息框。
- 从目录 窗口中,导航到 3D_Default.gdb,然后单击该地理数据库。
- 在目录树视图下面的面板中,通过按住 SHIFT 键选择地理数据库的内容。HillSha_terr1 和 terrain_grd 已被选中。
- 将这两个所选图层拖到 ArcGlobe 的 3D 视图中,然后释放指针。
- 将弹出 terrain_grd 的添加数据向导 对话框。单击完成,使用栅格化 terrain 作为图像源。
- 可能会出现一个要求构建栅格金字塔的对话框。单击是。
- 将弹出 HillSha_terr1 的添加数据向导 对话框。单击完成,使用山体阴影栅格作为图像源。
- 单击并拖动影像图层,直到山体阴影后面出现一条指示新位置的黑线。一旦出现此线,请立即释放鼠标。
- 右键单击栅格化 terrain,然后单击属性。
- 单击符号系统选项卡。
- 单击显示选项卡。
- 将透明度设置为 50%。
- 单击确定关闭图层属性对话框。
- 放大至栅格化 terrain 并进行漫游。












优化 ArcGlobe 中的显示设置
要获得高质量的显示,可以执行以下几项操作。转到 terrain 的图层属性 对话框的缓存选项卡,取消选中用于压缩到 16 位的选项。这样可使表面几何在放大到很近时避免呈现阶梯形状。

还可以将两个叠加图层均设置为使用双线性渲染器。这样绘制出的图片将更平滑。同时,山体阴影栅格不应使用任何拉伸。使用标准差的默认设置不适用于此数据。

作为查看从 terrain 数据集得到的叠加栅格的替代方法,您也可以直接以叠加图层的形式添加 terrain。
要执行此操作,从内容列表中右键单击 Globe 图层,指向添加数据,单击添加叠加数据,然后选择 terrain。

在本练习中,为您介绍了 terrain 数据集概念。并使用地理处理工具将激光雷达点和摄影测量隔断线加载到了要素数据集内的要素类中。然后,通过要素数据集中的表面数据,使用 ArcCatalog 中的 terrain 向导构造了 terrain 数据集。最后对 ArcMap 和 ArcGlobe 内的 terrain 表面执行了一些分析。