% 实验3
% 读取数据
[filename1,p1]=uigetfile('*.txt', '选择尼康全站仪坐标文件名');
fp=fopen(strcat(p1,filename1),'r');
i=1;bss=[];
while ~feof(fp)
    line=fgetl(fp);
    data=findstr(line,',');
    bss(i).dh=line(1:data(1)-1); 
    bss(i).x=str2num(line(data(1)+1:data(2)-1));
    bss(i).y=str2num(line(data(2)+1:data(3)-1));
    bss(i).h=str2num(line(data(3)+1:data(4)-1));
    bss(i).dm=line(data(4)+1:end);
    i=i+1;
end
fclose(fp);

% 计算国家坐标系的坐标
a=3976223.453;b=39512553.524;rad=deg2rad(0.433267);
c=cos(rad);d=-sin(rad);lmd=1.000034336;
m=i-1;gjzb=[]; 
for i=1:m
    gjzb(i).dh=bss(i).dh;
    gjzb(i).dm=bss(i).dm;
    gjzb(i).h=bss(i).h;
    gjzb(i).x=a+lmd*(c*bss(i).x-d*bss(i).y);
    gjzb(i).y=b+lmd*(d*bss(i).x+c*bss(i).y);
end

% 输出数据
[filename2,p2]=uigetfile('*.txt', '输出文件');
fn=fopen(strcat(p2,filename2),'w');
fprintf(fn,'%s\n\n','   点名       X(m)        Y(m)     H(mm)   code');
fclose(fp);fn=fopen(strcat(p2,filename2),'a');
for i=1:m
    fprintf(fn,'%8s', gjzb(i).dh);
    fprintf(fn,'%15.3f', gjzb(i).x);
    fprintf(fn,'%16.3f', gjzb(i).y);
    fprintf(fn,'%10.3f', gjzb(i).h);
    fprintf(fn,'%8s\n', strcat('   ',gjzb(i).dm));
end
fclose(fn);