http://www.gissky.net- GIS空间站

我要投稿 投稿指南 RSS订阅 网站资讯通告:
搜索: 您现在的位置: GIS空间站 >> 技术专栏 >> 地理信息 >> 正文

DEM重采样中双三次样条曲线插值方法的应用

作者:武汉侯涛    文章来源:http://www.cnblogs.com/wuhanhoutao/    点击数:    更新时间:2008-3-21
摘要:DEM重采样(Resample)可生成与原始格网不同空间分辨率的格网DEM,产生的结果运用在匹配遥感图象分辨率以生成三维地形场景,及建立细节层次模型(LOD)等方面。在重采样的过程中,插值计算的方法有最近邻域、距离反转加权、双线性、B样条曲线和双三次样条曲线(Bicubic Spline Interpolation)等。本文详细介绍最后一种方法。
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;

        b3      = -a0 / 6.0 - a2 / 2.0 + a3 / 6.0;

        c[i]    = z_xy[1][i] + b1 * dx + b2 * dx*dx + b3 * dx*dx*dx//记录系数

    }

    a0      = c[0] - c[1];

    a2      = c[2] - c[1];

    a3      = c[3] - c[1];

    b1      = -a0 / 3.0 + a2       - a3 / 6.0;                //求解系数

    b2      = a0 / 2.0 + a2 / 2.0;

    b3      = -a0 / 6.0 - a2 / 2.0 + a3 / 6.0;

    return( c[1] + b1 * dy + b2 * dy*dy + b3 * dy*dy*dy );

}

附图:
图1  10米分辨率重采样结果图


图2 原始数据显示图(5米分辨率)


图3  2.5米分辨率重采样结果图

Tags:DEM,插值  
责任编辑:gissky
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 中国地图