DEM 内插法编程实验报告
测绘 08-1 班 3080208102 李 XX
一、实习目的
掌握移动曲面法数字高程模型内插原理及其内插子程序的设计方法,了解其它逐点高程
内插方法的基本原理。
二、实习内容
根据提供的 10 个数据点的坐标(Xn,Yn,Zn)和待求点的平面坐标(Xp,Yp),要求利
用移动二次曲面拟合法,由格网点 P(Xp,Yp)周围的 10 个已知点内插出待求格网点 P 的
高程,编制相应的程序并进行调试,最后解算出格网点 P 的高程并提交源程序代码。
三、实习准备资料
已知数据点坐标
点号
1
2
3
4
5
6
7
8
9
10
X
102
109
105
103
108
105
115
118
116
113
Y
110
113
115
103
105
108
104
108
113
118
编程计算点(110,110)上的高程。
四、程序的代码
#include "stdafx.h"
#include "SMatrix.h"
#include "SingleImageResection.h"
Z
15
18
19
17
21
15
20
15
17
22
int main(int argc, char* argv[])
{
SMatrix X(10,1); 系数矩阵
SMatrix Y(10,1); 系数矩阵
SMatrix Z(10,1); 系数矩阵
X[0][0] = 102;
X[1][0] = 109;
X[2][0] = 105;
X[3][0] = 103;
X[4][0] = 108;
X[5][0] = 105;
X[6][0] = 115;
X[7][0] = 118;
X[8][0] = 116;
X[9][0] = 113;
Y[0][0] = 110;
Y[1][0] = 113;
Y[2][0] = 115;
Y[3][0] = 103;
Y[4][0] = 105;
Y[5][0] = 108;
Y[6][0] = 104;
Y[7][0] = 108;
Y[8][0] = 113;
Y[9][0] = 118;
输入已知数据点坐标
输入已知数据点坐标
输入已知数据点坐标
输入已知数据点坐标
输入已知数据点坐标
输入已知数据点坐标
输入已知数据点坐标
输入已知数据点坐标
输入已知数据点坐标
输入已知数据点坐标
输入已知数据点坐标
输入已知数据点坐标
输入已知数据点坐标
输入已知数据点坐标
输入已知数据点坐标
输入已知数据点坐标
输入已知数据点坐标
输入已知数据点坐标
输入已知数据点坐标
输入已知数据点坐标
Z[0][0] = 15;
输入已知数据点坐标
Z[1][0] = 18;
Z[2][0] = 19;
Z[3][0] = 17;
Z[4][0] = 21;
Z[5][0] = 15;
Z[6][0] = 20;
Z[7][0] = 15;
Z[8][0] = 17;
Z[9][0] = 22;
输入已知数据点坐标
输入已知数据点坐标
输入已知数据点坐标
输入已知数据点坐标
输入已知数据点坐标
输入已知数据点坐标
输入已知数据点坐标
输入已知数据点坐标
输入已知数据点坐标
for(int i = 0 ;i <10;i++)
{
}
X[i][0] = X[i][0] -110;
Y[i][0] = Y[i][0] -110;
SMatrix M(10,6);
for(i = 0 ;i <10;i++)
{
}
M[i][0] =X[i][0] *X[i][0] ;
M[i][1] =X[i][0] *Y[i][0] ;
M[i][2] =Y[i][0] *Y[i][0] ;
M[i][3] =X[i][0];
M[i][4] =Y[i][0] ;
M[i][5] = 1 ;
SMatrix P(10,10);
for(i = 0 ;i <10;i++)
{
}
P[i][i] = 1/(X[i][0] *X[i][0]+Y[i][0] *Y[i][0]);
SMatrix
x(6,1);
x = (M.T() * P * M).Invert() * M.T() * P * Z;
printf("待定点的高程是:%f\n",x[5][0]);
return 0;
}
运行结果截图
五、操作步骤
1、首先要导入三个程序矩阵模块"stdafx.h"
"SMatrix.h"
"SingleImageResection.h"
2、输入已知点数据的坐标
3、选择二次曲面作为拟合曲面:
Z
2
Ax
Bxy
Cy
2
Dx
Ey
F
列出误差方程:
v
i
ZFEYDXCYBYXAX
i
i
2
i
2
i
i
i
PMMX
(
T
1)
T
PZM
4、组方程,求出 6 个系数:
5、计算出待求点高程。
六、实验小结
本次是实验是运用 C++进行 DEM 内插法的编程,了解 DEM 内插法的特点,实验过程
中,由于以前没有接触过 C++编程,所以运用起来比较困难,但其编写有一定的规律特点,
加上以前学习过VB编程,所以仔细研究后还是能了解其代码的含义,程序编写过程中还要
不断地调试。在编程过程中要有耐心、细心,发现错误要细心检查改正,最后得出想要的结
果。通过这次编程学习,主要培养的发现问题、思考问题和解决问题的能力,还要不断地学
习来完善自己。