一、等高线原始数据存储分析
1、等高线数据以shape格式存储,包括等高线和高程点两个文件。
2、在等高线文件中,等高线以polyline格式存储,高程点以point格式存储。
3、其中存储的polyline包括首尾重合和首尾不重合两种类型。
4、首尾重合的polyline记录了封闭的等高线。
5、首尾不重合的polyline记录了被边界裁剪后的等高线,同一等高线可能被分为多段。且存储不具有连续性。
小结:
由于无边界数据,故难以通过现有数据复原不封闭的等高线。从而采用根据等高线上的已知数据计算网格点上未知数据的方法方法生成DEM数据。
二、基于等高线的三维地形造型方法
目前基于等高线的三维地形造型方法主要包括如下三种模型:
1、均匀网格模型
实现方法:数据由一系列等间隔的等高线高程值表示,代表一块方形网格地形;网格交叉点的高程值由相邻等高线的高程值插值得到。
优点:易于生成具有多分辨率的层次细节模型,易于实现地表特征物与地形间的自适应匹配。
缺点:不能直接利用等高线的高度信息,对于地形平坦地区网格浪费,对于起伏较大的地区由于精度不够而丢失细节。
2、非均匀网格模型
实现方法:根据等高线上非均匀分布的采样点在地平面上的投影点所作的水平和垂直线来构成地平面的非均匀分割。
优点:充分利用了等高线上的高度信息,具有较高的精确性。
缺点:划分的网格数较多,实时性较差。
3、三角模型
实现方法:直接利用原始离散采样点表示地形,并将所有的采样点连成连续三角形,三角形形状和大小取决于采样点的位置和密度。
优点:数据冗余少,能够突出地形变化,绘制的三D立体地形图效果好。
缺点:数据结构复杂
小结:
综合对比上述三种方法,结合项目不同比例尺下显示不同精度的高程数据的需求,拟采用均匀网格模型。
三、插值算法
目前高程内存算法主要有:窗口拟合法、移动拟合法和线性插值法。
1、窗口拟合法
计算以待插入点为圆心,以 R 为半径的圆内诸点的加权平均值来确定高程值, 精度由已知点到内插点的距离来确定。
2、移动拟合法
移动拟合法是典型的逐点内插法, 该方法对每个待插入点用一个多项式曲面来拟合该点附近的地表面。
3、线性插值
线性插值可分为剖面内插和比例内插,剖面内插中每一个点的值由剖面上各等高线值内插得到;比例内插中每一个网格点的值由离该点最近的两条等高线的值内插得到。
小结:
综合对比上述三种算法,线形插值算法实现简单,且能够满足工程需要,故拟采用线形插值法。具体算法如下:
(1) 求取横向和纵向两个方向的插值,将二者的平均值作为该点高程值。
(2) 若待插入点恰好在等高线上,则直接赋值。否则通过插值得到。插值公式如下:
z = (z1 * d1 + z2 * d2) / (d1 + d2)
(3) 若待插入点两侧存在网格线与等高线的交点,且高度值不同,则进行内插(P1点)。
(4) 若待插入点两侧与等高线相交,且高度值相等,则求取外侧第二个交点,若存在第二个交点,高度值由距离较近的同侧的两个高度值外插得到(P2);若两侧均不存在第二个交点,则运用第一组交点进行插值(P4)。
(5) 若待插入点只有一侧与等高线相交(边界),则在存在交点一侧求取两个交点,高度值由同侧的两个高度值外插得到(P3)。若整条切割线上只存在一个交点,则整条切割线上的所有点均赋值为该等高线值(P5)。
(6) 若待插入点两侧均不与等高线相交,则本次不进行计算,在第二轮时运用周边计算完毕的点进行插值(P6)。
四、数据制作流程
在运用插值方法计算网格点的高程值时,受周边等高线的值和距离等高线的距离两个因素的影响。当对数据分割后进行计算时,可能导致不同分块边界上的同一个点计算出不同的高度值,故采用先制作网格数据,后进行BlockSet、Block、Parcel分割的策略。数据制作流程如下:
1、解析 shape 文件,以数组结构保存所有等高线。
2、采用线性插值算法制作高程网格数据。
3、分割制作完毕的高程网格数据。
对分割完毕的高程网格数据进行三角化。