地图瓦片整体介绍

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了地图瓦片整体介绍相关的知识,希望对你有一定的参考价值。

参考技术A 如今互联网地图的地图内容分为两种,一种是栅格地图瓦片,一种是矢量地图瓦片。

栅格地图瓦片是一种比较传统的模式,将矢量数据渲染成为256×256像素大小的图片。前端js地图框架,如 openlayer 和 leaflet ,按一定规则编排显示,如百度地图,高德地图,天地图等。栅格瓦片地图的渲染技术已经成熟,可以实现栅格渲染,矢量渲染两种。参考笔记 mapnik 笔记一: 入门及python接口使用 。

矢量地图瓦片是一种新颖的模式。地图数据会以json等格式分块地传输过去,在浏览器端利用前端框架将地图在显示出来。在这个基础上,你必须懂得 canvas 。整个展示的过程对点线面的渲染有很严格的规定。总体来说,矢量瓦片的数据传输量少,服务器压力小。方便渲染成为各种各样的地图,所以这也是为什么Mapbox首推Mapbox GL的原因,腾讯地图使用矢量渲染的原因。而且现在移动端不断利用矢量瓦片的技术,考虑到导航时候,需要将地图旋转成为伪3D界面。

矢量地图瓦片是未来的发展方向。Mapbox在这方面做了很多功夫,可以参看 它的github 。有什么问题,大家可以留言讨论,因为我也不太清楚,新技术的可行性。

WebGIS中的坐标系和瓦片地图

参考技术A

本文主要介绍坐标系和瓦片地图的相关知识, 他们是进行WebGIS开发的基础。

坐标系分为地理坐标系和投影坐标系,他们的定义如下:
地理坐标系 (Geographic Coordinate System):
    是使用三维球面来定义地球表面位置,以实现通过经纬度对地球表面点位引用的坐标系。包括角度测量单位、本初子午线和参考椭球体三部分。

投影坐标系 (Projection Coordinate System):
    是使用基于X,Y值的坐标系统来描述地球上某个点所处的位置。它由地理坐标系和投影方法两个要素所决定。

    地球表面是崎岖不平的,人们为了精确表示地球表面的位置,引入了 旋转椭球体 的概念。即用一个规则的旋转椭球体去逼近真实的地球表面。一个旋转椭球体的参数主要有以下三个:长半轴、短半轴、扁率。定义了这三个参数,也就唯一确定了一个旋转椭球体。

    定义了椭球体的形状后,还需要确定椭球体的位置。椭球体表面与真实地球表面存在差异,并且在世界的不同地区,这种差异也不尽相同。因此椭球体的定位直接决定了地理坐标与真实位置的误差。椭球体定位就是需要确定 大地基准面 ,从而确定椭球体与地球的相对位置。有以下两类大地基准面:

    确定了旋转椭球体的 形状 位置 ,那么地理坐标系的基础就确定了。接下来需要定义地球上任意一点的地理坐标表示方法。

    地理坐标,就是用经纬度表示地面点位的球面坐标。在大地测量学中,对于地理坐标系统中的经纬度有三种提法:天文经纬度、大地经纬度和地心经纬度。其中使用较多的是大地经纬度,其使用大地坐标(L,B,h)表示地面点在椭球面上的位置三个要素,他们的定义如下:

图示:

    这样就完成了地理坐标系的定义,地球上任意一点都能获得经纬度坐标了。

    在椭球面上表示的地球上物体的坐标,会给实际使用带来一些麻烦。更多的时候我们希望将地物展现在平面上,这时就需要引入投影坐标系的概念。

    在地球椭球面和平面之间建立点与点之间函数关系的数学方法,称为 地图投影
    地图投影的一般公式为:x = F(λ,φ), y = G(λ,φ)
    确定了投影方法后,也就确定了函数F和G,只要知道地面点的经纬度(λ,φ),便可以在投影平面上找到相对应的平面位置(x,y)。

投影方法有以下几类:

    以上两种方法都要进行分带投影。即按一定的间隔选取经线作为投影的中央经线,中央经线两侧一定范围内的地区按所选中央经线进行投影。这样做的目的是减小投影变形,方便在工程中使用。

具体的投影方法请点击小标题查看。

    选择一个地理坐标系,以及一个地图投影方法,就唯一确定了一个投影坐标系,从而可以使用平面坐标表示地球上物体的位置了。

    在Web地图领域,使用最为广泛的坐标系统就是 WGS84 Web Mercator 。谷歌地图、Virtual Earth、Bing Maps、百度地图、Mapabc、ArcGIS Online等都是采用这种坐标系。作为一个投影坐标系,需要两个基本的要素,一个是地理坐标系,还有一个是投影方法。我们分别来看:

    从名字可以看出,WGS84 Web Mercator坐标系采用的地理坐标系是WGS84坐标系,它属于地心坐标系,坐标系的原点位于地球质心,其基本参数如下:

    从名字上可以看出,WGS84 Web Mercator坐标系的投影方法和Mercator(墨卡托)投影有关,但是这个投影方法和不是标准的墨卡托投影。他们之间的区别在于,WGS84 Web Mercator在投影时将地球椭球当做圆球看待,这会导致本来是等角投影的墨卡托投影变得不再等角了,而是近似等角,也就是出现角度变形。

    以赤道为标准纬线,以本初子午线为中央经线,分别得到X轴和Y轴。两者的交点设为原点,规定纬度向北为正,向南为负;经度向东为正,向西为负。

对应于经纬度的范围就是:

    讨论坐标系不得不提到EPSG,EPSG的英文全称是European Petroleum Survey Group,中文名称为欧洲石油调查组织。这个组织成立于1986年,2005年并入IOGP(International Association of Oil & Gas Producers),中文名称为国际油气生产者协会。EPSG对几乎所有常用的坐标系统都进行了编号,统一了坐标系的表示,于是我们经常会看到使用EPSG编号来指代某一坐标系。

以下是几个常用坐标系的EPSG编号和单位:

    至于为何WGS84 Web Mercator有两个编号,这里面还是有一段故事的,可以去 这里 查看。

    查询全部的EPSG编号和详细信息请访问 EPSG官网 。

    互联网地图服务,常常通过采用构建瓦片地图的方式,加快用户的访问,减少数据传输量。具体而言,瓦片地图就是对投影后的地图在不同尺度(层)下进行切片,每个尺度得到的地图切片数量不同、表示范围不同、详细程度不同,但是图片的尺寸相同(一般为256*256),最终构成一个“瓦片金字塔“”。根据用户所浏览的区域范围,自动确定所要返回的切片层级,在满足用户查询需求的同时,保证了地图传输的效率。

    在投影坐标系的选择上,目前主流的地图服务提供商基本都选择的是WGS84 Web Mercator坐标系。但是在如何对投影后的地图进行切片并编号时,不同厂商之间存在较大的差异。

    以地图左上角为原点,X轴向右,Y轴向下,从0开始分别进行编号。Z的取值范围为[0, 18],在第z级别,x,y方向的瓦片个数均为:2 z 个,即x,y取值范围是[0 , 2 z -1]。

    WMTS较为特殊,WMTS中的TileMatrix对应于z,TileRow对应于y,TileCol对应于x。编号方式和谷歌与OSM相同。

    以地图左下角为原点,X轴向右,Y轴向上,从0开始分别进行编号。Z的编码规则与谷歌地图相同。

z=1时,这两种瓦片的编号如下图所示。

    微软Bing地图Z的编码规则与谷歌相同,同一层级的瓦片不用XY两个维度表示,而只用一个整数表示,该整数服从四叉树编码规则(QuadTree)。

    百度地图的瓦片定义的方式比较独特,原点的位置在经纬度都为0的地方,X向左为正,向右为负;Y向上为正,向下为负。切分的方式不像上述3种方法在每一级进行二等分,而是通过定义每一级的 地图分辨率 ,确定每一级应该划分的行列数。地图分辨率的表达式为:2 18-z ,其含义是每个像素所对应的实际长度。由此,可得每一级应该划分的行列数为:2πR/(256*2 18-z ),其中R为地球的半径,单位是米。

参考: https://blog.csdn.net/lxxlxx888/article/details/51897838

    本文记录了与WebGIS相关的坐标系和瓦片地图的知识,说明了他们直接的相互关系。希望WebGIS开发者有所帮助。

以上是关于地图瓦片整体介绍的主要内容,如果未能解决你的问题,请参考以下文章

openlayers3应用:加载百度离线瓦片地图

openlayers应用:加载百度离线瓦片

Arcgis瓦片--数据获取

多时相地图瓦片简单设想

openlayers调用瓦片地图分析

前端瓦片地图加载之塞尔达传说旷野之息