经纬度座标转换成直角座标

%MATLAB将经纬度座标转换成直角座标
% 从northEastChina20文本中读取经纬度座标及台站名,该文件中存放格式为三列,第一列是经度,第二列是纬度,第三列是台站名的三个字母​​缩写

C=load('17c1-14c1_100ugal.TXT');
lon=C(:,1);lat=C(:,2);
% sta=cell2mat(sta); %将cell转换成字符串

latlon20=[lat,lon];%把纬度放在第一列,经度放在第二列

axesm utm %设置投影方式,这是MATLAT自带的Universal Transverse Mercator (UTM)方式

Z=utmzone(latlon20);%utmzone根据latlon20里面的数据选择他认为合适的投影区域,可以是一个台站的经纬度,也可以是所有台站的经纬度(此时是平均)
setm(gca,'zone',Z)
h = getm(gca)
R=zeros(size(latlon20));
for i=1:length(latlon20)

[x,y]= mfwdtran(h,latlon20(i,1),latlon20(i,2));% 调用MATLAB自带的函数,根据先前设置的Z,逐个台站进行转换计算

R(i,:)=[x;y];

end
dlmwrite('coordinate.txt',R)
figure; plot(R(:,1),R(:,2),'ro','linewidth',6) %在直角座标下画出这些台站

===================================================================

mstruct=defaultm('mercator');
mstruct.geoid=[ 6378137 ,0.0818191908426215];
mstruct.geoid = referenceEllipsoid('grs80','kilometers');

mstruct.origin=[0,0,0];
mstruct=defaultm(mstruct);
[x,y] =projfwd(mstruct,lat,lon);

[lat,lon]=projinv(mstruct,x,y);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章