gusucode.com > matlab程序语言实现的水准网平差程序,使用于测绘人员 > code1/maltab程序语言实现的水准网平差程序,使用于测绘人员/malab水准网平差/readlevel.m

    function [] = readlevel(infile)
%readleveldat: read leveling data
%INPUT:
%  infile: input file name
%          1st line:            nobsedge     nknownpoint 
%          2nd line:            start_ptid   end_ptid     height_diff    distance
%                                            ..................
%          2nd+nobsedge line:   point_id     point_height
%                                            ..................
%OUTPUT: None
%
%AUTHOR: Hua WANG
%DATE: 20/05/2009

%structures
pt = struct('id',{},'hgt',{},'flag',{});
edge = struct('sptid',{},'eptid',{},'diffhgt',{},'dist',{});

%open input file
fid=fopen(infile,'r');
if(fid==-1)
  error('Can not open input file!');
end

%read point/edge number
strline = fgetl(fid);
[nobsedge,nknownpt]=strread(strline,'%d %d');

%read edge data
for i=1:nobsedge
  strline = fgetl(fid);
  [edge(i).sptid,edge(i).eptid,edge(i).diffhgt,edge(i).dist]=strread(strline,'%s %s %f %f');
end

%get names for all points
list = sort([edge.sptid edge.eptid]);
npt = length(list);
ptlist(1) = list(1);
j=2;
for i=2:npt
  if strcmp(list(i),list(i-1))==0
    ptlist(j)=list(i);
    j=j+1;
  end
end

npt=length(ptlist);
for i=1:npt
  pt(i).id=ptlist(i);
  pt(i).hgt=0;
  pt(i).flag=1;
end

%read known point data
for i=1:nknownpt
  strline = fgetl(fid);
  [id,hgt]=strread(strline,'%s %f');
  j=find(strcmp(ptlist,id)==1);
  pt(j).hgt=hgt;
  pt(j).flag=0;
end

fclose(fid);

save pt
save edge
return