“ 今天小编根据上期给大家分析的附合水准路线内容增加一个距离观测量,根据前视和后视观测值计算高程时,利用距离的长短分配高差改正数。给大家写一个MATLAB小程序。”
01
—
例子
如下图所示,在水准点BM1至BM2间进行水准测量,试在水准测量记录表中,进行记录与计算,并做计算校核(按照距离长短分配误差)。BM1=138.952m,BM2=142.110m。
分析:根据题目要求和下图所示的测量内容,相比前期的附合水准路线计算,下图中既有前视和后视观测值,又有距离观测值,并且根据距离的长短分配高差改正值。
02
—
MATLAB程序编写
数据结构设计:
程序编写:
clear all
clc
load('ptTab','ptTab');
[r,c]=size(ptTab);
%判断出已知高程的点
jsq=0;
bz=0;
for i=1:r
if ptTab(i,4)~=0
ptTab(i,6)=0;%表示这个点是已知的
jsq=jsq+1;
Con_D(jsq,1)=ptTab(i,4);
end
if ptTab(i,4)==0
bz=bz+1;
ptTab(i,6)=bz;%表示这个点是未知的
end
end
%实际高差
deth=Con_D(2,1)-Con_D(1,1);
%计算出高差值
for i=1:r
ptTab(i,7)=ptTab(i,2)-ptTab(i,3);
end
%累计高差、距离
Sum_h=0;
Sum_s=0;
for i=1:(r-1)
Sum_h=Sum_h+ptTab(i,7);
Sum_s=Sum_s+ptTab(i,5);
end
Co_h=deth-Sum_h;
%按照符号相反、距离长短分配高差改正数
for i=1:(r-1)
ptTab(i,8)=ptTab(i,5)/Sum_s*Co_h;
ptTab(i,9)=ptTab(i,7)+ptTab(i,8);
end
%计算未知点高程
Con_D0=Con_D(1,1);
Sum_h0=0;
jsq=0;
for i=1:r
if ptTab(i,6)~=0
jsq=jsq+1;
Sum_h0=Sum_h0+ptTab(jsq,9);
ptTab(i,6)=Con_D0+Sum_h0;
end
end
msgbox '计算结束!'
计算结果:
大家学懂了吗?有兴趣的童靴们可以关注微信公众号:闲谈测绘。小编会每天给大家普及和介绍一些小知识、小程序和小软件。