readlevelnetdata.m

来自「利用MATLAB实现了对测量中的平面网」· M 代码 · 共 57 行

M
57
字号
function [ed,dd,sd,gd,pn,h0,k1,k2,h1,s]=readlevelnetdata
global pathname net_name s_datafile b_datafile;
global ed dd sd pn gd h0 k1 k2 h1 s k11 k12;
k1=[];k2=[];h=[];s=[];
s_datafile='.txt'; b_datafile='_1.txt';
if(isempty(pathname)|isempty(net_name))
    [filename,pathname]=uigetfile('*.txt','Input filename');
	i=find('.'==filename);
	net_name=filename(1:i-1);
end
fid1=fopen(strcat(pathname,net_name,s_datafile),'rt');
if(fid1==-1)
    msgbox('Input File or Path is not correct','Warning','warn');
    return;
end                                                      %open a file to read
%open a file to read
ed=fscanf(fid1,'%f',1);     %已知点个数
dd=fscanf(fid1,'%f',1);     %未知点个数
sd=ed+dd;                   %总点数
gd=fscanf(fid1,'%f',1);     %观测值个数
pn=fscanf(fid1,'%f',sd);    %点号
%known data
h0=fscanf(fid1,'%f',ed);    %已知点高程
h0(dd+1:ed+dd)=h0(1:ed);
heightdiff=fscanf(fid1,'%f',[4,gd]);
heightdiff=heightdiff';
k1=heightdiff(:,1);         %起点
k2=heightdiff(:,2);         %终点
k11=heightdiff(:,1);         %起点
k12=heightdiff(:,2);         %终点
h1=heightdiff(:,3);         %高差
s=heightdiff(:,4);   %距离
fclose('all');
%点号转换
[k1,k01]=chkdat(sd,pn,k1);
[k2,k02]=chkdat(sd,pn,k2);
h0(1:dd)=20000.;
ie=0;
while(1)%计算近似高程
    for k=1:gd
		i=k1(k);
		j=k2(k);
		if(h0(i)<1e4&h0(j)>1e4)
			h0(j)=h0(i)+h1(k);
			ie=ie+1;
		end
		if(h0(i)>1e4&h0(j)<1e4)
			h0(i)=h0(j)-h1(k);
			ie=ie+1;
		end
    end
	if(ie==dd) 
        break;
    end
end
h0=reshape(h0,length(h0),1);
return

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?