地形模型匹配类。用于使 DEM 地形数据与三维模型贴合。

命名空间:  SuperMap.Realspace.SpatialAnalyst
程序集:  SuperMap.Realspace.SpatialAnalyst (in SuperMap.Realspace.SpatialAnalyst)
版本: dll

语法

C#
public static class GridMatchAnalyst

备注

  • 什么是地形模型匹配?

    将 DEM 栅格数据(地形数据)添加到三维场景中,地形就会显现出来。然后将模型叠加到地形上来就可以构建真实的三维场景。但是有时会出现这种问题:由于模型的底部是平整的,整体位于同一高程,而其所处地形却是有起伏的,就会造成模型和地形不能严丝合缝,很容易出现模型的一部分被埋或是漂浮于地形之上,使得三维效果不够理想和真实,如下图所示。

    尽管三维场景的贴地高度模式可以使地形与模型贴合,但是仍不能避免模型部分被掩埋的情形出现。而地形匹配就是用于解决这类问题,它通过将模型所覆盖的地形区域修改为一个平面,从而使模型底部能够与地面贴合。下图是匹配后的地形与模型的叠加显示效果。

  • 如何匹配?

    使用 GridMatch 方法可以进行地形模型匹配处理。该方法通过对地形数据进行修改,包括填挖方和平滑过渡,来实现地形与模型贴合。该方法支持直接处理 CAD 模型数据,也支持面数据(将模型覆盖范围绘制为矢量面),并支持处理多个模型。地形模型匹配的处理的过程为:

    1. 首先,系统按照模型底部的高程值(关于模型底部高程的确定,请参见 GridMatch 方法),对其所覆盖的地形区域进行填方或挖方,使该范围地形高程与模型底部高程一致,此时模型覆盖的地形区域成为了一个平面;

    2. 经过上一步后,模型边缘处地形可能出现突然上升或下降,因此需要对模型与地形的接合部分进行平滑过渡。如下图所示,图中蓝色平面示意模型的底部平面,该平面对应的地形区域的周围以 R 为缓冲区半径扩大出一个区域(图中绿色区域),这部分区域就是需要进行平滑过渡的区域。

    假设计算过渡区域中单元格 A 的高程值,单元格 B 为模型底部对应的地形的边界上距离单元格 A 最近的单元格,系统会依据以下公式计算单元格 A 平滑过渡处理后的高程值:

    上面的公式中,HA 为匹配后地形上过渡区域单元格 A 的高程值,hA 为匹配前地形上单元格 A 的高程值,HB 为模型底部高程值,hB 为匹配前地形上单元格 B 处的高程值,r 为 单元格 A 和 B 的平面最短直线距离,r‘ 为单元格 B 到过渡区域边界的平面最短直线距离。

    公式中的幂次 n 是影响过渡区域缓冲效果的关键,该计算公式主要利用了幂函数(X 的 n 次幂函数)在0到1范围内的曲线的特性,一般 n 的取值在(0,3]范围内时过渡效果较为理想。下图为 n 分别取值1/2、2、3时,幂函数在0到1范围内的曲线。

    使用该公式计算地形过渡区域的特点是既能够保持过渡区域的原始地貌特征,又能够进行一定程度的平滑,使模型与周边地形产生自然过渡的效果。下图展示了地形模型匹配前后地形上过渡区域的三维显示效果。

    3. 通过步骤2中的公式计算出过渡区域每个单元格的高程值后,就得到了完成匹配后的地形数据。

继承层次

System..::.Object
  SuperMap.Realspace.SpatialAnalyst..::.GridMatchAnalyst

版本信息

SuperMap iObjects .NET


SuperMap Objects .NET

受以下版本支持: 6.1.3

请参见