空间直角坐标系(XYZ)转经纬度(BLH)

这篇具有很好参考价值的文章主要介绍了空间直角坐标系(XYZ)转经纬度(BLH)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本章首先介绍空间直角坐标系与大地坐标系,然后列出XYZ转换BLH的公式,最后基于C语言完成该部分代码设计。

 文章来源地址https://www.toymoban.com/news/detail-414200.html

参考书籍:

董大男,陈俊平,王解先等,GNSS高精度定位原理,科学出版社

黄丁发,熊永良,周乐韬等,GPS卫星导航定位技术与方法,科学出版社。

 

公式原理 

空间直角坐标系

空间直角坐标系原点位于参考椭球的中心,Z轴指向参考椭球的北极,X轴指向首子午面与赤道的交点,Y轴位于赤道面上,且按右手坐标系与X轴呈90°夹角。某点在空间中坐标可用该店在次坐标系的各个坐标轴上的投影来表示。(如下图所示)

空间直角坐标系(XYZ)转经纬度(BLH)

空间直角坐标系

大地坐标系

空间大地坐标系是采用大地经纬度和大地高来描述空间位置的(下图)。维度是指P点的法线与赤道面的夹角,用B(-90°~ 90°)表示,向北为正称为北纬,向男为负称为南纬。经度是指P点的参考椭球子午面与起始子午面的二面角,用L表示(-180°~180°),由起始子午面起算,向东为正称为东京,向西为负称为西经。大地高是空间点沿该法线到椭球面的距离,用H表示,向上为正,向下为负。

空间直角坐标系(XYZ)转经纬度(BLH)

空间大地坐标系

 

XYZ转BLH

空间直角坐标系(X,Y,Z)与大地坐标系 (B,L,H)关系如下:

空间直角坐标系(XYZ)转经纬度(BLH)

式中:N为某点P的卯酉圈半径;(B,L,H)为P点的大地坐标系,卯酉圈半径N公式如下:

空间直角坐标系(XYZ)转经纬度(BLH)

式中:a为椭球长半轴,b为椭球短半轴,为第一离心率,B为大地维度。不难看出,大地维度是关于自身的函数,需要迭代求解。计算方式如下:

空间直角坐标系(XYZ)转经纬度(BLH)

初始迭代时,设:

空间直角坐标系(XYZ)转经纬度(BLH)

 于是:

空间直角坐标系(XYZ)转经纬度(BLH)

当ΔH<0.001m,B的经度保证在0.001秒即可停止迭代。

关于上述代码的详细推导过程,请参考charlee44博主的大地经纬度坐标与地心地固坐标的的转换

 

程序设计

#define a  6378137.0//长半轴
#define f  (1 / 298.257223563)//扁率
#define e2  (f*(2-f))//第一偏心率平方

//经纬度转换(弧度)
BLH XYZtoLB(double X, double Y, double Z)
{
	BLH res = { 0 };
	double B = 0.0, N = 0.0, H = 0.0, R0, R1, deltaH, deltaB;
	R0 = sqrt(pow(X, 2) + pow(Y, 2));
	R1 = sqrt(pow(X, 2) + pow(Y, 2) + pow(Z, 2));
	//经度直接求解
	res.L = atan2(Y, X);
	//迭代求大地维度和大地高
	N = a;
	H = R1 - a;
	B = atan2(Z * (N + H), R0 * (N * (1 - e2) + H));
	do
	{
		deltaH = N;//判断收敛所用
		deltaB = B;
		N = a / sqrt(1 - e2 * pow(sin(B), 2));
		H = R0 / cos(B) - N;
		B = atan2(Z * (N + H), R0 * (N * (1 - e2) + H));
	} while (fabs(deltaH - H) > 1.0e-3 && fabs(deltaB - B) > 1.0e-9);
	res.B = B;
	res.H = H;
	return res;
}

这里的精度控制可以自己尝试修改一下,看看有什么不同。 

其中,BLH为用于传参的结构体,代码如下:

//经纬度函数传参
typedef struct BLH
{
	double B;//维度
	double L;//经度
	double H;//高
}BLH;

代码部分与上述公式部分对应,代码并不复杂按公式来即可,求出测站的经纬度后,即可求出卫星的高度角、方位角,从而进行定权、误差改正等内容。

卫星高度角、方位角求解可参考我的博客:求解卫星高度角、方位角


补充:

        在程序设计中,因为浮点数保存精度的原因,应该尽量避免乘除法,有些公示进行了简单换算,同学们先自己换算一下。

 

到了这里,关于空间直角坐标系(XYZ)转经纬度(BLH)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Cesium:CGCS2000坐标系的xyz坐标转换成WGS84坐标系的经纬高度,再转换到笛卡尔坐标系的xyz坐标

    作者:CSDN @ _乐多_ 本文将介绍使用 Vue 、cesium、proj4 框架,实现将CGCS2000坐标系的xyz坐标转换成WGS84坐标系的经纬高度,再将WGS84坐标系的经纬高度转换到笛卡尔坐标系的xyz坐标的代码。并将输入和输出使用 Vue 前端框架展示了出来。代码即插即用。 网页效果如下图所示, 一、

    2024年02月06日
    浏览(32)
  • 柱坐标系与直角坐标系的转换

    1.柱坐标系转化为直角坐标系:柱坐标系(r,φ,z)与直角坐标系(x,y,z)的转换关系 x=rcosφ y=rsinφ z=z 2.直角坐标系转化为柱坐标系:直角坐标系(x,y,z)与柱坐标系(r,φ,z)的转换关系: r= φ= z=z

    2024年02月11日
    浏览(30)
  • Matlab 实现图像的直角坐标系和极坐标系的相互转化

    某日需要在matlab进行图像的的极直互化,发现并没有介绍相应内容的文章,所以有了自己调研一下并写一写的想法。果然只要想就能做到,所以有了下面这篇文章。 根据直角坐标系(笛卡尔系)内数值和极坐标系关系 根据上述公式不难想出,在直角坐标系中的圆会在极坐标

    2024年02月11日
    浏览(28)
  • 经纬度转换为UTM坐标

    UTM(通用横向墨卡托投影): 是一种以米为单位的坐标系统,用于地图和GPS导航。将地球划分为60个纵向的区域。每个区域宽6度,从赤道开始往南北两级方向划分。每个区域都有一个特定的字母。 将经纬度值转化为弧度值 根据经纬度计算所在的UTM区域 计算UTM带号,即 zone

    2024年02月10日
    浏览(41)
  • Echarts直角坐标系x轴y轴属性设置大全

    \\\"echarts\\\": \\\"^5.3.3\\\", 常见的直角坐标系,x轴设置type: \\\'category\\\',为类目轴,适用于离散的类目数据;y轴设置type: \\\'value\\\',为数值轴,适用于连续数据。 渲染结果: 只设置x轴,渲染效果: x轴y轴都设置,渲染效果:   只设置X轴,渲染效果: 只设置x轴,渲染效果: 直线指示器 只设

    2023年04月15日
    浏览(30)
  • 【Unity】坐标转换经纬度方法(应用篇)

    解决地图中经纬度坐标转换与unity坐标互转的问题。使用线性变换的方法,理论上可以解决小范围内所有坐标转换的问题。 之前有写过[Unity]坐标转换经纬度方法(原理篇),在实际使用中,由于步骤比较繁琐,基于之前的方法,详细说明使用方法。 案例资源下载地址 绑定脚本

    2024年02月10日
    浏览(29)
  • opendrive-经纬度投影坐标转横轴墨卡托投影坐标

    经纬度投影 xodr文件+proj=latlong,说明需要使用经纬度投影代表x,y xodr文件+proj=tmerc,说明需要使用横轴墨卡托投影(将经纬度投影转为墨卡托投影)代表x,y,z 将经纬度转为墨卡托(UTM)

    2024年01月23日
    浏览(47)
  • global mapper手动添加网格线平面直角坐标系及简易3D地形演示

    在网格配置中,如下图,可以设置背景网格间距大小。但是在卫星图中,由于是灰色的线条,难以被识别出来,尤其是在需要判读格子内距离时带来不便。例如上图中的灰色线条就不容易判读。 添加其他图层后更变的不容易识别。 可以利用线工具重新绘制网格,达到显眼醒

    2024年02月05日
    浏览(31)
  • Java根据坐标经纬度计算两点距离(5种方法)、校验经纬度是否在圆/多边形区域内的算法推荐

    目录 前言 一、根据坐标经纬度计算两点距离(5种方法) 1.方法一 2.方法二 3.方法三 4.方法四 5.方法五 5.1 POM引入第三方依赖 5.2 代码 6.测试结果对比 二、校验经纬度是否在制定区域内 1.判断一个坐标是否在圆形区域内 2.判断一个坐标是否在一个多边形区域内 3.结果 总结   

    2024年02月10日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包