DEM
重采样(Resample)
可生成与原始格网不同空间分辨率的格网DEM
,产生的结果运用在匹配遥感图象分辨率以生成三维地形场景,及建立细节层次模型(LOD
)等方面。在重采样的过程中,插值计算的方法有最近邻域、距离反转加权、双线性、B
样条曲线和双三次样条曲线(
Bicubic Spline Interpolation
)等。本文详细介绍最后一种方法。
1)
在用户设置新的分辨率(即基础单元格网大小发生变化)后,插值生成的结果格网与原始格网保持不变的是,最小和最大XYZ
轴数值,而单元大小变化导致格网的行数与列数重新计算。
2)
对结果格网初始化后,逐行列进行每个单元的循环,仅仅差每个单元位置处的Z
轴数值,此时以位置为参数(在两个格网之间是保持不变的),寻找原始格网此处的Z
轴数值,此刻可在原始格网此位置的邻域运用各种插值算法确定这个未知数值。
3)
接下来的工作,首先找到最接近此位置的单元格,然后确定此单元格邻域4X4
的范围内16
个元素的Z
轴数值,以此位置与单元格的距离差和16
个邻域数值为参数,采用双三次样条曲线插值方法计算未知数值。
double
CGV3dDEMGrid::
GetValAtPosBiCubicSpline(
double
dx,
double
dy,
double
z_xy[4][4])
{
double
a0,
a2,
a3,
b1,
b2,
b3,
c[4];
for(
int
i=0;
i<4;
i++)
{
a0 =
z_xy[0][
i] -
z_xy[1][
i];
a2 =
z_xy[2][
i] -
z_xy[1][
i];
a3 =
z_xy[3][
i] -
z_xy[1][
i];
b1 = -
a0 / 3.0 +
a2 -
a3 / 6.0;
//
求解系数
b2 =
a0 / 2.0 +
a2 / 2.0;