相同参考系统(椭球)大地坐标与空间直角坐标相互转换
一、大地坐标(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 ¶Ellipsoid)
{/* 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 ¶Ellipsoid)
{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
相同参考系统(椭球)大地坐标与空间直角坐标相互转换相关推荐
- WGS84下大地坐标转换为空间直角坐标
核心代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...
- 大地坐标与空间直角坐标互相转换
引言 坐标转换代码,由大地坐标(经.纬度.高)与空间直角坐标(XYZ)互相转换.MATLAB代码,下面代码默认转换的是WGS84坐标系下的空间直角和大地坐标,可以根据需要选择椭球参数. Matlab代 ...
- 不同参考系统(椭球)的坐标转换
一.不同椭球基准的坐标转换方法之一 ①原坐标需先转换成所在椭球基准的空间直角坐标(X1, Y1, Z1) ②通过"七参转换"转换成目标所在椭球基准的空间直角坐标(X2, Y2, Z ...
- 地理空间坐标系统-同一椭球基准内的坐标转换-相关代码算法实现C#
围绕上一篇,同一椭球基准内不同坐标系下坐标转换的相关算法,此篇主要分享的是这些算法的实现 采用代码为C#,转换精度都做了验证,都在小数点后两位 大地球面坐标与大地空间直角坐标互转 [坐标正转] 经度. ...
- python实现WGS-84坐标系下大地坐标和空间直角坐标系互转xyz2blh、blh2xyz,xyz2neu
WGS-84坐标系下大地坐标blh和空间直角坐标系xyz互转,以及转站心坐标系neu # -*- coding: utf-8 -*- """ Created on Tue ...
- 空间参考系统据库srs.db的使用
srs.db 全称 spatial reference system database 表结构 tbl_ellipsoid 椭球体参数表 tbl_projection 投影参数表 tbl_srs 空间 ...
- 【转载】空间直线同任意形状椭球交点
空间直线同空间中三维椭球相交,其交点即为空间直线方程同椭球方程的解,对于空间直线方程,只要知道两点空间坐标即可,而欧拉角不为零的三维椭球方程则较难描述,但可以考虑对椭球进行变换,使其欧拉角为零,进而转 ...
- n维椭球体积公式_加速度计 椭球校准 (最小二乘法 椭球拟合)
在搞自动控制中,很少有人能不和陀螺仪,加速度计这些打交道,当然还有些人还不免和地磁计打交道, 这类三轴传感器都有一个特性,三个轴的零飘不一样,三个轴的比例尺不一样,随机游走我们暂且不考虑, 那么这时候 ...
- c语言大地坐标转换空间坐标,大地坐标与空间直角坐标转换_C程序
大地坐标与空间直角坐标转换的C程序 #include #include double HD(double a,double b,double c) {b=b+c/60; a=a+b/60; a=a/1 ...
最新文章
- 世界AI大会三马纵论:马云乐观、马斯克悲观,马化腾认为技术孤立主义有大危害...
- linux配置nginx虚拟目录
- AGG第三十五课 gsv_text 渲染ASCII字符
- Kaggle-MNIST之路
- Android自定义Dialog及与Activity的交互
- C语言 malloc动态申请内存,存放数组
- DOCKER windows 安装Tomcat内容
- 报错 Error in created hook: “ReferenceError: _getDataPool is not defined“
- 趣味程序之打印字符图案系列
- Java基础篇:嵌套 if 语句
- 《监控》其实是讲一个年轻人彻底社会化的过程
- php syslog服务器,Linux Syslog日志服务器的搭建
- 抓包分析数据(Charles以及HttpCanary)
- pycharm 常用快捷键(中英文对照表)
- html tooltips效果,html5tooltips.js – 一款轻量级的3D工具提示插件
- 挑战练习13.6 删除crime 记录
- 7z解压crc错误_.7z解压文件末端错误 如何解压分卷压缩包 - 电脑故障 - 服务器之家...
- 1078 字母三角形
- 浙江大学计算机研究生答辩,浙江大学信息学院研究生申请答辩标准 | 求索阁
- Android 图片加边框
热门文章
- wikipedia 维基百科架构
- 基于Matlab/simulink的风光储微电网一体化协调系统
- 完整制作网吧系统全过程(三)
- 微硬创新RS485/RS232/MODBUS转PROFINET(PROFINET转RS232/RS485/MODBUS)网关连接西门子PLC和新大陆工业条码扫描枪配置案例
- FCF中文指南-第三章--FusionCharts Free我的第一个图形
- qt助手服务器超时,qt助手安装与使用教程
- https详解,ssl详解,学不会来打死我
- Java实现简单的UDP编程
- 代码审计(入门篇)-- 牛马留言板代码审计
- atmel studio7使用记录