有关表面的基础知识
3D 表面模型是三维空间中要素(真实或假想)的一种数字表达形式。3D 表面的几个简单示例包括地表、城市走廊、地下天然气矿床以及用于测定地下水位深度的深井组成的网络。这些均属于真实要素的示例,但表面也可以是派生的或假想的。某种特定细菌在每个井中的污染程度就是派生表面的一个示例。这些污染程度级别也可以绘制成 3D 表面地图。而假想 3D 表面通常在视频游戏或计算机模拟环境中可以见到。
通常可以使用专门设计的算法来获取或计算 3D 表面,这些算法对点、线或面数据进行采样然后将其转换为数字 3D 表面。ArcGIS 可以创建和存储三种类型的表面模型:栅格、TIN 和 terrain 数据集。
下方并排展示了栅格、不规则三角网 (TIN) 和 terrain 表面的示例。
这三类表面模型可通过多种数据源创建。创建表面模型的两种主要方法为插值法和三角测量法。插值的方法有很多种,例如反距离加权法、样条函数法、克里金法和自然邻域法。通过创建 TIN 或向现有 TIN 中添加元素,都可以构建三角化网格面。还可以在 terrain 数据集、TIN 和栅格表面这三种模型之间相互转换。
栅格、TIN 和 terrain 表面都属于表面函数类型。表面函数是一组连续的字段值,在无数多个点处的值各不相同。例如,地球表面某一区域内的各点可能在高程值、与要素的接近度或某特定化学物质的浓度等方面存在差异。这些值中的任意一个都可以在 x,y,z 三维坐标系的 z 轴上表示,因此它们通常称为 z 值。
表面模型可用于在 GIS 中存储表面信息。由于表面中包含无数个点,因此不可能测量并记录每一个点的 z 值。但是,通过对表面上不同点处的值进行采样并在这些点之间进行插值,表面模型便可以近似地看作表面。
下方图解显示了某区域范围内化学物质浓度的表面模型。其中的点表示浓度的采样地点。
栅格表面
GIS 数据一般可分为两种主要的类型:栅格数据和矢量数据。矢量数据由弧、结点、线以及它们之间用以组成地理空间数据的关联关系来定义。真实要素和真实表面可以表示为存储在 GIS 中的矢量数据。栅格数据则是栅格单元的矩形矩阵,以行和列的形式表示。每个栅格单元均表示地球表面上一块经过定义的方形区域,其值在整个栅格单元范围内始终保持不变。表面可以通过栅格数据呈现,数据中的每个栅格单元均表示实际信息的某个值。该值可以为高程数据、污染程度、地下水位高度等。
栅格数据还可以被细分成多个类别,例如专题数据、图片数据或连续数据。通过栅格数据呈现的表面就是一种连续数据的形式。连续数据也指字段数据、非离散数据或表面数据。通过连续表面可以表示这样的现象:表面上的每个位置都可以用来衡量浓度级别,还可以用来衡量某点与空间中固定点或与发射源之间的关系。
高程模型就是这种栅格表面模型的示例之一。固定点可能是通过摄影测量方法得出的高程点,而在这些高程点之间插值将有助于构建数字高程模型 (DEM)。由于栅格表面通常以栅格单元之间间隔均匀的格网格式存储,因此,栅格单元越小,格网的位置精度就越高。下例对较高精度格网(左图)与较低精度格网(右图)进行了比较。
各要素(例如,山顶)的位置是否精确与格网单元的大小直接相关。在以上示例中,一种非常粗糙的高程表面数据被描绘为二维平面视图中的表面模型。还可以在 3D 透视图中通过其他图片源生成栅格表面并建立表面模型,例如,这个带有山体阴影的高分辨率 DEM(如下图所示)。
栅格表面是一组连续的字段值,在无数多个点处的值各不相同。例如,某一区域内的各点可能在高程值、与要素的接近度或某特定化学物质的浓度等方面存在差异。这些值中的任意一个都可以在 x,y,z 三维坐标系的 z 轴上表示,这样便可以生成连续的 3D 表面。
栅格表面数据将表面表示为由大小相同的栅格单元组成的格网,而各栅格单元的属性值则表示 z 值和 x,y 位置坐标。
使用 ArcGIS 3D 分析进行处理时,很可能会占用或创建许多栅格数据集。在处理栅格时,理解栅格数据集在 3D 分析中的表示方法至关重要。
TIN 表面
不规则三角网 (TIN) 以数字方式来表示表面形态,GIS 社区多年来一直采用此方法。TIN 是基于矢量的数字地理数据的一种形式,通过将一系列折点(点)组成三角形来构建。通过由一系列边连接各个折点,形成三角网。可通过多种不同的插值方法形成这些三角形,例如 Delaunay 三角测量法或距离排序法。ArcGIS 支持 Delaunay 三角测量方法。
生成的三角测量满足 Delaunay 三角形准则,这确保没有任何折点位于网络中三角形的任何外接圆内部。如果 TIN 上的任何位置都符合 Delaunay 准则,则所有三角形的最小内角都将被最大化。这样会尽可能避免形成细长的三角形。
TIN 的各边形成不叠置的连续三角面,可用于捕获在表面中发挥重要作用的线状要素(如山脊线或河道)的位置。在以下两幅图中,左图显示了 TIN 的结点和边,右图显示了 TIN 的结点、边和面。
由于结点可以不规则地位于表面上,因此,在表面变化程度较大或需要更多细节的区域,TIN 可具有较高的分辨率,而在表面变化程度较小的区域,可具有较低的分辨率。
用于创建 TIN 的输入要素与结点或边在 TIN 中位于同一位置。这样,TIN 便能够在对已知点之间的值进行建模的同时保留输入数据的所有精度。可以在表面上包括精确定位的要素(如山峰、道路及河流),方法是将其用作 TIN 结点的输入要素。
TIN 模型的可用范围不及栅格表面模型那么广泛,且构建和处理也更耗时。获得优良源数据的成本可能会很高,并且,由于数据结构非常复杂,处理 TIN 的效率要比处理栅格数据低。
TIN 通常用于较小区域的高精度建模(如在工程应用中),此时 TIN 非常有用,因为它们允许计算平面面积、表面积和体积。
Terrain 表面
如果 ArcGIS 9.2 中附有 terrain 数据集,则在 ArcGIS 中将高程数据表示为表面将变得极为容易。遥感高程数据(如激光雷达和声纳点的测量值)在数量上可达数十万甚至上百万之多。因此,如今的大多数硬件和软件在对这种类型的数据进行管理和建模时仍显笨重。Terrain 数据集允许生成一系列规则和条件,根据此类规则和条件将源数据的索引编成一组动态生成的有序 TIN 金字塔。
Terrain 数据集是管理地理数据库中基于点的大量数据并动态生成高质量精确表面的有效方法。激光雷达、声纳和高程的测量值在点的数量上可达几十万甚至数十亿之多。在很多情况下,不允许对此类数据进行组织、分类以及根据此类数据生成 3D 产品,而即使允许,要执行这些操作也会相当困难。Terrain 数据集可用于克服这些数据管理难题,它能够对源数据进行编辑,并且在不同的分辨率下均可生成具有高精度的 TIN。
渲染非常大的 TIN 通常比较困难,这部分归因于硬件(如显卡)的限制。然而,在渲染需要以最佳分辨率显示的区域时,terrain 是很好的选择。因此,如果在 ArcGlobe 或 ArcMap 中有一个小比例区域,则 terrain 将会利用较少的结点在屏幕上生成渲染的 TIN。不过,如果以大比例放大某个区域,将使用全分辨率(利用该区域的所有结点)动态生成 TIN。其明显的优势在于,只有一小部分研究区域使用大量结点来渲染,或者,使用结点的子采样集合动态生成低分辨率的 TIN。
下图显示了这种情况的示例:
Terrain 位于个人地理数据库、文件地理数据库或 ArcSDE 地理数据库中要素数据集的内部。而要素数据集中的其他要素类可以参与 terrain 中或者真正地嵌入到 terrain 中,这样一来,创建完 terrain 数据集后,源数据在离线状态下也可以被移动。下图说明了多种类型的要素类如何参与生成 TIN 金字塔:
Terrain 数据集既可以嵌入源数据也可以引用源数据,这是它独有的特点。通过每点测量数据的索引可生成一系列 TIN 金字塔,各组的参与结点(源点)顺次减少。这使得 ArcMap 和 ArcGlobe 能以查看者所需的任何分辨率动态生成 TIN。在小比例下显示数据需要的点较少,因此渲染后获得的 TIN 分辨率较低。随着查看器放大显示画面,数据集中包含的区域越来越小,但分辨率越来越高。点的密度将增大,但不会对性能产生影响,因为只对显示的区域渲染高分辨率表面。
在任何许可级别均可读取和查看 Terrain 数据集:ArcView、ArcEditor 和 ArcInfo。Terrain 可以用 ArcEditor 和 ArcInfo 的 ArcGIS 3D 分析扩展模块创建。ArcScene 不支持 terrain 数据集。
要查看有关 terrain 的更多信息,请访问 terrain 数据集帮助中的以下页面: