使用Matlab对大地测量学中的大地坐标和大地空间直角坐标进行相互转换

一、概述

大地坐标系是以大地经度L,大地纬度B和大地高H表示空间一点几何位置的坐标系。其中大地经度由起始大地子午面起算,向东量度,由0°至360°;亦可向东向西量度,各由0°到180°,分别称为东经和西经,东经为正,西经为负。
某点的法线与赤道面夹角叫做该点的大地纬度,以B表示。大地纬度由赤道面起算,向南、向北两极量度,各由0°到90°,分别称为南纬和北纬,北纬为正,南纬为负。
地面点沿法线到参考椭球面的距离称为该点的大地高,以字母H表示。大地高从椭球面起算,向外为正,向内为负。
大地空间直角坐标系以椭球中心O为坐标原点,以起始大地子午面与赤道面交线为X轴,在赤道面上与X轴正交的方向为Y轴,椭球的旋转轴为Z轴,构成右手坐标系O-XYZ。

在这里插入图片描述
图1 大地坐标系与大地空间直角坐标系

二、已知点的大地坐标(B,L,H)计算点的空间直角坐标(X,Y,Z)

所需公式:
X=(N+H)cos(B)cos(L)
Y=(N+H)cos(B)sin(L)
Z= [ N(1-e2)+H ]*sin(B)
其中N为法线长N=a/W
W为一辅助公式W=sqrt((1-e2)sin2B)

计算要求:
本例中采用GRS80椭球参数进行计算,最终结果以米为单位输出到屏幕,保留3位小数
(首先编写了度分秒转弧度函数)

matlab源程序如下:

度分秒转弧度函数

function rad=d2r(deg,min,sec)
    %    角度转弧度
    rad=(deg+min/60+sec/3600)*pi/180;

主程序

clear
clc
b=d2r(33,44,55.666);
l=d2r(77,11,22.333);
h=5555.660;   %经纬度
a=6378137;f=1/298.257222101;e2=2*f-f^2;   %GRS80椭球参数
W=sqrt(1-e2*(sin(b))^2);
N=a/W;
X=(N+h)*cos(b)*cos(l);
Y=(N+h)*cos(b)*sin(l);
Z=(N*(1-e2)+h)*sin(b);
fprintf('\nX=%.3fm\nY=%.3fm\nZ=%.3fm\n',X,Y,Z);

二、已知大地空间直角坐标(X,Y,Z)计算大地坐标(B,L,H)

所需公式:
tan(L)=Y / X,则L=atan(Y / X)
tan(B)=1 / sqrt(X2 + Y2)*(Z + ae2tanB / sqrt(1+tan2B-e2tan2B))
此处需要使用迭代算法来计算B的值,首先取一个初值tan(B0)=Z/sqrt(X2+Y2
收敛条件为两次tanB的绝对值之差小于5×10-10(也就是两次计算的B的绝对值之差小于0.0001″),可停止迭代

H=Z/sinB - N(1 - e2)
其中N为法线长N=a/W
W为一辅助公式W=sqrt((1-e2)sin2B)

计算要求:
本例采用CGCS2000椭球参数进行计算,度数以小数形式显示出来,即
B=30°12′29″ 显示为 B=30.122900000(秒保留5位小数)
高程保留3位小数
(首先要编写弧度转角度函数)

matlab源程序如下:

弧度转角度并确定输出格式

function deg=r2d(rad)
    %   弧度转角度
    rad1=rad*180/pi;
    deg1=fix(rad1);
    min=fix((rad1-deg1)*60);
    sec=((rad1-deg1)*60-min)*60;
    deg=deg1+min/100+sec/10000;

主程序

clear
clc
X=-2109101.506+500*29;
Y=4843022.866+500*29;
Z=3562987.896+500*29;     %空间直角坐标
a=6378137;f=1/298.257222101;e2=2*f-f^2;    %CGCS2000椭球参数
l=atan(Y/X);
L=r2d(l);
tanb0=Z/(sqrt(X^2+Y^2));
tanb1=(1/sqrt(X^2+Y^2))*(Z+(a*e2*tanb0)/(sqrt(1+tanb0^2-e2*tanb0^2)));
while abs(tanb1-tanb0)>=1e-7
    tanb0=tanb1;
    tanb1=(1/sqrt(X*X+Y*Y))*(Z+(a*e2*tanb0)/(sqrt(1+tanb0^2-e2*tanb0^2)));
end
b=atan(tanb1);
B=r2d(b);
W=sqrt(1-e2*(sin(b)^2));
N=a/W;
H=(sqrt(X^2+Y^2)/cos(b))-N;
fprintf('\nB=%.9f\nL=%.9f\nH=%.3f\n',B,L,H);

如有错漏之处敬请指正

  • 38
    点赞
  • 193
    收藏
    觉得还不错? 一键收藏
  • 23
    评论
大地测量学基础地固坐标转换地心惯性是指将地球表面上的点的地理坐标(经纬度)转换为地球内部的地心固定坐标。这种转换是为了便于地球物理研究以及工程测量等领域的应用。Matlab是一个功能强大的数值计算软件,它能够提供丰富的工具和函数库,可以用于处理地球测量学的数据以及进行地心惯性转换。 地球测量学,地球被视为一个椭球体,为了更精确地描述地球的形状,人们引入了地心惯性系。地心惯性坐标系建立在地球质心处,使用X、Y和Z三个坐标轴表示空间位置。然而,实际观测的测量数据通常是以经纬度的形式给出的,因此需要将地理坐标转换为地心固定坐标Matlab提供了一系列针对地球测量学的工具和函数,主要包括地图绘制工具、坐标转换函数和大地测量学计算函数。通过这些工具和函数,我们可以根据给定的地理坐标数据进行坐标转换,将经纬度转换为地心固定坐标,并进一步进行各种测量学计算,如大地距离计算、方位角计算等。 使用Matlab进行地心惯性转换,首先需要加载相关的工具包和函数库,然后读取地理坐标数据,并使用合适的转换函数进行坐标转换转换后的地心固定坐标数据可以用于进一步的分析和处理。 总之,地地固坐标转换地心惯性是地球测量学重要的数据处理过程,而Matlab作为一种强大的数值计算软件,能够提供丰富的工具和函数库,以帮助我们进行这类转换
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值