内容发布更新时间 : 2024/9/12 21:21:27星期一 下面是文章的全部内容请认真阅读。
……………………………………………………………最新资料推荐…………………………………………………
测量程序设计 实验报告
换算
1
实验名称:大地坐标与空间直角坐标的
……………………………………………………………最新资料推荐…………………………………………………
实验四 大地坐标与空间直角坐标的换算
一、实验目的
编写大地坐标与空间直角坐标相互转换的程序,并对格式化文件数据进行计算,验证程序。 二、实验内容:
1、大地坐标向空间直角坐标换算 转换公式:
x?(N?h)cosBcosL y?(N?h)cosBsinL (1)
z?[N(1?e2)?h]sinB其中:L为经度,B为纬度,h为大地高,N?a1?esinB22为卯酉圈曲率半径,
a2?b2为第一偏心率,a为旋转椭球长半轴,b为短半轴。 e?aWGS84椭球参数:长半轴 a = 6378137
扁率 f = 1/298.257223563
根据上式创建以geo2xyz命名的函数,函数输入输出格式为 [x, y, z] = geo2xyz (L, B, h) 2、空间直角坐标向大地坐标换算
根据式(1)推导大地坐标向空间直角坐标转换公式:
L?arctan(y/x)z?Ne2sinB) B?arctan(22x?yh?x2?y2?NcosBaz注意计算纬度时需要用到迭代,可用B?arctan()作为初始值。
22bx?y创建以xyz2geo命名的函数,函数输入输出格式为 [L, B, h] = xyz2geo (x, y, z)
2
……………………………………………………………最新资料推荐…………………………………………………
三、实验步骤
1、大地坐标向空间直角坐标换算 主程序:
%%大地坐标向空间直角坐标换算
%函数的输入输出格式为[x,y,z]=geo2xyz(L,B,h)
[filename,pathname] = uigetfile('*.txt','请选择打开的数据文件'); file = [pathname, filename]; data = importdata(file); L=data.data(:,1); B=data.data(:,2); h=data.data(:,3);
[x,y,z]=geo2xyz(L,B,h); A=[x,y,z]; A=A';
[filename_out,pathname_out] = uiputfile('*.txt','请选择要输出数据文件');
fileout = [pathname_out, filename_out]; fid = fopen(fileout,'wt');
fprintf(fid,' x y z\\n'); fprintf(fid,'.7f .7f .7f\\n',A); close('all');
函数:
function [x,y,z]=geo2xyz(L,B,h) %大地坐标经纬度转换成空间直角坐标 B=dms2rad(B); L=dms2rad(L); a=6378137; %a是长半轴
f=1/298.257223563; %f是扁率 b=a-a*f;
e=sqrt(a^2-b^2)/a;
N=a./(sqrt(1-e^2.*(sin(B)).^2)); %N为卯酉圈半径率,e为第一偏心率 x=(N+h).*cos(B).*cos(L); y=(N+h).*cos(B).*sin(L); z=(N*(1-e^2)+h).*sin(B); end
function rad=dms2rad(jiaodu) %度分秒->弧度(rad) degree = fix(jiaodu);
mimute = fix((jiaodu-degree)*100);
3