Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于Web GIS基础知识 #43

Open
HerryLo opened this issue Oct 25, 2023 · 0 comments
Open

关于Web GIS基础知识 #43

HerryLo opened this issue Oct 25, 2023 · 0 comments
Assignees
Labels
GIS 地图

Comments

@HerryLo
Copy link
Member

HerryLo commented Oct 25, 2023

关于Web GIS基础知识

作者:Herrylo

:::tip
本人对于GIS方面知识接近空白。最近,公司项目涉及GIS地图,所以主动学习了解。由于是初学者,学习内容可能有点片面、不完整,把自己知道的整理出来,以备之后查看学习。
文章涉及的内容比较初级,专业GIS的同学不喜勿喷。
:::

地理坐标系

地理坐标系统是地球表面空间要素的定位参照系统。由 经度和纬度 定义。

WGS84

WGS84坐标系目前应用最为广泛的坐标系统,只要跟GPS定位相关,使用的都是WGS84坐标系,谷歌、OSM也用的WGS84坐标系,很多软件(QGIS、ARCGIS)、前端脚本库(leaflet、mapbox、openlayer),在没有特别声明的时候,默认数据使用是WGS84坐标。

WGS84坐标是一种地心坐标系,坐标原点为地球质心,它采用一个十分近似于地球自然形状的参考椭球作为描述和推算地面点位置和相互关系的基准面。**EPSG编码是4326**

WGS84坐标也叫经纬高坐标系(经度(longitude),纬度(latitude)和高度(altitude)LLA坐标系)。可以说是最为广泛应用的一个地球坐标系,它给出一点的大地纬度、大地经度和大地高度,而更加直观地告诉我们该点在地球中的位置,故又被称作经纬高坐标系。

WGS-84坐标系的X轴指向BIH(国际时间服务机构)1984.0定义的零子午面(Greenwich)和协议地球极(CTP)赤道的交点。Z轴指向CTP方向。Y轴与X、Z轴构成右手坐标系。

其中:

1. 大地纬度是过用户点P的基准椭球面法线与赤道面的夹角。纬度值在-90°到+90°之间。北半球为正,南半球为负。

2. 大地经度是过用户点P的子午面与本初子午线之间的夹角。经度值在-180°到+180°之间。

3. 大地高度h是过用户点P到基准椭球面的法线距离,基准椭球面以内为负,以外为正。

参见:https://epsg.io/4326

CGCS2000

China Geodetic Coordinate System 2000,2000国家大地坐标系,是我国当前最新的国家大地坐标系,EPSG编码是4490。

相较于WGS84,CGCS2000坐标系的区别主要在于,它采用的是2000年的地球物理和大地测量的结果平差计算而设定的,坐标系Z轴指向历元2000的地球参考极方向,这些差异对高精数据有影响,但对于精度在10m以上的数据来说,这些差异可以忽略不计。

既非高精度的大多数情况下,我们可以认为 WGS84坐标系 = CGCS2000坐标系。

参见:https://epsg.io/4490

GCJ02

GCJ-02又称为火星坐标系,GCJ-02是由中国国家测绘局(G表示Guojia国家,C表示Cehui测绘,J表示Ju局)制订的地理信息系统的坐标系统。

它的中文名——国家测量局02号标准,它是一种对经纬度数据的加密算法,即加入随机的偏差。
GCJ-02以WGS-84为基础,使用混淆算法,在纬度和经度上都加入随机偏移,以提高国家安全。如果把WGS-84的点放在GCJ-02地图上,平均来说,会有一个大约300-500米的位置偏移。

GCJ-02只是一种坐标偏移标准(算法),它并不是一个坐标系,未被收录在EPSG中。
目前国内大部分地图底图(高德、腾讯)和矢量数据(图商的LBS服务和Android手机的定位数据)都使用的是GCJ02坐标系,GCJ02的加密算法非常精妙,地图底图和矢量数据在使用之前,需要将坐标系进行统一。

BD02

BD09属于百度地图坐标系,它是在标准经纬度的基础上进行GCJ-02加偏之后,再加上百度自身的加偏算法,也就是在标准经纬度的基础之上进行了两次加偏。BD09未被收录在EPSG中。

EPSG

EPSG 是大地基准面、空间参考系统、地球椭球体、坐标转换和相关度量单位的公共注册中心,它为每个坐标系都分配有一个编码。

参见:https://epsg.io

投影坐标系

投影坐标系统是以**平面直角坐标系(x,y)**表示地面点与坐标原点的距离,单位一般是 米

墨卡托投影

墨卡托投影是最常用的圆柱投影之一,并且通常以赤道为切线。经线以几何方式投影到圆柱面上,而纬线以数学方式进行投影。这种投影方式产生成 90 度的经纬网格。将圆柱沿任意一条经线“剪开”可以获得最终的圆柱投影。经线等间距排列,而纬线间的间距越靠近极点越大。此投影是等角投影,并沿直线显示真实的方向。在墨卡托投影中,等角航线、等方位线是直线,但大多数的大圆都不是直线。

web墨卡托投影

Web 墨卡托坐标系也被称为 Google Web 墨卡托、球面墨卡托、WGS 84 Web 墨卡托和伪墨卡托。它是 web 地图和在线服务的事实标准。借助此坐标系,将使用基于球体的墨卡托投影版本对 WGS 84 基准面上定义的测地坐标进行投影。EPSG编号为3857
通常我们使用 WGS84 存储数据,使用伪墨卡托显示数据。

Web-Mercator投影坐标系是网络地图的投影坐标系,几乎所有的网络地图都使用这种投影,它的投影结果是正方形的,计算简单,切图方便。

参见:https://epsg.io/3857

瓦片图

在上文中,我们提到了地理坐标系和投影坐标系。其中,地理坐标系是以地球质心为坐标原点,通过经度、纬度、高度三个坐标轴,描述和推算地面点位置关系。而投影坐标系,根据投影方式将地理坐标系投影到平面上,所以也称平面坐标系。地理坐标系单位是度,投影坐标系单位是米。

地理坐标系经过墨卡托投影,地图成为一张平面地图。在Web端页面,由于既要展示宏观信息,也要展示微观信息,所以对这张地图进行等级切分。

在最高级(zoom=0),信息最少,只用一张256x256像素的一张图片就可以;在下一级(zoom=1),信息量变多,用一张512x512像素的图片表示;以此类推,级别越低的像素越高。

对每张图片,我们将其切分为单张256x256图片,称为瓦片(Tile)。这样,在最高级(zoom=0)时,只有一个瓦片;在下一级(zoom=1)时有4个瓦片;在下一级(zoom=2)时有16个瓦片,以此类推。这就像一个金字塔结构。

瓦片规则

目前主流互联网地图商瓦片规则

  • 谷歌XYZ:Z表示缩放层级,Z=zoom;XY的原点在左上角,X从左向右,Y从上向下。
  • TMS:开源产品的标准,Z的定义与谷歌相同;XY的原点在左下角,X从左向右,Y从下向上。
  • QuadTree:微软Bing地图使用的编码规范,Z的定义与谷歌相同,同一层级的瓦片不用XY两个维度表示,而只用一个整数表示,该整数服从四叉树编码规则
  • 百度XYZ:Z从1开始,在最高级就把地图分为四块瓦片;XY的原点在经度为0纬度位0的位置,X从左向右,Y从下向上。

082304

打开 高德地图,不断缩放,查看它的瓦片图地址

// 东湖磨山景区瓦片图
https://webrd01.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x=6699&y=3365&z=13

在缩放高德地图中,通过浏览器控制台会发现,瓦片图参数x、y、z字段在不断变化, **z **是缩放级别,xy分别是相对于地图瓦片坐标原点的位置信息。

关于如何计算 xy 地图瓦片坐标原点的位置信息,可以参考:https://juejin.cn/post/7054729902871805966

参考资料

:::tip
GIS之坐标系统 - 掘金

从零打造一个Web地图引擎 - 掘金

https://segmentfault.com/a/1190000011276788

WGS-84 ECEF ENU 坐标系学习记录_隔壁大双的博客-CSDN博客

墨卡托投影—ArcMap | 文档
:::

@HerryLo HerryLo self-assigned this Oct 25, 2023
@HerryLo HerryLo added the Blog 文章 label Oct 25, 2023
@HerryLo HerryLo added GIS 地图 and removed Blog 文章 labels Jan 23, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
GIS 地图
Projects
None yet
Development

No branches or pull requests

1 participant