Part1三种坐标系介绍

经纬度坐标: 假设空间某点P,用经纬度表示的话,你们B代表纬度,L代表经度,H代表大地高。
纬度B:P点沿着地球法线方向与赤道面的夹角。向北为正称为北纬(0-90),向南为负称为南纬(0-90) 实际表示可以用(-90 ~ 90)
纬度L:NPS面与参考椭球起始子午面NGS的夹角。由起始子午面起算,向东为正称为东经(0-180),向西为负称为西经(0-180)。实际表示用(-180 ~ 180)。
大地高H:表示P点沿该点法线到椭球面的距离,向上为正,向下为负。如下图所示:地心地固坐标系(Earth-Centered, Earth-Fixed) 又简称地心坐标系,英文简称(ECEF)。其中
原点:O为椭球的中心点
X轴: 指向起始子午面与赤道的交点
Y轴: 位于赤道面上,且按右手坐标系与X轴成90度夹角
Z轴: 指向椭球的北极N
东北天坐标系:站在地球球面某点,构建直角坐标系。
X轴:指向东方
Y轴:指向北方
Z轴:指向蓝天

Part2三种坐标系互相转换

这里我们主要分享如何通过js函数实现三种坐标系的互相转换,不进行原理的深入研究,只讲究如何实现。这里实现方法通过Cesium.js库来实现。

1Cesium.js介绍

CesiumJS 是一个开源 JavaScript 库,用于创建具有最佳性能、精度、视觉质量和易用性的世界级 3D 地球仪和地图。从航空航天到智能城市再到无人机,各行各业的开发人员都使用 CesiumJS 创建交互式 Web 应用程序来共享动态地理空间数据。参考网址:https://cesium.com/platform/cesiumjs/ github地址:https://github.com/CesiumGS/cesium

2nodejs实现坐标转换

首先通过npm来安装cesium库,方法如下:

npm install cesium

经纬度和地心坐标互转

# 经纬度转地心坐标系
let center = Cesium.Cartesian3.fromDegrees(116, 39)
console.log(center)
#地心坐标系转经纬度
let cartographic = Cesium.Cartographic.fromCartesian(center)
console.log({longitude: Cesium.Math.toDegrees(cartographic.longitude),latitude: Cesium.Math.toDegrees(cartographic.latitude),
})

控制输出如下:与之前输入的经纬度一致

Cartesian3 {x: -2175779.497312825, y: 4461009.061769954, z: 3992317.0227517267}
{longitude: 116.00000000000001, latitude: 39}

地心坐标与东北天互转

假设在上面的地球球面center处构建东北天坐标系。

# 东北天坐标转地心坐标
# 下面求(0,0,0)处的坐标在地心坐标系下的坐标
let enr2ffTransforms = Cesium.Transforms.eastNorthUpToFixedFrame(center)
let result1 = Cesium.Matrix4.multiplyByPoint(enr2ffTransforms,new Cesium.Cartesian3(0, 0, 0),new Cesium.Cartesian3()
)
console.log(result1)

输出值与center处地心坐标一致

Cartesian3 {x: -2175779.497312825, y: 4461009.061769954, z: 3992317.0227517267}
# 地心坐标系转东北天坐标系
# 下面示例采用的地心坐标为上面示例输出值
let enr2ffTransformsInverse = Cesium.Matrix4.inverseTransformation(enr2ffTransforms,new Cesium.Matrix4()
)
console.log(Cesium.Matrix4.multiplyByPoint(enr2ffTransformsInverse,result1,new Cesium.Cartesian3())
)

输出如下,符合之前的预期

Cartesian3 {x: 0, y: 0, z: 0}

Part3总结

本文主要介绍了经纬度、地心坐标、东北天三种坐标系的概念,并给出了基于cesium.js实现了三种坐标系互相转换的方法。
欢迎加技术交流群交流。

互转(经纬度、地心坐标、东北天坐标)相关推荐

  1. php 通过坐标获取省市,PHP根据经纬度获取在范围坐标的数据

    PHP根据经纬度获取在范围坐标的数据 PHP根据经纬度获取在范围坐标的数据 //计算范围,可以做搜索用户 function GetRange($lat,$lon,$raidus){ //计算纬度 $d ...

  2. 【实战总结】根据地图经纬度及范围查询坐标点信息

    使用地图经纬度及范围查询坐标点信息的场景,在现实开发中还是有很多机会遇到的,比如地图导航类应用计算两点之间的距离及范围.大众点评美团等点餐按照买家和商家的坐标点进行计算距离,等等. 最近在项目中的一个 ...

  3. python 实现经纬度与大地2000坐标的转换

    python 实现经纬度与大地2000坐标的转换 -- coding: utf-8 -- import math 圆周率π pi = 3.1415926535897932384626 圆周率转换量 x ...

  4. 经纬度和球体三维坐标换算

    引言 在球面坐标系上,坐标是用经纬度标示,纬线和经线一样是为度量方便而假设出来的辅助线,定义为地球表面某点随地球自转所形成的轨迹. 任何一根纬线都是圆形而且两两平行.纬线的长度是赤道的周长乘以纬线的纬 ...

  5. Threejs实现绘制地球,地理位置标注、经纬度转换世界坐标threejs坐标

    1,介绍 该示例使用的是 r95版本Three.js库. 主要实现功能:绘制地球和地理位置进行标注 效果图如下: 2,主要说明 准备一张地图,创建一个球体并进行贴图,把地理位置经纬度转换成threej ...

  6. java 获取两条经纬度线段的交点坐标工具类

    java 获取两条经纬度线段的交点坐标工具类 网上有线段是否相交的判断方法,但是很少有获取线段交点的坐标的方法 我在这里整合了网上的一些相交的方法,通过相交的xy轴点返推出了经纬度. 拾取坐标系统 可 ...

  7. Cesium:地心地固坐标(ECEF)转东北天坐标(ENU)

    Cesium中地心地固坐标(ECEF)转东北天坐标(ENU) Cesium 中常用的坐标是以椭球中心为原点的地心地固坐标系,在地学问题中,我们常常使用的坐标系为三个坐标轴分别指向东方.北方.地表垂直向 ...

  8. 2000坐标转换成经纬度_ArcGIS中的坐标问题快问快答

    1.我国常用的地理坐标系有哪些? (1)北京54坐标系(参心) 椭球体:Krasovsky (2)西安80坐标系(参心)椭球体:IAG (3)WGS84坐标系(地心)椭球体:WGS84 (4)大地20 ...

  9. 使用matlab/simulink将东北天坐标转化为北东地坐标

    使用matlab代码 1.方法一(东北天转北东地) % 定义东北天坐标系中的向量 x = 1; y = 2; z = 3; % 定义转换矩阵 R = [0 1 0; 1 0 0; 0 0 -1]; % ...

最新文章

  1. Rich Caruana:压缩深度神经网络模型让你兼得可解释性与准确性!
  2. SharePoint 2007部署过程详细图解之一:准备
  3. Android--开发资源管理器/优化ListView显示列表方法
  4. 为帐户创建一个Apex触发器,以根据自定义字段将送货地址邮政编码与账单地址邮政编码匹配
  5. bzoj千题计划153:bzoj2431: [HAOI2009]逆序对数列
  6. android 调整cpu频率,[IMX6DL][Android4.4] CPU频率调节模式以及降频方法
  7. Java 解析URL
  8. PS发光眩光效果插件:BBTools Glow Glare for Mac
  9. Vue2.0 探索之路——生命周期和钩子函数
  10. Hadoop如何迎击大数据分析的挑战
  11. java配u型你,泛型方法上的多个通配符使Java编译器(还有我!)很迷茫
  12. 22解析函数的级数表示(一)
  13. 两数组映射为一个哈希
  14. cefsharp作为采集工具(学习笔记)
  15. CCF虚拟现实与可视化技术专委会丨面向增强现实的可视计算技术研究进展概述
  16. (转)向浑水(Muddy Waters Research)学习如何调查公司
  17. maven命令行创建项目,提示java.lang.NoClassDefFoundError: org/apache/maven/shared/invoker/MavenInvocationExcept
  18. linux开发板通过网线连接电脑
  19. 起底 Telegram 的发家史:Pavel Durov 的游戏才刚刚开始
  20. JAVA GUI同一个窗体切换面板JPanel以及获取JFrame方法的注意事项

热门文章

  1. JAVA外卖项目第一天 技术选型和包结构
  2. 机器学习 K近邻之KD树基本概念、绘制KD树
  3. mysql-5.7.12-winx64安装的时候无法启动服务问题
  4. 纽约大学坦登学院计算机专业,纽约大学坦登工程学院
  5. linux批量卸载rpm,shell实现rpm -e 一键卸载所有相关包以及依赖
  6. 腾讯和爱奇艺的竞品分析
  7. AnyConnect苹果IOS系统Iphone手机的设置教程
  8. erdas查看灰度直方图_实习1:ERDAS软件视窗基本操作
  9. mySQL 事物提交成功不等于数据保存成功
  10. Android中监听Home键的4种方法总结