构建 terrain 数据集的最佳做法
下面是构建 terrain 数据集时要牢记的一些原则:
- 如果可以为激光雷达选择 ASCII 和 LAS 格式的数据,则应选择 LAS 作为数据传递格式。LAS 文件的文件头可以记录有关数据的更多信息,并且由于这种文件是二进制格式的,所以读取效率更高。
- 数据应在投影坐标系中。不推荐使用未知坐标系。不支持地理坐标(如十进制度数)。
- 使用 terrain 数据集时,最好使 z 值与 x-y 值具有相同的测量单位,这样操作会更加简单。
- 所采用的数据应该是连续的。采样可以是不连续的(例如构建地形模型时在水体或被遮挡区域上方进行采样),但集合应该构成一个逻辑整体。不同集合最好表示为单独的 terrain 数据集。例如,可以使用两个相邻县的测量值构建 terrain 数据集。但不能使用分别处于某一州两端的两个县的测量值来构建 terrain 数据集。
- 最好使用基于相同数据采集规范和精度要求而收集的数据来构建 terrain 数据集。如果数据能够保持一致,terrain 数据集的性能和金字塔精度也就会具有一致性。
- 禁止对详细程度较低的金字塔等级中的断裂线进行强化。这将改善比例尺较小时的显示性能。即使断裂线不会进行严格强化,但其折点仍将用于构成 terrain 数据集。可能的例外情况是用于描绘水体要素的断裂线,因为在更小的比例尺下需要明确显示这些要素。
- 尽量避免使用基于多边形的 SFType 添加多边形,因为它们的强化开销要高于断裂线。通常,可将其作为线要素添加。例如,可以将湖边界添加为硬断线,而不是硬替代多边形。仅当多边形内部存在需要覆盖的其他测量时,才需要使用替换多边形。
- 使用 terrain 数据集组来提高较小比例尺下的性能。示例包括细节裁剪/泛化裁剪和人行道的道路中心线与边(两侧)。
- 使用尽可能少的要素类。这样可以改善构建性能,并且在包含断裂线时,可以加快系统运行时 terrain 数据集的使用速度。适当合并要素类。
- 在使用数据构建 terrain 数据集之前,数据应该整洁且没有粗差点。terrain 数据集无法处理原始数据。
- 构建 terrain 数据集之前,检查所有参与要素类的范围。确保它们处于预期范围内。粗差数据点(异常点)属于异常情况,会对 terrain 数据集构建过程造成严重破坏。
- 将数据导入研究区域前,设置地理处理分析范围。此范围之外的点将被排除。这能防止粗差点进入数据库。
- 不要使用过大的单点要素类。对于较大的点集合(超过 500,000 个点),应使用多点要素类。多点应按空间进行聚类。如果折点没有给出点 ID,则每个形状的大小限制应为 5,000 个点,否则每个形状应限制为 3,000 个点。
- 不要使用裁剪多边形作为提取/处理 terrain 数据集子集的手段。所有数据最终都将构成三角形/金字塔,因此裁剪多边形不适用于此任务。相反,应将子集提取到单独要素类并使用它们来定义 terrain 数据集。
- 确保构成 terrain 数据集的要素类具有正确的范围。如果从要素类中删除了要素,则其范围可能过时且不正确。由于资源消耗原因,删除要素后地理数据库不会自动重新计算范围。创建 terrain 数据集前使用 IFeatureClassManage.UpdateExtent 纠正这种情况,否则 terrain 数据集将定义不正确的切片系统并尝试为没有数据的区域构建大量切片。
- 如果使用包含不同分辨率和/或密度的数据,则在定义所含点数超过 200,000 的 terrain 数据集时应根据包含最小分辨率的数据来指定点间距。从数据分析角度来看,数据不应包含不同的分辨率。
7/10/2012