使用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-7tanb0=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);
如有错漏之处敬请指正
使用Matlab对大地测量学中的大地坐标和大地空间直角坐标进行相互转换相关推荐
- matlab获取目录中图像名称及路径的递归实现
一个matlab获取目录中图像名称及路径的递归实现~ matlab源文件 getImageList.m [c-sharp] view plaincopyprint? function [ imageL ...
- matlab从图表中提取数据
有如下的波形图,如何从中精确提取出全部的数据: 1,将波形图片(截图)保存为test.png或test.jpg,并将图片放于matlab工作目录中,如下图示例所指定的目录中: 2,新建文件,输入如下程 ...
- Matlab去掉数组中0
n = 0; a(a==n) = []; 当然n可以改成任意值,即Matlab去掉数组中的任意值,感觉比find函数还简单. 猜你喜欢:
- 转载:如何将一个新函数加到MATLAB函数库中
如何将一个新函数加到MATLAB函数库中 nkszjx2 2017-09-29 11:25:26 13864 收藏 2 分类专栏: matlab 文章标签: matlab 库 </div> ...
- MATLAB的GUI中给坐标轴四周加上边框
在MATLAB的GUI中如何为坐标轴四边加上方框,效果如下图: 首先打开一个GUI文件,建立一个坐标轴,如下图所示: 双击该坐标轴,在弹出的检查器中,在Box那一栏后面勾上,如下图所示: 此时坐标轴四 ...
- matlab从矩阵中取rp开头文件,matlab trainrp
Af ] train(net, P,T, Pi, Ai,VV ,TV ) 3 [Y, Pf , Af , E, perf ] sim(net, P, Pi, Ai,T ) {'tansig','pur ...
- C语言实现MATLAB 6.5中M文件的方法
摘要:本文着重描述了运用MATLAB命令将M文件翻译为C语言程序,并修改为可直接调用的C语言函数的方法,使用该方法所需要注意的方法局限性和MATLAB版本差异的影响.运用该方法将能够使C语言能直接使用 ...
- matlab 函数优化问题,matlab求解最优化问题 Matlab在最优化问题中的应用举例.doc
matlab求解最优化问题 Matlab在最优化问题中的应用举例 导读:就爱阅读网友为您分享以下"Matlab在最优化问题中的应用举例"的资讯,希望对您有所帮助,感谢您对92的支持 ...
- matlab pdist如何实现,在MATLAB版本7中相当于pdist2
在MATLAB版本7中相当于pdist2 我需要计算matlab中2个matrix之间的欧式距离. 目前我使用bsxfun和计算距离如下(我附上一段代码): for i=1:4754 test_dat ...
- matlab bs2rv.m,matlab遗传算法工具箱中的例子不能用?
matlab遗传算法工具箱中的例子不能用,我也发现了,求助 figure(1); fplot('variable.*sin(10*pi*variable)+2.0',[-1,2]); %画出函数曲 ...
最新文章
- crontab详解及实例
- PeleeNet 测试
- php imagefill,PHP 图像填充 imagefill、imagefilledarc 与 imagefilledrectangle() 函数
- 图像降噪算法——中值滤波/均值滤波/高斯滤波/双边滤波
- excel判断字符串包含另一个字符串_【前端冷知识】如何正确判断一个字符串是数值?...
- boost::graph_as_tree用法的测试程序
- C# Socket系列一 简单的创建socket的监听
- jdbctype 对应java_MyBatis配置Mapping,JavaType和JDBCType的对应关系
- 提供一个Android原生的Progress——SwipeToRefreshLayout下拉刷新时的等待动画
- MFC消息响应机制及映射机制理解
- flask的请求与响应
- mysql数据生产数据分析_基于MySQL玩转SQL数据分析课程 互联网数据分析师-SQL数据分析实战视频教程...
- Silver Cow Party 图论 最短路问题
- 一个标准的REST API测试代码
- 冀教版三年级计算机教学计划,冀教版数学小学三年级上册教学计划
- haswell主板linux驱动下载,Haswell核芯显卡驱动首版已发布,附下载地址
- java实现给图片添加水印
- 数字信号与模拟信号的转化
- ASP.NET项目创建
- EDA学习1.4之二极管又回来了
热门文章
- 获取google chrome浏览器的安装位置
- STM32F401CCU6移植华为LiteOS
- python拉格朗日插值_拉格朗日插值多项式在Python中的实现
- mybatis-plus关联查询,一对一、一对多。
- linux 虚拟机不能启动不了系统,群晖VMM虚拟机安装Linux系统无法启动桌面的解决办法...
- Linux系统在Xshell6布置定时任务
- 苹果手机如何查看已经连接过的WIFI密码?
- 克隆加密狗和原加密狗_遥控钥匙和加密狗有什么区别?
- python获取json数据中某个字段_python获取json数据中某个字段
- 公众号基本的绑定手机号页面(截取code,手机号正则,验证码倒计时)