本文约6500字,建议阅读时间15分钟。php
做者:博客园/B站/知乎/csdn/小专栏 @秋意正寒html
版权:转载请告知,并在转载文上附上转载声明与原文连接(http://www.javashuo.com/article/p-fxqpxnbk-cd.html)。程序员
【目录】算法
- 1. 经纬度与米【告诉你们GIS中的坐标系核心的两种坐标系定义,地理坐标系统vs投影坐标系统】
- 2. 为何有两种表达(不一样点)
- 3. 内在联系(相同点)【指出投影坐标系统的广义定义,即PCS=f(GCS)】
- 4. 经常使用坐标系统(4.1 WKID;4.2 地理坐标系统;4.3 投影方法;4.4 投影坐标系统;4.5 GCJ02与BD09;4.6 经纬度直投)
- 5. 经常使用坐标系统的判别与经常使用软件中的操做(待补充)
- 个人牢骚与参考文档
让基础浅薄的同窗、GIS外行疑惑的,可能就是这两种“单位”的坐标值,以及他们的转换了吧。spring
2019年是一个不一样寻常的年份,大大小小的地震总能被人民日报大V转发。编程
地震信息通常会带什么呢?api
这是一条地震消息,它除了时间、地震等级等消息外,有一个很重要的消息:北纬36.16度,东经98.93度,为了方便,咱们用数学的坐标表示法:网络
点P,P(98.93°E, 36.16°N)函数
其中,E就是单词East(东),N就是单词North(北)。工具
咱们先引入两个定义(敲重点):
上述地震点,它用角度值来表示某个点,尽管角度值能够是十进制度,也能够是度分秒(参考初中数学知识)咱们说,这种表示空间上的点所用到的坐标参考,叫作地理坐标系统。
与之相对的,用米、公里这种单位表达的,咱们在初中数学里很熟悉的,用笛卡尔平面直角坐标系表示的点,咱们说它用的是“投影坐标系统”。
注意了!
这个定义是严格的,请用这一组概念继续阅读,我知道读者可能在此以前会看过所谓的“大地坐标系统”、“平面坐标”、“经纬度坐标”等表达,可是,至少在我这里,请用个人这组定义。
咱们如今说的,是地理数据的数学基础,即坐标系它本身自己的定义,如今,我说地理数据用的坐标系有“地理坐标系统”和“投影坐标系统”两种,但不止这两种。
为何会有这些差异呢?
咱们还要从地球的形状提及。地球是一个近似的椭球,越靠近赤道,越肥。固然,这个“肥”在地球这个尺度下,好几千公里vs20公里,几乎看不出来。
咱们GIS是讲究数学的,必须用数学的语言。地球既然是个“椭球”,天然就能够用三维的坐标系统来描述。经纬度,就是解析立体几何里用的“球面坐标系统”。
有好奇的同窗会问了,三维坐标有三个坐标值啊,为何只有经纬度呢?(笑)
在这,咱们不画图,也不展开,我在以后的讲解种会展开地理坐标系统的严格定义。可是投影坐标系统的广义定义很是简单,下一节就讲了。
如今,在数学上,只需知道(经度、纬度)是球面坐标系的下的两个份量罢了。
而在地理上,(经度、纬度)则是用角度值表达的“地理坐标系统”的两个份量。
咱们拿一个地球仪来看看:
若是初中地理知识过关的话,我认为都能认出:南北极点的经线很是密集,纬线干脆就从赤道的一个大圆变成了一个点。反而越靠近赤道,纬线圈越大,经线圈的距离也越大。
咱们计算矩形的面积是怎么计算的了?
S=a×b,a为长边长,b为短边长。
这种“非线性”的变化,就不能用1个经度×1个纬度来表示面积了,由于不一样经纬度的地方,1个经度和1个纬度表明的长度并不同。
正是这个“几何上的计算”的麻烦,因此在计算几何有关值(长度、面积)时,你们更喜欢在【笛卡尔直角坐标系】上计算,也即“投影坐标系统”。
一般,在表示位置的时候,咱们喜欢说“xx度东经,yy度北纬”,由于这个基于整个地球,用这简单的两三位数字(不包括小数)就能够精肯定位到地球的任意一点。
而在局部某个地区,能够是某个市的行政区,某个省的某几个市,咱们喜欢用平面直角坐标来计算长度、面积。
这就是“地理坐标系统”和“投影坐标系统”的一个最原始的需求差别。
事实上,用角度来计算面积在高等数学中并不是难事,可是,能用S=a×b来算,先人就不会用复杂的表达式了。
因此,
既然一个擅长定位,一个擅长计算,两者是如何联系在一块儿的呢?
是啊,咱们只有一个地球,可是能够用不一样的表达方法(没错,就是坐标系统)来描述同一个地方,坐标系这个小东西确实让一些人头疼啊。
上来开大,投影坐标系统的广义定义以下:
投影坐标系统 = f(地理坐标系统)
咱们说,投影坐标系统是基于一个法则f和一个地理坐标系统而定义的。
这个定义是一个广义定义,有更精确的定义于之后讲解。
为何球面坐标(角度值)能经过一个投影方法f计算获得平面直角坐标(公里、米)呢?
如何以曲化直呢?
这得得益于数学家的功劳,赶忙给高斯、牛顿、莱布尼茨、拉格朗日、欧拉这些大佬烧香啊~
举个最简单的例子,在平面上,用角度+长度表达的极坐标就能经过一组简单的公式换算到平面直角坐标:
- x=R×sin∠A
- y=R×cos∠A
具体定义不扯太远,可是,这个法则f远远比这两个公式复杂得多。
在这里,只需记住,一个投影坐标系统,必然包括一个投影方法和一个地理坐标系统的定义。
那么,
死亡四连问啊,不要紧,立刻解答。
WKID即Well Known ID,众所周知的ID号的意思。EPSG是管理这些ID号的一个组织,网站是epsg.io
一般来讲,一个GIS里的坐标系统,必须有一个WKID,某些特别的除外,下面会讲。
例如,WKID=4326,即WGS84这个地理坐标系统的ID。
注意!!!
地理坐标系统和投影坐标系统均使用这套定义,可是不会重复,也没有规律说哪一段数字是地理坐标系统,哪一段是投影坐标系统。
幸运的是,咱们并不须要彻底记完,网上这个WKID大全列表很容易找到,并且只需记住项目中用的、以及常见的便可。
①WGS84(WKID=4326)
美国GPS使用的一个全球地理坐标系统,osm地图、谷歌地图(国外版)、Landsat系列卫星影像图等均在地理坐标系统上使用了这个,有许多开发地图的api默认是使用WGS84的,WGS84使用极其普遍。
全称 World Geodetic System 1984。咱们在网上交流的数据大多数也是WGS84的,毕竟osm地图是开源免费的,任意下载。
须要注意的是,加密前的高德、百度用的也是WGS84,有关高德百度等常见国内电子地图的坐标系统,在4.5节会详细介绍。
②CGCS2000(WKID=4490)
我国的GPS系统-北斗导航系统以及国家发行的“天地图”,用的是这一套地理坐标系统,中文名“中国国家2000地理坐标系统”,英文全称翻译名“中国大地坐标系2000”。
英文名 China Geodetic Coordinate System 2000。
③北京5四、西安80
是我国已经逐渐中止使用的两个地理坐标系统。
北京54坐标系统WKID是4214,西安80坐标系统的WKID是4610。
尽管有大量历史遗留数据仍采用这两个坐标系统,做为学习研究使用固然是能够的,可是建议尽快转移到国家2000坐标系来(转换方法暂且不说,之后会说)。
小补充:
北京54是建国初,在当时技术条件不高时“引”苏联的地理坐标系统到我国境内的,在地理坐标系统的精肯定义时会详细展开为什么北京54在我国境内为什么有较大误差。
而西安80则是改革开放后,技术稍好,为解决北京54误差问题,为我国各项事业发展搞的一个适用于国内的地理坐标系统。
为何会启用国家2000呢?也留到之后地理坐标系统的精肯定义来谈,感兴趣的朋友能够等等我。
④美国经常使用地理坐标系统
NAD2七、NAD83
什么是投影?这里,待投影的“东西”是地球表面这个曲面——投影到哪里?假如地心有一个灯泡,灯泡的光线能把地表照射到一个面上,而这个面能够展开成为平面,咱们说投影到的这个面,叫投影面。
(网络图,灯光将物体投影到墙面这个平面,墙面与物体呈垂直方向,即纵轴投影)
事实上,能展开成平面的面有平面自己、椭圆柱面、圆锥面(好像就见过这仨)等。根据投影面和地球的相对位置,能够有很是多种投影方法。
①高斯克吕格(Gauss - Kruger)
高斯克吕格是由高斯和克吕格两人一块儿搞的投影法则,投影面是一个椭圆柱面打横着套在地球的数学椭球面上,围绕地轴旋转,将地球表面投影到该椭圆柱面的一种投影方法。
不懂?看图:
以某条经线与椭圆柱面相切(这条经线就叫中央经线),投影到椭圆柱面后,再沿着椭圆柱面的高剪开摊成平面,就是高斯投影的原理啦。
高斯克吕格投影是分带的,经度不是有东西各180度吗?因此能够按3度或者6度剥开一瓣用于投影。
旋转高斯克吕格的投影面,能够获取下一个分带的投影,以合适全球全部的地方。
请读者发挥一下想象力,由于从图上看,越远离中央经线的地方投影到椭圆柱面上,变形越严重,反而是中央经线附近的地方很是能贴合投影面。
--- 若是不懂也不要紧,咱们已经能给出高斯投影的学名了:横轴(由于投影面是躺着的 与地轴垂直)切(由于与地表面是相切关系)椭圆柱(投影面是椭圆柱面)投影。
实际上,高斯克吕格投影也叫“横轴墨卡托投影”,由于投影面是(椭)圆柱面的投影均叫“墨卡托投影”,见第②点。
②墨卡托投影(Mercator)
墨卡托发明的投影叫墨卡托投影,特色是纵轴,即投影面是个圆柱,与地球赤道相切(立着的水管里塞了个乒乓球),学名:正轴切圆柱投影。
(网络图片)
③UTM投影(Universal Transverse Mercator)
全称“通用横轴墨卡托投影”,和高斯克吕格投影很是类似,只不过它并非切于经线圈,而是穿地球而过。咱们从侧面来看,高斯投影面和经线圈是彻底重合的,可是UTM则不是:
(网络图片,很复杂,但很形象)
UTM投影是贯穿地球的,应该是侧面上看相割。
UTM投影为美国陆军工程兵测绘局于20世纪40年代提出。当时对美国本土采用Clarke 1866椭球体,对全球其它地方采用其余椭球体。
UTM投影如今采用WGS84地理坐标系统进行投影。
如今,不少遥感影像图用的就是UTM投影出来的投影坐标系统。
③网络墨卡托(WebMercator)
Web Mercator投影不是严格意义的墨卡托投影,而是一个伪墨卡托的投影方法,这个伪墨卡托投影方法的大名是 Popular Visualization Pseudo Mercator,PVPM。
由于这个投影方法是Google Map最早发明并使用的。
它的地理上的不严谨性在于,在投影过程当中,将表示地球的椭球面做为正球面处理。
传说中是由于谷歌程序员懒得用椭球面来编程计算屏幕坐标...
有关网络墨卡托,还有一段更有趣的故事,见参考文献。
④兰伯特(Lambert)投影与阿尔伯斯(Albers)投影
兰伯特投影,投影面是圆锥面,更像是一个圆锥筒子套在一个球上(图a):
此时的兰伯特投影是切圆锥投影,固然兰伯特也能够是割圆锥投影(图b)。
它相似于阿尔伯斯投影,不一样之处在于其描绘形状比描绘面积更准确。
中国国家全幅地图、美国国家平面坐标系对全部具备较大东西范围的区域均使用此投影。国际上用此投影编制1∶100万地形图和航空图。
而阿尔伯斯投影常见于我国的省区投影,由于面积更准确。
阿尔伯斯投影是一种圆锥等面积投影。
* 补充:兰伯特投影还有另一种投影方法,投影面并非圆锥面,而是平面。见维基定义上的图:
①基于高斯克吕格投影的投影坐标系统族
在我国,基于北京5四、西安80、国家2000,都可以使用高斯克吕格投影定义出投影坐标系统。
由于地理坐标系统有这三个(实际上高斯克吕格投影在别的国家的地理坐标系统也能够起做用),加上高斯克吕格投影方法容许分带表达,
因此,该投影坐标系统族有不少个,以WKID=4547为例。
WKID=4547这个投影坐标系统是这样定义的:
基于国家2000坐标系,使用3度高斯分带,中央经线为东经114°,使用高斯克吕格投影的投影坐标系统,而且平面坐标系统的经度方向上,坐标值有投影带号。
简写为:3度投影带114°中央经线的高斯投影坐标系统(2000坐标带带号)。
那么不带带号的呢?坐标值若不带带号的投影坐标系统会产生重叠。WKID=4526正是WKID=4547这个带带号的PCS对应的无带号的投影坐标系统。
在ArcGIS中,区分有无带号,从投影坐标系统的名称中能够看出:
以上为国家2000、北京5四、西安80在“GK投影(高斯克吕格投影)”下同一中央经线,坐标值内带投影带与不带投影带投影坐标系统的名称。
总结:经常使用的高斯投影的PCS族,在我国,地理坐标系统只有北京5四、西安80、国家2000,根据中央经线按需选用。
②基于UTM投影的投影坐标系统族
和①中高斯投影坐标系统族相似,只不过仅仅基于WGS84。
分带与名称再也不赘述,按中央经线自行使用便可。
③基于网络墨卡托(WebMercator)的投影坐标系统
只有一个,WKID=3857。
有趣的是,网络墨卡托投影坐标系统还有102100、900913这俩ID,有兴趣的朋友能够看参考文献里的《Web Mercator 公开的小秘密》一文。
当前,我国的高德、百度、腾讯地图,谷歌地图(国内国外均)、osm地图都用了网络墨卡托来平面化展现,只不过国内高德百度腾讯和国内谷歌地图的地理坐标系统通过加密,加密知识见4.5节。
而天地图虽然用的是国家2000地理坐标系,可是也提供了墨卡托投影方法来展现平面地图。
ArcGIS Earth这个免费的小软件则直接使用3857坐标系(和Google Earth相似)。
④基于兰伯特与阿尔伯斯的投影坐标系统
时间缘由,此处暂不列举WKID,总之我国大公鸡图喜欢用阿尔伯斯投影,我国省区图喜欢用兰伯特圆锥投影。
⑤不常见投影坐标系统
我国因部分地区建设需求,本身给本身定义了投影坐标系统,在个人实践经验中,见过的有:NJ08坐标系(基于CGCS2000)、广州地方坐标系(基于CGCS2000)等。
在4.4节的第③点中已经说起,国内高德、百度、腾讯和国内谷歌地图的地理坐标系统均通过加密。
它们使用的都是WGS84坐标系(坊间传)。
由于国家保密须要,网络地图至少要用一种特殊的算法进行加密,那就是大(e)名(chou)鼎(bu)鼎(kan)的加密算法——GCJ02。(固然,天地图没有加密,直接是CGCS2000)
民间也叫火星坐标系,它加密后的WGS84坐标,与真实的WGS84坐标是有偏差的,这个偏差值并不固定,一般是几十米到几百米。
GCJ02加密算法是一种多项式+正弦函数加密算法,一般隔一段时间就换一下参数,因此,网上所谓的解密算法并非官方的精确算法,隔一段时间说不定就不许确了。
有关WGS84和GCJ02,能够查阅参考文档里的《关于GCJ02和WGS84坐标系的一点实验》,出自李民录。这里摘抄一张图,是我国各个地区GCJ02加密后的不一样偏移值:
百度地图更为恶心,在GCJ02的基础上再次偏移,也就是BD09。
这个加密算法并不公开,须要找有关部门交钱审核才能获取,并且没有精确的反向算法(多项式咋反向啊)。
因此,知道为何说GCJ02/BD09是“假的坐标系”了吧?
这是一个很是恶心的作法,即把经纬度等同直角坐标来绘制,这样就有一个后果:
当纬度=90度时,理论上有无限个点(即经度有无限个),若经纬度=直角坐标,那么赤道有多长,极点就展开拉的有多长。
这种拉扯是很是恶心的,天地图就这么干,在我国高纬度地区,使用经纬度直投的绘制方法,会使得原本直角相交的两条道路斜变:
(天地图,黑龙江佳木斯市两种投影的对比,上图为经纬度直投)
这也是ArcMap的默认“投影”,一般比较丑,尤为是高纬度地区变形很是严重,可是胜在渲染速度快。
①ArcMap
简单讲一下,在arcgis - arcmap中,在数据管理工具箱>投影工具集下,是处理坐标系统的强大工具。
“定义投影”工具,是为无坐标系统定义的数据定义GCS或PCS用的;
“投影”工具,是转换坐标系统用的,能够由GCS投影到指定PCS,也能够由PCS转到指定GCS(能够是PCS定义内的GCS,也能够是其余GCS),也能够由PCS转到另外一个PCS(换投影带,或者连GCS、PCS一块儿换)
>注意,跨GCS的“投影”操做,须要“地理转换”辅助,有关地理转换,会专门出一篇博客讲解。
“投影栅格”工具,是转换栅格数据用的,用法同“投影”工具。
之后放图及其余软件的操做。
自我唠叨
上一篇《聊聊GIS中的坐标系》是我大三结束那个暑假头脑一热写的。好的,这一篇仍是我脑子一热写的,我写这篇花了我一个周末的某个凌晨(总算在全面小康前完成了上一篇的允诺...)。
我写以前还疯狂沉迷于《咱们没法一块儿学习》的古桥文乃和《总之就是很是可爱》的由崎司……跑题了
我一般说,数据是GIS的生命源泉。而GIS数据,万恶之源则在坐标系统,千里长征,毁于一旦。
有多少外行由于坐标系统崩溃?有多少专业内,或者邻专业的同窗根本看不懂或者听天书呢?应该不少吧。毕竟,我蹲了不下10个专业群(有几个广告太多了退了),有超过半数是开发群。
毛主席说过,去粗取精,去伪存真,由此及彼,由表及里。
我能作的一些工做,就是精炼概念,给你们作一些小小的工做,让你们尽量短的时间了解坐标系统,文章如有错误,请友好指出。(呼~ 总算更新回来了,加[咕]油[咕])
[1] epsg组织官网:http://epsg.io
[2] UTM投影与高斯克吕格投影及其变换实现:http://wap.sciencenet.cn/home.php?mod=space&uid=856115&do=blog&id=839212
[3] 聊聊GIS中的坐标系:http://www.javashuo.com/article/p-bcjlqxej-ec.html
[4] 天地图:https://map.tianditu.gov.cn/
[5] GMT中文手册:https://docs.gmt-china.org/latest/proj/Ju/
[6] 维基百科英文版:
https://en.wikipedia.org/wiki/Universal_Transverse_Mercator_coordinate_system
https://en.wikipedia.org/wiki/Lambert_conformal_conic_projection
https://en.wikipedia.org/wiki/Albers_projection
[7] WebMercator 正反算公式:https://blog.csdn.net/iispring/article/details/8565177
[8] WebMercator公开的小秘密:https://blog.csdn.net/kikitamoon/article/details/46124935
[9] 李民录. 关于GCJ02和WGS84坐标系的一点实验:https://blog.csdn.net/liminlu0314/article/details/42564039