本文主要介绍坐标系和瓦片地图的相关知识, 他们是进行WebGIS开发的基础。
1 坐标系
坐标系分为地理坐标系和投影坐标系,他们的定义如下:
地理坐标系(Geographic Coordinate System):
是使用三维球面来定义地球表面位置,以实现通过经纬度对地球表面点位引用的坐标系。包括角度测量单位、本初子午线和参考椭球体三部分。
投影坐标系(Projection Coordinate System):
是使用基于X,Y值的坐标系统来描述地球上某个点所处的位置。它由地理坐标系和投影方法两个要素所决定。
1.1 地理坐标系
旋转椭球体
地球表面是崎岖不平的,人们为了精确表示地球表面的位置,引入了旋转椭球体的概念。即用一个规则的旋转椭球体去逼近真实的地球表面。一个旋转椭球体的参数主要有以下三个:长半轴、短半轴、扁率。定义了这三个参数,也就唯一确定了一个旋转椭球体。
大地基准面
定义了椭球体的形状后,还需要确定椭球体的位置。椭球体表面与真实地球表面存在差异,并且在世界的不同地区,这种差异也不尽相同。因此椭球体的定位直接决定了地理坐标与真实位置的误差。椭球体定位就是需要确定大地基准面,从而确定椭球体与地球的相对位置。有以下两类大地基准面:
- 地心基准面:由卫星数据得到,使用地球的质心作为原点,如如CGCS2000、WGS84。
- 区域基准面:特定区域内与地球表面吻合,旋转椭球体表面上的点与地球表面上的特定位置相匹配,但椭球的中心不与地球质心重合而是接近地球质心。例如Beijing54、Xian80。
确定了旋转椭球体的形状和位置,那么地理坐标系的基础就确定了。接下来需要定义地球上任意一点的地理坐标表示方法。
地理坐标
地理坐标,就是用经纬度表示地面点位的球面坐标。在大地测量学中,对于地理坐标系统中的经纬度有三种提法:天文经纬度、大地经纬度和地心经纬度。其中使用较多的是大地经纬度,其使用大地坐标(L,B,h)表示地面点在椭球面上的位置三个要素,他们的定义如下:
- 大地经度L:参考椭球面上某点的大地子午面与本初子午面间的二面角
- 大地纬度B:为参考椭球面上某点的法线与赤道平面的夹角,北纬为正,南纬为负
- 大地高h:从观测点沿椭球法线方向到椭球面的距离
图示:
这样就完成了地理坐标系的定义,地球上任意一点都能获得经纬度坐标了。
1.2 投影坐标系
在椭球面上表示的地球上物体的坐标,会给实际使用带来一些麻烦。更多的时候我们希望将地物展现在平面上,这时就需要引入投影坐标系的概念。
地图投影
在地球椭球面和平面之间建立点与点之间函数关系的数学方法,称为地图投影。
地图投影的一般公式为:x = F(λ,φ), y = G(λ,φ)
确定了投影方法后,也就确定了函数F和G,只要知道地面点的经纬度(λ,φ),便可以在投影平面上找到相对应的平面位置(x,y)。
投影方法有以下几类:
- 按变形性质分类:
- 等角投影:角度变形为零(Mercator)
- 等积投影:面积变形为零(Albers)
- 任意投影:长度、角度和面积都存在变形
- 按投影面类型划分:
- 圆柱投影:投影面为圆柱
- 圆锥投影:投影面为圆锥
- 方位投影:投影面为平面
- 按投影面与地球位置关系划分为:
- 正轴投影:投影面中心轴与地轴相互重合
- 斜轴投影:投影面中心轴与地轴斜向相交
- 横轴投影:投影面中心轴与地轴相互垂直
- 相切投影:投影面与椭球体相切
- 相割投影:投影面与椭球体相割
常用的投影方法
UTM投影
UTM投影全称为"通用横轴墨卡托投影",是一种"等角横轴割圆柱投影",椭圆柱割地球于南纬80度、北纬84度两条等高圈,投影后两条相割的经线上没有变形,而中央经线上长度比0.9996。高斯—克吕格投影(Gauss-Kruger)
高斯-克吕格投影,是一种“横轴等角切圆柱投影”,中央经线没有变形,不在中央经线上的点,长度比均大于1。且离开中央经线越远,长度变形越大。
以上两种方法都要进行分带投影。即按一定的间隔选取经线作为投影的中央经线,中央经线两侧一定范围内的地区按所选中央经线进行投影。这样做的目的是减小投影变形,方便在工程中使用。
-
墨卡托投影(Mercator Projection)
墨卡托投影,是一种“正轴等角圆柱投影”,假想一个与地轴方向一致的圆柱切或割于地球,按等角条件,将经纬网投影到圆柱面上,将圆柱面展为平面后,即得本投影。该投影具有等角航线被表示成直线的特性,故广泛用于编制航海图和航空图等。其缺点是在两极的变形严重。
具体的投影方法请点击小标题查看。
选择一个地理坐标系,以及一个地图投影方法,就唯一确定了一个投影坐标系,从而可以使用平面坐标表示地球上物体的位置了。
1.3 WebGIS中常用的坐标系
在Web地图领域,使用最为广泛的坐标系统就是WGS84 Web Mercator。谷歌地图、Virtual Earth、Bing Maps、百度地图、Mapabc、ArcGIS Online等都是采用这种坐标系。作为一个投影坐标系,需要两个基本的要素,一个是地理坐标系,还有一个是投影方法。我们分别来看:
WGS84 Web Mercator的地理坐标系
从名字可以看出,WGS84 Web Mercator坐标系采用的地理坐标系是WGS84坐标系,它属于地心坐标系,坐标系的原点位于地球质心,其基本参数如下:
GCS_WGS_1984
WKID: 4326 Authority: EPSG
Angular Unit: Degree (0.0174532925199433)
Prime Meridian: Greenwich (0.0)
Datum: D_WGS_1984
Spheroid: WGS_1984
Semimajor Axis: 6378137.0
Semiminor Axis: 6356752.314245179
Inverse Flattening: 298.257223563
WGS84 Web Mercator的投影方法
从名字上可以看出,WGS84 Web Mercator坐标系的投影方法和Mercator(墨卡托)投影有关,但是这个投影方法和不是标准的墨卡托投影。他们之间的区别在于,WGS84 Web Mercator在投影时将地球椭球当做圆球看待,这会导致本来是等角投影的墨卡托投影变得不再等角了,而是近似等角,也就是出现角度变形。
WGS84 Web Mercator的坐标范围
以赤道为标准纬线,以本初子午线为中央经线,分别得到X轴和Y轴。两者的交点设为原点,规定纬度向北为正,向南为负;经度向东为正,向西为负。
- X轴:由于赤道半径为6378137米,则赤道周长为2πR = 2*20037508.3427892,因此X的取值范围是:[-20037508.3427892,20037508.3427892]。
- Y轴:由墨卡托投影的公式可知,当纬度φ接近两极,即90°时,y值趋向于无穷。因此规定Y的取值范围与X一致,也为[-20037508.3427892,20037508.3427892],也就是形成了一个正方形。
对应于经纬度的范围就是:
- 经度: [-180, 180]
- 纬度: [-85.051128779,85.051128779]
1.4 EPSG
讨论坐标系不得不提到EPSG,EPSG的英文全称是European Petroleum Survey Group,中文名称为欧洲石油调查组织。这个组织成立于1986年,2005年并入IOGP(International Association of Oil & Gas Producers),中文名称为国际油气生产者协会。EPSG对几乎所有常用的坐标系统都进行了编号,统一了坐标系的表示,于是我们经常会看到使用EPSG编号来指代某一坐标系。
以下是几个常用坐标系的EPSG编号和单位:
坐标系名 | EPSG编号 | 单位 |
---|---|---|
WGS 84 | EPSG:4326 | 度 |
WGS84 Web Mercator | EPSG:3857, EPSG:900913 | 米 |
至于为何WGS84 Web Mercator有两个编号,这里面还是有一段故事的,可以去这里查看。
查询全部的EPSG编号和详细信息请访问EPSG官网。
2 瓦片地图
互联网地图服务,常常通过采用构建瓦片地图的方式,加快用户的访问,减少数据传输量。具体而言,瓦片地图就是对投影后的地图在不同尺度(层)下进行切片,每个尺度得到的地图切片数量不同、表示范围不同、详细程度不同,但是图片的尺寸相同(一般为256*256),最终构成一个“瓦片金字塔“”。根据用户所浏览的区域范围,自动确定所要返回的切片层级,在满足用户查询需求的同时,保证了地图传输的效率。
2.1 瓦片地图的编号
在投影坐标系的选择上,目前主流的地图服务提供商基本都选择的是WGS84 Web Mercator坐标系。但是在如何对投影后的地图进行切片并编号时,不同厂商之间存在较大的差异。
谷歌地图,OpenStreetMap,WMTS
以地图左上角为原点,X轴向右,Y轴向下,从0开始分别进行编号。Z的取值范围为[0, 18],在第z级别,x,y方向的瓦片个数均为:2z个,即x,y取值范围是[0 , 2z-1]。
WMTS较为特殊,WMTS中的TileMatrix对应于z,TileRow对应于y,TileCol对应于x。编号方式和谷歌与OSM相同。
TMS
以地图左下角为原点,X轴向右,Y轴向上,从0开始分别进行编号。Z的编码规则与谷歌地图相同。
z=1时,这两种瓦片的编号如下图所示。
Bing地图
微软Bing地图Z的编码规则与谷歌相同,同一层级的瓦片不用XY两个维度表示,而只用一个整数表示,该整数服从四叉树编码规则(QuadTree)。
百度地图
百度地图的瓦片定义的方式比较独特,原点的位置在经纬度都为0的地方,X向左为正,向右为负;Y向上为正,向下为负。切分的方式不像上述3种方法在每一级进行二等分,而是通过定义每一级的地图分辨率,确定每一级应该划分的行列数。地图分辨率的表达式为:218-z,其含义是每个像素所对应的实际长度。由此,可得每一级应该划分的行列数为:2πR/(256*218-z),其中R为地球的半径,单位是米。
2.2 瓦片编号与经纬度、投影坐标的转换
参考:https://blog.csdn.net/lxxlxx888/article/details/51897838
总结
本文记录了与WebGIS相关的坐标系和瓦片地图的知识,说明了他们直接的相互关系。希望WebGIS开发者有所帮助。