让GIS三维可视化变得简单-地理坐标系统-程序员宅基地

技术标签: java  机器学习  人工智能  编程语言  大数据  

6b5518129f84212d0ce059f0721b4eac.gif

写在前面

地理位置也就是坐标说是 GIS 的灵魂不为过吧,像天气预报、火箭发射包括地震、火山等事故发生时,新闻媒体就会说东经 XX 度、北纬 YY 度发生了什么什么,还有高德百度的地图导航、定位等等都需要用到坐标系统,因为没有准确的位置信息就无法表达地物的位置关系,地图查询分析等等也就无从谈起了

坐标系统可以分为地理坐标系统和投影坐标系统两大类

今天我们就以 Cesium 中要用到坐标转换为引,给非专业小伙伴们普及下坐标系统的知识,概念性较多,不需要全部记住,了解概念即可,我们先来说地理坐标系统

地理坐标系统也就是Geographic Coordinate System,我们简称GCS,它就是由地球表面空间要素产生的定位参照系统,说的很官方,接下来我们渐入

「PS:」 因为地图相关太难画了,本文中所有图片皆来自网络,如有侵权,请告知,即删

认知地球

历史演进

我们想要知道某个地方或物体在哪个位置肯定需要一个参照物,而对于现代生活在地球上的我们知道想要进行全球范围的精准定位,这个参照物只能是地球,因为清楚的了解地球的形状大小、了解人类与地球的关系

但是古时候的人,由于活动范围很小,只看到自己生活地区的一小块地方,所以单凭直觉就产生了种种有关 天圆地方 的说法

比如我国早在两千多年前的周代,就有 天圆如张盖,地方如棋局 的盖天说

古代埃及人认识,天像一块穹窿形的天花板,地像一个方盒

俄罗斯人则认为大地像一块盾牌,由三条巨鲸用背驮着,漂游在茫茫的海洋里

印度人也有俄罗斯类似的传说,不过他们认为驮着这块大地的,不是巨鲸,而是站在海龟背上的三头大象,大象动一动便会引起地震

后面古希腊科学家亚里士多德提出大地是球形,再到后来1519-1521年麦哲伦环绕地球航行一周成功,才使得地球这一名字正式的产生

随着测量技术的不断进步,特别是人造地球卫星的利用,才使得我们对地球有了一个明确的认知,地球并不是一个正球体,而是一个两极稍扁、赤道略鼓的不规则球体,可以成为椭球,地球的平均半径 6371 千米,极半径为 6356 千米,两者相差为 21 千米,最大周长也就是我们所说的赤道约 4 万千米,表面积约 5.1 亿平方千米,如下图

25c07f7daf5065c44f3a640e246ab19d.png

经纬度&弧度

地理坐标系统是由经纬度来定义的,那么可能有人不知道经纬度,so,这里把的经纬度也给大家介绍下

经度是从本初子午线开始向东或向西度量角度,东半球为正西半球为负,而纬度是从赤道平面向北或向南度量角度的,赤道北为正,赤道南为负

哦,对了本初子午线指的是的在地球上连接南北两极的经线,叫法很多,零经线、首子午线、零子午线等都是,赤道则是地球表面随地球自转产生的轨迹中周长最长的圆周线,划分了南北半球

本初子午线和赤道就是地理坐标系统的基线了,两者相切,可以理解为 x/y 坐标轴,那么我们说的经度就相当于 x 值,纬度就相当于 y 值,如下图

976dee303b135ab5c3b990c331c1711a.png

关于经纬度的单位我们可以用度分秒(DMS)、十进制度数(DD),或者我们变成中可能会用到的弧度(rad)表示

度分秒表示法中,1度等于60分、1分等于60秒( 1° = 60′ 1′ = 60″ ),比如经纬度 45°52′30″,那我们转换为十进制来表示就是 45.875°(45+52/60+30/3600),除此之外的我们常用的弧度,我们记住两个值就可以了,敲重点了

1rad = 57.2958°
1°  = 0.01745rad

大地水准面

地球表面有高山、有洼地,是崎岖不平的,所以当我们想要使用数学法则来描述它,就必须找到一个相对来说较规则的数学面

我们都知道地球也可以叫水球,因为大部分是海洋,所以,人们假设海水处于完全静止的平衡状态,那么从海平面延伸到所有大陆下部,而与地球重力方向处处正交的一个连续、闭合的曲面就是大地水准面,如下图

331ee8a529cee061077b9d0897926546.png

地球椭球体&椭球面

上面我们说大地水准面忽略了地面上的凸凹不平相对规则,但由于地球内物质分布的不均匀,大地水准面仍是起伏不平,它虽然非常接近一个规则椭球体,但并不是完全规则,还是没有办法用数学表达

我们知道用椭圆绕短轴旋转可生成一个椭球体,所以为了定量描述地球的形状而不受起伏的影响,测量上把与大地水准面符合的最理想的旋转椭球体叫做 地球椭球体 也叫 参考椭球体,并选择能用数学方程表示的椭球体面作为投影的基准面,这个基准面就称为 参考椭球面,简称 椭球面,参考下图

1b1c3f3f8886b7e283a57d67a6e5d9fb.png

大地基准面

上面我们说了大地水准面、地球椭球体椭球面等概念,接下来我们来看大地基准面,简单讲,我们把地球比作一个马铃薯,因为它表面坑坑洼洼的,那么我们上面讲的参考椭球体就可以用鸭蛋表示,因为它比较规则,我们随意挑选一个方位视角把鸭蛋放在马铃薯上,旋转或者放大缩小鸭蛋让它尽可能的去贴合这个方位的马铃薯面,调整合适之后在这个方位视角的鸭蛋面就是大地基准面(马铃薯鸭蛋之说取自网上偶然看到的一篇文章,觉得很贴切,找不到地址了。。)

由于我们可以随意的旋转马铃薯从而变换方位,那么鸭蛋(参考椭球体)也会随着马铃薯(地球)视角方位进行改变,基准面也就会随着地球的某个方位测量产生多个,不同国家或地区都会选择自己相对贴合的位置测量从而产生各自的基准面,也就出现了我们现在十分头疼的不同坐标系转换的问题,原因是它们的基准面不同,如下图

2311826f8ef88231b4e4d72418242fd8.png

我们经常听到的北京 54 坐标系、西安 80 坐标系,实际上是指我国的两个大地基准面

各个国家在马铃薯(地球)的所处的位置不同,旋转放大或缩小产生的鸭蛋(参考椭球体)也不同,所以产生了很多参考椭球体,我国参照前苏联从 1953 年起采用克拉索夫斯基(Krassovsky)椭球体建立了北京 54 坐标系,后面在 1978 年采用国际大地测量协会推荐的1975地球椭球体(IAG75)建立了新的大地坐标系——西安 80 坐标系

参心坐标系

球的测量肯定要定球心,上面我们说过的鸭蛋也就是参考椭球体,地球的球心不好确定,但参考椭球体是规则的,那么以参考椭球体的几何中心为原点的大地坐标系就是 参心坐标系,而这个参心指的就是参考椭球的球心我们计作原点 O

参心坐标系通常说的是参心空间直角坐标系(以x,y,z为坐标元素)和参心大地坐标系(以B,L,H为其坐标元素)

参心坐标系是在参考椭球内建立的 O-XYZ 坐标系,原点 O 为参考椭球的几何中心,X轴与赤道面和本初子午面的交线重合,向东为正。Z轴与旋转椭球的短轴重合,向北为正,Y轴与XZ平面垂直构成右手系,如下图

9e14f6044d885437d18cfc0a8a012895.png

在测量中,为了处理观测成果和传算地面控制网的坐标,通常须选取一个 参考椭球面 作为基本参考面,选一参考点作为大地测量的起算点(这个点就是 大地原点),利用大地原点的天文观测量来确定参考椭球在地球内部的位置和方向

地心坐标系

20世纪50年代之前,一个国家或一个地区都是在使所选择的参考椭球与其所在地区的大地水准面最佳拟合的条件下,按弧度测量方法来建立各自的局部大地坐标系的

由于当时除海洋上只有稀疏的重力测量外,大地测量工作只能在各个大陆上进行,而各大陆的局部大地坐标系间几乎没有联系,不过在当时的科学发展水平上,局部大地坐标系已能基本满足各国大地测量和制图工作的要求

但是后来为了研究地球形状的整体及其外部重力场以及地球动力现象,特别是50年代末,人造地球卫星和远程弹道武器出现后,为了描述它们在空间的位置和运动,以及表示其地面发射站和跟踪站的位置,都必须采用地心坐标系,因此,建立全球地心坐标系(也称为世界坐标系)已成为大地测量所面临的迫切任务,再到后来就确立了地球的质心(也就是世界统一的地球唯一中心点)

这个背景下以地球 质心为原点 建立的空间直角坐标系,或以球心与地球质心重合的地球椭球面为基准面所建立的 大地坐标系 就诞生了

以地球质心为原点的大地坐标系通常分为地心空间直角坐标系(以x,y,z为其坐标元素)和地心大地坐标系(以B,L,H为其坐标元素)

地心坐标系是在大地体内建立的 O-XYZ 坐标系,原点O设在大地体的质量中心,用相互垂直的X,Y,Z三个轴来表示,X轴与首子午面与赤道面的交线重合,向东为正,Z轴与地球旋转轴重合,向北为正,Y轴与XZ平面垂直构成右手系,和上面参心图差不多,就不放图了

到此,相信你对我们的地球有了一个新的认知,那么接下来我们介绍几种常用的坐标系

常用坐标系

我们这里简单介绍 4 个比较常见的坐标系,分别是两个我国早期使用的坐标系 北京54西安80,目前我国主流的 CGCS2000,和世界常用的地理坐标系统 WGS84

北京54

新中国成立以后,我国采用了前苏联的克拉索夫斯基椭球参数(也就是说它是一个参心坐标系),并与前苏联1942 年坐标系进行联测,通过计算建立了我国大地坐标系,定名为 1954 年北京坐标系,简称北京 54 坐标系

1954 年北京坐标系可以认为是前苏联1942年坐标系的延伸,因为它的原点不在北京而是在前苏联的普尔科沃

北京54是建国初,在当时技术条件不高时引苏联的地理坐标系统到我国境内的,大地原点都不在我国境内,所以北京54在我国境内有较大偏差,已逐渐废弃

西安80

1978年4月在西安召开全国天文大地网平差会议,确定重新定位,建立我国新的坐标系,为此有了1980年国家大地坐标系,1980年国家大地坐标系采用地球椭球基本参数为 1975 年国际大地测量与地球物理联合会第十六届大会推荐的数据(也是参心坐标系)

此坐标系的 大地原点 设在我国中部的陕西省泾阳县永乐镇,位于西安市西北方向约60公里,故称1980年西安坐标系,也可简称西安 80 坐标系

它的基准面采用青岛大港验潮站1952-1979年确定的黄海平均海水面(即1985国家高程基准),目前也逐渐废弃了

西安80与北京54

西安80坐标系与北京54坐标系其实是一种椭球参数的转换作为这种转换在同一个椭球里的转换都是严密的,而在不同的椭球之间的转换是不严密,因此不存在一套转换参数可以全国通用的,在每个地方会不一样,因为它们是两个不同的椭球基准

北京54和西安80是两种不同的大地基准面,不同的参考椭球体,因而两种地图下,同一个点的坐标是不同的,无论是三度带六度带坐标还是经纬度坐标都是不同的,相同的是它们两个都已经逐渐废弃了

CGCS2000

从北京54到西安80,随着情况的变化和时间的推移,上述两个以经典测量技术为基础的局部大地坐标系,已经不能适应科学技术特别是空间技术发展,不能适应中国经济建设和国防建设需要,中国大地坐标系的更新换代,是经济建设、国防建设、社会发展和科技发展的客观需要

以地球质量中心为原点的地心大地坐标系,是21世纪空间时代全球通用的基本大地坐标系,所以以空间技术为基础的地心大地坐标系,是中国新一代大地坐标系的适宜选择

CGCS2000是2000国家大地坐标系,属于地心大地坐标系统,此坐标系是通过中国GPS 连续运行基准站、 空间大地控制网以及天文大地网与空间地网联合平差建立的地心大地坐标系统,2000(中国)国家大地坐标系以ITRF 97 参考框架为基准, 参考框架历元为2000.0,全称叫中国国家2000地理坐标系统,它的英文名字叫  China Geodetic Coordinate System 2000

次坐标系是目前我国主流坐标系,干说这个坐标系你可能不知道,这样说吧,我国的GPS系统-北斗导航系统以及国家发行的天地图,用的都是这一套地理坐标系统,晓得了吗

WGS84

WGS84是美国GPS使用的一个全球地理坐标系统,OSM地图、谷歌地图(国外版)、Landsat系列卫星影像图等均在地理坐标系统上使用了这个,有许多开发地图的API默认是使用WGS84的,

它的全称叫World Geodetic System 1984,我们在网上交流的数据大部分也都是WGS84的,所以目前世界上使用最广泛的坐标系可能就是WGS84了

我国的高德、百度等地图使用的也都是WGS84,只不过它们都在WGS84基础上再次加密,在民间叫火星坐标系,采用就是大名鼎鼎的GCJ02加密算法,它与真实的WGS84坐标是有误差的,这个误差值并不固定,通常是几十米到几百米(百度地图更狠,在GCJ02的基础上还做了再次偏移,也就是BD09,我们通常叫百度坐标系),至于为什么加密,不用我说,你懂的哈

CGCS2000与WGS84

上面提到CGCS2000与WGS84这两种坐标系都是地心坐标系,所以CGCS2000的定义与WGS84实质一样,采用的参考椭球非常接近

但是由于扁率差异引起椭球面上的纬度和高度变化最大达 0.1mm,在当前测量精度范围内是可以忽略这点差异的,可以说两者相容至cm级水平,但若是一个点的坐标精度达不到cm水平时,就不认为CGCS2000和WGS84的坐标是相容的,反之两者皆可

常用坐标系小结

来总结一下这几个常用坐标系,由于是介绍常识上面写的都挺官方,我们总结的话就接地气一点

北京54参心坐标系是建国初在当时技术条件不好时引苏联的地理坐标系统到我国境内的,大地原点不在我国境内,所以在我国境内有较大偏差,已逐渐废弃

西安80参心坐标系则是改革开放后,技术稍好,为解决北京54偏差问题,为我国各项事业发展搞的一个适用于国内的地理坐标系统,现也已逐渐废弃

北斗导航系统、天地图都在用的CGCS2000是目前我国主流,地心坐标系

WGS84是一个源于美国且世界流通较广的全球地理坐标系统,地心坐标系

这张图不错

398b25f8a4fa1aaa6cee20503469420c.png

先解释一下,ArcGIS的WKID,我们应该都知道ArcGIS,美国环境系统研究所ERSl(EnvironmentalSystems ResearchInstitute)搞的,它们可以说是GIS行业之首

那WKID是什么呢,WKID全称叫Well-known ID,它表示空间参考的ID,简单来说,世界上的坐标系太多了,我们把每一个坐标系比作一个人,北京54、西安80、CGCS2000、WGS84等等都是名字简称,全名太长了,而且可以改名啥的,但是身份证号是唯一且不变的,这个身份证号就是指的WKID,它在空间数据的使用、转换、共享等都起到了关键作用,所以记住这几个常用的ID有好处

想要查WKID的话可以去这里查 JavaScript版本[1]

最后

由于篇幅问题,投影坐标系统放在了下文中讲了

感谢阅读,欢迎大家点击下方的卡片关注「不正经的前端」,来个霸气四连吧!!!

参考资料

地理信息系统导论-第九版[2]

聊聊GIS中的坐标系|再版[3]

Reference

[1]

JavaScript版本: https://developers.arcgis.com/javascript/3/jshelp/pcs.htm

[2]

地理信息系统导论-第九版: https://book.douban.com/subject/31438879/

[3]

聊聊GIS中的坐标系|再版: https://www.cnblogs.com/onsummer/p/12081889.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_43430453/article/details/120340784

智能推荐

解决Ubuntu下Sublime中无法输入中文问题-程序员宅基地

文章浏览阅读36次。然而,在Ubuntu操作系统中,有时候我们可能会遇到在Sublime Text中无法输入中文的问题。通过安装和配置fcitx输入法框架,并切换到中文输入法,我们可以解决在Ubuntu下Sublime Text中无法输入中文的问题。在Ubuntu操作系统中,当我们尝试在Sublime Text中输入中文时,可能会发现无法输入中文字符,或者输入的中文字符显示为乱码。在Ubuntu上,我们可以使用fcitx输入法框架来解决Sublime Text中无法输入中文的问题。在打开的界面中,点击"+“按钮来添加输入法。

TM034XVZP01 mipi屏 高通8909平台lk和kernel驱动 基于ili9881驱动_msm8909屏幕点亮-程序员宅基地

文章浏览阅读1.8k次。效果图如上。 所需的时序文件链接 https://download.csdn.net/upload/11120468 大家可以下载参考上述是最终的成果,该文章只着重讲述lk阶段的调试过程,lk阶段调试好之后,kernel层只需根据lk阶段的参数生成dtsi文件,修改一下相应的显示文件即可。一:调试步骤1.首先调试lk阶段的代码1.1 用安卓源码路径“device..._msm8909屏幕点亮

嵌入式JetSon TX2上定位构图与目标检测环境部署(包括RTAB-MAP、Object Detection API、RealSense、IMU、ROS、CUDA、Tensorflow等配置)_e: unable to locate package librealsense2-dkms-程序员宅基地

文章浏览阅读2k次。这周为了项目结题在一块崭新的TX2开发板上复现了去年的定位构图与目标检测环境部署,其实各个部分的内容在博主之前的博客中零零碎碎的都提到过,这里重新写篇博客整体总结一下,因为后面还有两块新的TX2等待博主部署环境......流下了熟练工种的泪水QAQ_e: unable to locate package librealsense2-dkms

网件 设置为ap_如何为Netgear Arlo Pro相机系统编辑或创建自定义模式-程序员宅基地

文章浏览阅读231次。网件 设置为apBy default, Netgear’s Arlo Pro camera system comes with several different modes that you can switch between, depending on whether you’re home or away. However, you may want to customize the se..._arlo pro 本地媒体库不可用

ENC28J60 驱动开发要点_enc28j60 esp32驱动-程序员宅基地

文章浏览阅读2.2k次。摘要:在嵌入式系统中,以太网控制器通常也是研究热点之一,MicroChip公司的ENC28J60在嵌入式系统中应用价值较高,该芯片集成了MAC控制器和PHY,使用SPI接口,适合在引脚资源比较紧张的嵌入式系统中加入以太网连接功能,本文主要介绍了MicroChip公司的ENC28J60控制器的初始化及其编程相关的注意和要点,并针对开发中可能遇到的一些问题进行了探讨。关键字: ENC28J60编程_enc28j60 esp32驱动

element ui 表格中的字太长,想要把多余的字变成...解决方法,一个属性即可_element ui table文字变多转换...-程序员宅基地

文章浏览阅读3.4k次,点赞5次,收藏4次。问题描述如下相应代码段 <el-table style="width: 100%" height="330px" :data="tableData" border stripe> <el-table-column align="center" type="index" label="#"></el-table-column> <el-table-column align="center" label="社团编号" prop="a_element ui table文字变多转换...

随便推点

optimizer.step()代表什么意思-程序员宅基地

文章浏览阅读5.8k次,点赞20次,收藏49次。`optimizer.step()`是PyTorch中优化器对象的一个方法,用于更新模型的参数。在训练深度神经网络的过程中,我们需要通过反向传播算法计算每一个参数对损失函数的梯度,然后使用优化器更新参数,使得损失函数最小化。而`optimizer.step()`方法就是用于执行参数更新的。_optimizer.step()

iOS 9.3.5 越狱_use privded iffsets-程序员宅基地

文章浏览阅读4.5k次。1. 下载impactor;地址:https://cydia.ooo/cydia-impactor/2. 下载Phoenix.ipa;3. 运行impactor ,安装Phoenix.ipa 到手机上;4. 运行Phoenix. 点击prepare for jailbreak. 然后点Accept. 接着点击Dismiss. 点击下面的Proceed with jai..._use privded iffsets

高并发下接口幂等性解决方案_高并发接口-程序员宅基地

文章浏览阅读303次。现如今我们的系统大多拆分为分布式SOA,或者微服务,一套系统中包含了多个子系统服务,而一个子系统服务往往会去调用另一个服务,而服务调用服务无非就是使用RPC通信或者restful,既然是通信,那么就有可能在服务器处理完毕后返回结果的时候挂掉,这个时候用户端发现很久没有反应,那么就会多次点击按钮,这样请求有多次,那么处理数据的结果是否要统一呢?那是肯定的!尤其在支付场景。_高并发接口

hadoop mysql中文乱码_Hive元数据存于mysql中文乱码解决-程序员宅基地

文章浏览阅读144次。最近在搭一套Hive测试环境,使用mysql存储hive的元数据,然而当执行一个带有中文注释的建表文件时,出现了中文乱码的问题。实验过程中发现把整个数据库编码改成latin1或者Utf8都不行,只有把整个数据库设定为latin1而把要存储中文的数据表的编码设定为UTF8才能够解决。出现问题:执行hive -f "createtable.sql"时说中文乱码不认识。尝试1失败:将meta datab..._create database hadoop_test character set utf-8;为什么会报错?

mysql开启日志占cpu不_MySQL占用CPU过高 查找原因及解决 多种方式-程序员宅基地

文章浏览阅读810次。MySQL占用CPU过高 查找原因及解决 多种方式一、排查有没有地方占用SQL资源过多1、排查方法:>mysql-uroot-p#登陆数据库>********#输入数据库密码2、查看数据库show databases;3、use 数据库名; #切换到常用数据库4、show processlist; #显..._打印mysql日志占用cpu吗

【Trino实战】Hive connector功能性文档_trino文档-程序员宅基地

文章浏览阅读1k次。Hive connector 相关_trino文档