定义
地图切片:采用预生成的方法存放在服务器端,然后根据用户提交的不同请求,把相应的地图瓦片发送给客户端的过程,它是一种多分辨率层次模型,从瓦片金字塔底层到顶层,分辨率越来越低,但表示的地理范围不变。
地图缓存:又称地图瓦片,是一个包含了不同比例尺下整个地图范围的地图切片的目录,即一个缓存的地图服务就是能够利用静态图片来快速地提供地图的服务。
优缺点
1)速度快,预先配色,显示效果佳,满足高并发访问,适合做底图。
2)瓦片地图缓存非常高效,如果你曾经查看过某一区域的瓦片,当你再次查看该区域的瓦片时,浏览器可能使用之前缓存的相同的瓦片,而不用重新下载一次。
3)瓦片地图可以渐进加载。中心区域的瓦片可能优先于边缘区域的瓦片加载,你可以移动或定位某一点,即使当前地图边缘区域还未加载。
4)简单易用。所以很容易在服务器、网络、桌面或移动设备上实现技术集成。
5)需要额外占用磁盘空间,需要预先生成切片,无法自定义地图。
原理
在进行切片之前首先要确定切图的起点(Tiling scheme origin point)、图片宽度和高度,设置起点(WGS84下默认是(-400,400))的目的在于保证同一坐标系下的切片地图可以完美的叠加在一起。
在默认的Tiling scheme origin下和图片大小的情况下进行地图切片,可以根据用户设置的比例尺来计算地图数据在整个网格中的行列号,计算公式如下:
col=(int)Math.floor((point.x1-this.x1)/256/plottingResolution); row=(int)Math.floor((Math.abs(point.y1-this.y1))/256/plottingResolution);
其中point是当前坐标,this是origin点坐标,plottingResolution指当前Level的地图的地图分辨率。
如果要计算plottingResolution,可以根据用户输入的levelScale得到当前条件下的地图分辨率:
Scale=1:(96*2*Math.PI*6378137*resolution/360/0.0254);
主要概念
1) 四至(Extent)和原点(Origin)
2)切片的分辨率和比例尺
比例尺:图上一单位长度代表实际多少长度单位;分辨率:屏幕一像素(px)代表实际多少单位,实际单位按照地图坐标而定。分辨率与dpi(每英寸的像素数)有关、与地图单位有关。
两者之间的转换关系:
1、如果地图单位是米,dpi=96 1英寸=2.54厘米;1英寸=96像素;最终换算的单位是米;
Scale=1:(96*Resolution/0.0254);
2、如果地图单位是度(地理坐标系是WGS84),dpi为96,1度约等于111194.872221777米;
Scale=1:(96*2*Math.PI*6378137*Resolution/360/0.0254);
切片分类
1)矢量切片(详情)
是一种利用协议缓冲(Protocal Buffers)技术的紧凑的二进制格式用来传递信息。当渲染地图时矢量切片使用一系列存储的内部数据进行制图。被组织到矢量切片的图层比如(水、道路、区域等),每一层都有包含几何图形和可变属性的独立要素。通俗地讲,就是将矢量数据以建立金字塔的方式,像栅格切片那样分割成一个个描述性文件,以GeoJson格式或者PDF等自定义格式组织,然后在前端根据显示需要按需请求不同的矢量瓦片数据进行Web绘图
常见的格式有GeoJson、TopoJson、PDF(ArcGIS格式)、KML、GeoRSS等等。
2)栅格切片
注意事项
注意切片等级的设定,如果生成的级别太高,等待时间非常漫长。以ArcGIS Server切片服务为例,每一级相对上一级是 4 倍的关系,每一级是将上一级一个切片再分成大小一致的四个切片,也就是说每一级生成的切片数将是 4 的 n 次幂。
不同平台的切片方式
ArcGIS:ArcGIS Desktop、ArcGIS Server、ArcGIS API For JS/Flex
开源GIS:MapServer/GeoServer、Udig、PostGIS、openLayers