WebGIS常用地图投影与地图打印

WebGIS常用地图投影详解

地图投影的分类很多,世界上目前主流地图都是采用的Web墨卡托投影方式(国际组织称其为3857或900913投影),国内高德和百度地图也是采用的Web墨卡托的投影方式,除了Web墨卡托之外,经纬度投影(简称4326投影)也是比较常用。在进行WebGIS开发的过程中,经常会遇到地理底图basemap和叠加图层overlayer坐标系统不一致的问题,下面对EPSG:3857、EPSG:4326两种地图投影坐标系进行详解。

1.坐标系统分类

坐标系(地理坐标系或投影坐标系)为定义真实世界的位置提供了框架。使用坐标系最关键的问题有两个:一是要了解使用的是何种投影;二是将正确的坐标系信息与数据集相关联。坐标系有两种类型 :地理坐标系和投影坐标系。

GIS 中使用两种常用的坐标系类型:

  • 全局坐标系或球坐标系,例如经纬度。这些坐标系通常称为地理坐标系。
  • 基于横轴墨卡托、亚尔勃斯等积或罗宾森等地图投影的投影坐标系,这些地图投影(以及其他多种地图投影模型)提供了各种机制将地球球面的地图投影到二维笛卡尔坐标平面上。投影坐标系有时称为地图投影。

注:我们常用的经纬度投影(4326)就是一种地理坐标系(球面坐标系),而web墨卡托投影(3857)则是一种投影坐标系(平面坐标系)

以下列出常用的坐标系

  • 地理坐标系:GCS_WGS_1984:WKID: 4326 权限: EPSG
  • 投影坐标系:WGS_1984_Web_Mercator_Auxiliary_Sphere:WKID: 3857 权限: EPSG ,如果是ESRI内部使用的话,WKID就变成102100

2.Web墨卡托投影(3857)

墨卡托投影(Mercator Projection),又名“正轴等角圆柱投影”,荷兰地图学家墨卡托(Mercator)在1569年拟定,假设地球被围在一个中空的圆柱里,其赤道与圆柱相接触,然后再假想地球中心有一盏灯,把球面上的图形投影到圆柱体上,再把圆柱体展开,这就是一幅标准纬线为零度(即赤道)的“墨卡托投影”绘制出的世界地图。

web墨卡托投影示意图

如上图所示,web墨卡托投影得到的平面是一个正方形,赤道作为标准纬线,本初子午线作为中央经线,两者交点为坐标原点,向东向北为正,向西向南为负。南北极在地图的正下、上方,而东西方向处于地图的正右、左。

由于web墨卡托投影将地球视为一个正球体而非椭球体,赤道半径为 6378137.0米,赤道周长为 2*PI*r = 2*20037508.3427892,由此可以推算出web墨卡托投影的坐标范围为:X轴 [-20037508.3427892, 20037508.3427892],Y轴 [-20037508.3427892, 20037508.3427892]。

值得注意的是,web墨卡托投影在两极附近是趋于无限值得,因此它并没完整展现整个世界。web墨卡托投影对应的地理经度的取值范围是[-180,180],而通过纬度取值范围为[20037508.3427892,20037508.3427892]反计算可得到纬度值为85.05112877980659。因此纬度取值范围是[-85.05112877980659,85.05112877980659]。因此,web墨卡托投影在地理坐标系(经纬度)中对应的范围是:最小地理坐标(-180,-85.05112877980659),最大地理坐标(180, 85.05112877980659)。即web墨卡托投影在Y轴方向带来0.33%的误差

3.经纬度投影(4326)

不同于web墨卡托投影的平面坐标范围,经纬度投影采取地理坐标系,因此坐标范围为:经度(-180,180)、纬度(-90,90),没有出现空间上的损失。如果按照地理坐标系(lon,lat)的方式直接将地球展绘在平面上,由于经度范围(-180,180)是纬度范围(-90,90)的两倍,因此在平面上可以得到一个宽高比为2:1的矩形,与web墨卡托投影的正方形平面不同。

4.栅格瓦片与地图投影

在WebGIS开发中,第一步就是利用前端地图js框架定义空间参考(坐标系),并调用地理底图(basemap),而地理底图往往采用栅格瓦片地图(最典型的是WMTS)的形式进行调用,由于WMTS在服务切片生成时便选定了对应的坐标系统,因此我们需要在调用时认清框架使用的坐标系是否与WMTS服务保持一致。

值得注意的是,标准的OGC-WMTS默认采用的空间参考为EPSG:3857(Web墨卡托),因此诸多webgis框架默认的瓦片地图类默认的也是Web墨卡托投影(如arcgis的WebTiledLayer)。如果发布的WMTS服务是采用EPSG:4326等其他类型的投影,则需要人为地去调整瓦片加载配置,以完成WMTS图层的加载。这里以天地图的EPSG:4326投影的WMTS服务为例,解释瓦片配置信息。

var tileInfo = new TileInfo({

dpi: 90.71428571427429,

rows : 256,

cols : 256,

compressionQuality : 0,

origin : {

x : -180,

y : 90

},

spatialReference : {

wkid : 4326

},

lods : [

{level : 2,levelValue: 2, resolution : 0.3515625, scale : 147748796.52937502},

{level : 3,levelValue: 3, resolution : 0.17578125, scale : 73874398.264687508},

{level : 4,levelValue: 4,resolution : 0.087890625, scale : 36937199.132343754},

{level : 5,levelValue: 5, resolution : 0.0439453125, scale : 18468599.566171877},

{level : 6,levelValue: 6, resolution : 0.02197265625, scale : 9234299.7830859385},

{level : 7,levelValue: 7, resolution : 0.010986328125, scale : 4617149.8915429693},

{level : 8,levelValue: 8, resolution : 0.0054931640625, scale : 2308574.9457714846},

{level : 9,levelValue: 9, resolution : 0.00274658203125, scale : 1154287.4728857423},

{level : 10,levelValue: 10, resolution : 0.001373291015625, scale : 577143.73644287116},

{level : 11,levelValue: 11, resolution : 0.0006866455078125, scale : 288571.86822143558},

{level : 12,levelValue: 12, resolution : 0.00034332275390625, scale : 144285.93411071779},

{level : 13,levelValue: 13, resolution : 0.000171661376953125, scale : 72142.967055358895},

{level : 14,levelValue: 14, resolution : 8.58306884765625e-005, scale : 36071.483527679447},

{level : 15,levelValue: 15, resolution : 4.291534423828125e-005, scale : 18035.741763839724},

{level : 16,levelValue: 16, resolution : 2.1457672119140625e-005, scale : 9017.8708819198619},

{level : 17,levelValue: 17, resolution : 1.0728836059570313e-005, scale : 4508.9354409599309},

{level : 18,levelValue: 18, resolution : 5.3644180297851563e-006, scale : 2254.4677204799655},

{ level: 19,levelValue: 19, resolution: 2.68220901489257815e-006, scale: 1127.23386023998275 },

{ level: 20,levelValue: 20, resolution: 1.341104507446289075e-006, scale: 563.616930119991375 }

]

});

5.地图投影与地图打印

在WebGIS开发过程中,针对制图结果我们往往需要提供地图打印的功能,地图打印主要分为基于地图服务器的后端打印和基于HTML5的前端打印两种。前者多依靠arcgis server、geoserver等地图服务器进行打印,这里就涉及到坐标系的问题,常常存在地图服务可以正常显示却无法正确打印的问题;而后者则是面向客户端“所见即所得”的打印,只要地图能展示成果,便可以完成打印。下面以最常用的arcgis webgis体系为例进行地图打印的总结。

这里主要阐述地理底图(瓦片地图服务)的打印问题,针对瓦片地图服务,arcgis api for js 3.x 主要提供了两种图层类:ArcGISTiledMapServiceLayer和WebTiledLayer。

  • ArcGISTiledMapServiceLayer:接受使用arcgis server发布的esri瓦片地图服务,只需要传入arcgis server相应的服务地址即可,这类瓦片地图服务多使用4326/4490和3857两种空间参考,经过试验发现这类图层均可以在arcgis server中正常打印。
  • WebTiledLayer:接受网络环境下其他来源的瓦片地图服务(如天地图,多为WMTS),这里需要传入对应服务地址和域名等信息。经过实验发现,3857投影坐标系下的WMTS服务可以直接调用WebTiledLayer进行展示,并且打印正常;而4326等地理坐标系下的WMTS服务则需要人为配置瓦片加载信息以覆盖默认配置,这样调用WebTiledLayer才能正确展示地图,但在打印时则会造成打印范围和比例尺偏差的问题,无法正确打印。这可能是由于在arcgis api设计WebTiledLayer类时,默认支持的是3857投影,虽然人为改变瓦片加载配置参数可以正常显示4326/4490瓦片地图,但在打印时则没有正确传入覆盖的配置参数,导致无法正确打印。

相关参考:https://blog.csdn.net/xiaohan2826/article/details/49510229

https://blog.csdn.net/liuxu841911548/article/details/78569519

http://www.cnblogs.com/suyanteng/p/4895132.html

 

你可能感兴趣的:(WebGIS,地图投影,地图打印)