一、大地坐标(B, L, H>>空间直角坐标(X, Y, Z

分享给有需要的人,代码质量勿喷。

//B、L的单位是弧度,H的单位是米;X、Y、Z的单位是米
//大地坐标(B,L,H)-->空间直角坐标(X,Y,Z)
std::vector<double> CoordinateTransform::GeodeticBLH__SpaceRectangularXYZ(
const double &B, const double &L, const double &H, const Ellipsoid &paraEllipsoid)
{/* N是卯酉圈曲率半径 */double N0 = paraEllipsoid.e1*paraEllipsoid.e1* std::sin(B)*std::sin(B);double N = paraEllipsoid.a / std::sqrt(1 - N0);double X = (N + H)*std::cos(B)*std::cos(L);double Y = (N + H)*std::cos(B)*std::sin(L);double Z = (H + N * (paraEllipsoid.b*paraEllipsoid.b / paraEllipsoid.a / paraEllipsoid.a))*std::sin(B);std::vector<double> vXYZ = { X,Y,Z };return vXYZ;
}

二、空间直角坐标(X, Y, Z>>大地坐标(B, L, H

2.1 方法1

2.2 方法2

分享给有需要的人,代码质量勿喷。

//X、Y、Z的单位是米;B、L的单位是弧度,H的单位是米
//空间直角坐标(X,Y,Z)-->大地坐标(B,L,H)
std::vector<double> CoordinateTransform::SpaceRectangularXYZ__GeodeticBLH(
const double &X, const double &Y, const double &Z, const Ellipsoid &paraEllipsoid)
{double L = std::atan2(Y, X);double oo = std::atan(Z*paraEllipsoid.a / paraEllipsoid.b / (std::sqrt(X*X + Y * Y)));double B0 = Z + (paraEllipsoid.a*paraEllipsoid.a / paraEllipsoid.b / paraEllipsoid.b - 1)*paraEllipsoid.b*std::pow(std::sin(oo), 3);double B1 = std::sqrt(X*X + Y * Y) - paraEllipsoid.e1*paraEllipsoid.e1*paraEllipsoid.a*std::pow(std::cos(oo), 3);double B = std::atan(B0 / B1);double N0 = 1 - paraEllipsoid.b*paraEllipsoid.b / paraEllipsoid.a / paraEllipsoid.a;N0 *= std::sin(B)*std::sin(B);double N = paraEllipsoid.a / std::sqrt(1 - N0);double H = std::sqrt(X*X + Y * Y) / std::cos(B) - N;std::vector<double> vBLH = { B / PI * 180,L / PI * 180,H };return vBLH;
}

三、参考

[1]孔祥元,郭标明,刘宗泉. 大地测量学基础[M]. 武汉:武汉大学出版社,2001.36-39.

[2] http://blog.sina.com.cn/s/blog_7cdaf8b60102wksh.html

相同参考系统(椭球)大地坐标与空间直角坐标相互转换相关推荐

  1. WGS84下大地坐标转换为空间直角坐标

    核心代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...

  2. 大地坐标与空间直角坐标互相转换

    引言 坐标转换代码,由大地坐标(经.纬度.高)与空间直角坐标(XYZ)互相转换.MATLAB代码,下面代码默认转换的是WGS84坐标系下的空间直角和大地坐标,可以根据需要选择椭球参数. Matlab代 ...

  3. 不同参考系统(椭球)的坐标转换

    一.不同椭球基准的坐标转换方法之一 ①原坐标需先转换成所在椭球基准的空间直角坐标(X1, Y1, Z1) ②通过"七参转换"转换成目标所在椭球基准的空间直角坐标(X2, Y2, Z ...

  4. 地理空间坐标系统-同一椭球基准内的坐标转换-相关代码算法实现C#

    围绕上一篇,同一椭球基准内不同坐标系下坐标转换的相关算法,此篇主要分享的是这些算法的实现 采用代码为C#,转换精度都做了验证,都在小数点后两位 大地球面坐标与大地空间直角坐标互转 [坐标正转] 经度. ...

  5. python实现WGS-84坐标系下大地坐标和空间直角坐标系互转xyz2blh、blh2xyz,xyz2neu

    WGS-84坐标系下大地坐标blh和空间直角坐标系xyz互转,以及转站心坐标系neu # -*- coding: utf-8 -*- """ Created on Tue ...

  6. 空间参考系统据库srs.db的使用

    srs.db 全称 spatial reference system database 表结构 tbl_ellipsoid 椭球体参数表 tbl_projection 投影参数表 tbl_srs 空间 ...

  7. 【转载】空间直线同任意形状椭球交点

    空间直线同空间中三维椭球相交,其交点即为空间直线方程同椭球方程的解,对于空间直线方程,只要知道两点空间坐标即可,而欧拉角不为零的三维椭球方程则较难描述,但可以考虑对椭球进行变换,使其欧拉角为零,进而转 ...

  8. n维椭球体积公式_加速度计 椭球校准 (最小二乘法 椭球拟合)

    在搞自动控制中,很少有人能不和陀螺仪,加速度计这些打交道,当然还有些人还不免和地磁计打交道, 这类三轴传感器都有一个特性,三个轴的零飘不一样,三个轴的比例尺不一样,随机游走我们暂且不考虑, 那么这时候 ...

  9. c语言大地坐标转换空间坐标,大地坐标与空间直角坐标转换_C程序

    大地坐标与空间直角坐标转换的C程序 #include #include double HD(double a,double b,double c) {b=b+c/60; a=a+b/60; a=a/1 ...

最新文章

  1. 世界AI大会三马纵论:马云乐观、马斯克悲观,马化腾认为技术孤立主义有大危害...
  2. linux配置nginx虚拟目录
  3. AGG第三十五课 gsv_text 渲染ASCII字符
  4. Kaggle-MNIST之路
  5. Android自定义Dialog及与Activity的交互
  6. C语言 malloc动态申请内存,存放数组
  7. DOCKER windows 安装Tomcat内容
  8. 报错 Error in created hook: “ReferenceError: _getDataPool is not defined“
  9. 趣味程序之打印字符图案系列
  10. Java基础篇:嵌套 if 语句
  11. 《监控》其实是讲一个年轻人彻底社会化的过程
  12. php syslog服务器,Linux Syslog日志服务器的搭建
  13. 抓包分析数据(Charles以及HttpCanary)
  14. pycharm 常用快捷键(中英文对照表)
  15. html tooltips效果,html5tooltips.js – 一款轻量级的3D工具提示插件
  16. 挑战练习13.6 删除crime 记录
  17. 7z解压crc错误_.7z解压文件末端错误 如何解压分卷压缩包 - 电脑故障 - 服务器之家...
  18. 1078 字母三角形
  19. 浙江大学计算机研究生答辩,浙江大学信息学院研究生申请答辩标准 | 求索阁
  20. Android 图片加边框

热门文章

  1. wikipedia 维基百科架构
  2. 基于Matlab/simulink的风光储微电网一体化协调系统
  3. 完整制作网吧系统全过程(三)
  4. 微硬创新RS485/RS232/MODBUS转PROFINET(PROFINET转RS232/RS485/MODBUS)网关连接西门子PLC和新大陆工业条码扫描枪配置案例
  5. FCF中文指南-第三章--FusionCharts Free我的第一个图形
  6. qt助手服务器超时,qt助手安装与使用教程
  7. https详解,ssl详解,学不会来打死我
  8. Java实现简单的UDP编程
  9. 代码审计(入门篇)-- 牛马留言板代码审计
  10. atmel studio7使用记录