Google Maps 和 Virtual Earth 等互联网地理使用的地图投影通常称为 Web Mercator 或 Spherical Mercator。 它与传统墨卡托投影的主要区别在于地球被模拟为球体而不是椭球体。
什么是墨卡托投影?
墨卡托(Mercator)投影,又称“等角正轴圆柱投影”,由荷兰制图师墨卡托(Mercator)于1569年制定。假设地球被封闭在一个空心圆柱体中,其赤道为平行于圆柱体。 接触,然后想象地球中心有一盏灯,将球面上的图形投影到圆柱体上,然后将圆柱体展开,这就是用零度标准平行线绘制的“墨卡托投影”(即赤道)世界地图。 从一个球到一个平面,肯定有一个换算公式,这里就不一一列举了。
为什么谷歌选择墨卡托投影?
墨卡托投影的“等角”特性保证了物体的形状不变,正方形的物体投影后不会变成长方形。 “等距”也保证了方向和相互位置的正确性,所以常用于航海和航空,计算人们查询地物的方向不会有误差。
墨卡托投影的“圆柱”特征保证了南北(纬度)和东西(经度)是平行直线并且相互垂直。 并且经线间隔相同,纬度间隔从标准纬线(这里是赤道,或者其他纬度)逐渐增加到两级。
然而,“等角”不可避免地带来了区域的巨大变形,尤其是在两极地区。 很明显,格陵兰岛的面积比实际面积大了N倍。 不过如果是去极地探险或者靠谱的同志,一般都有比较详细的资料,不会来查网络地图的,这个无所谓。
为什么是圆球体而不是椭圆体?
这个说起来简单,只是因为实现方便,计算简单,理论上精度的差异在0.33%以内,尤其是当比例尺比较大,地物比较精细的时候,差异基本可以忽略不计.
Web 墨卡托投影坐标系:
在全世界范围内,以赤道为标准纬线,以本初子午线为中央子午线,两者的交点为坐标原点。 东向北为正,西向南为负。
X轴:由于赤道的半径为6378137米,赤道的周长为2*PI*r = 20037508.3427892,所以X轴的取值范围:[-20037508.3427892,20037508.3427892]。
Y轴:从墨卡托投影的公式可以看出,上图也可以看出,当纬度φ接近两极,即90°时,y值趋于无穷大。 这是因为那些“懒惰的工程师”还将Y轴的取值范围限制在了[-20037508.3427892, 20037508.3427892],做了一个正方形。
懒人的好处,众所周知,提前剪静态图片,提高访问效率。 我只是告诉你为什么会这样。 因此经纬度取值范围,投影坐标系(米)中的范围为:最小值(-20037508.3427892,-20037508.3427892)到最大值(20037508.3427892,20037508.3427892)。
对应的地理坐标系:
按理说地理坐标系是第一个要讲的。 例如,球体还是椭球体是地理坐标系的问题,与墨卡托投影关系不大。 简单地说,投影坐标系(PROJCS)是以米为单位的平面坐标系; 地理坐标系(GEOGCS)是经纬度的椭球坐标系。
经度:这里没问题,全球范围:[-180,180]。
纬度:上面已经知道,纬度不能达到90°。 懒人取-20037508.3427892为平方。 逆向计算得到纬度为85.05112877980659。 因此纬度的取值范围为[-85.05112877980659, 85.05112877980659]。 该地区的其他地区呢? 没关系,企鹅不在乎。
因此,地理坐标系(经纬度)对应的范围为:最小值(-180,-85.05112877980659),最大值(180,85.05112877980659)。 至于Datum,坐标转换等,就不多说了。
相关坐标计算:
关于Google Maps之类的组织方式–map tile pyramid,这个东西我估计要在这里重复一遍,怕没人看。 虽然原理是一样的,但是在针对不同厂商的不同数据源写代码的时候,你会发现可扩展的层数不同,最小层数不同,编码方式也不同,比如Google的QRST ,微软的四叉树,OSGeo的TMS等。
Ground Resolution,地面分辨率,类似于Spatial Resolution(空间分辨率),我们主要关注像素大小表示的形式:用像素(pixel)表示的地面大小(米)。 以Virtual Earth为例,Level为1时,图像尺寸为512*512(4个tile)经纬度取值范围,则赤道空间分辨率为:赤道周长/512。 其他纬度的空间分辨率为纬度圆周长度/512,极北极为 0。 当Level为2时,赤道的空间分辨率为赤道周长/1024,其他纬度的纬度圈长为1024。显然,Ground Resolution取决于两个参数,zoom level Level和纬度latitude,Level决定像素个数,而纬度决定了地面距离的长度。 地面分辨率的公式为,单位:米/像素:
地面分辨率 = (cos(latitude * pi/180) * 2 * pi * 6378137 米) / (256 * 2level 像素)
地图比例尺,即地图的比例尺,地图上的距离与地面上的距离比较,两者的单位通常为米。 在Ground Resolution的计算中,图片的像素大小可以从Level中得到,所以需要换算成以米为单位的距离,这就涉及到DPI(dot per inch),可以理解为类似PPI(每英寸像素)暂时。 即每英寸代表多少像素。 256 * 2level / DPI就是对应的英寸,然后把英寸除以0.0254换算成米。 实际距离还是:cos(latitude * pi/180) * 2 * pi * 6378137米; 所以比例尺的公式是,一般换算成1:XXX,没有单位:
地图比例尺 = 256 * 2level / 屏幕 dpi / 0.0254 / (cos(latitude * pi/180) * 2 * pi * 6378137) = 1 : (cos(latitude * pi/180) * 2 * pi * 6378137 * 屏幕 dpi) / (256 * 2level * 0.0254)
其实Map Scale和Ground Resolution之间是有对应关系的。 毕竟,它们与实际距离有关。 两者的关系是:地图比例尺=1:地面分辨率*屏幕dpi/0.0254米/英寸
“虚拟地球瓦片系统”列出了赤道虚拟地球、等级、像素数、地面分辨率、地图比例尺之间的对应关系。 同时本文也简单介绍了墨卡托投影和以上两个概念。 值得推荐。
另外,在“Addressing Google Maps image tiles”应用中,输入经纬度和缩放级别,可以缩放到相应的Google Maps位置,并可以显示搜索过程的QRST。
如何查看瓦片切片的网格?
对于 GISer,可能需要查看瓦片切片网格来验证瓦片加载的正确性。
当需要查看瓦片切片的网格时,只需在万能地图下载器中勾选“显示网格”即可。
需要注意的是,万能地图下载器中的瓦片编号和等级都是从1开始的,在更正和检查时需要注意。