ArcGIS Server的地图切片技术包含两种模式松散型(exploded)和紧凑型(compact),松散型缓存技术以切片文件的形式保存,每个切片对应相应缓存路径下的一个图片;而后一种形式将地图切片按bundle打包成一个文件,由于磁盘存储占用空间少,易拷贝,调用切片时网络流量少等优势已成为当前地图服务缓存的首选方式,本文就切图的范围进行一些探究。
首先要了解ArcGISServer的切图机制,在特定比例尺下,Server会先生成一个较大范围的supertile,抗锯齿状态下是2048*2048,反之是4096*4096,然后在对该范围内进行切片,例如采用的是抗锯齿,设置的切片大小为256*256像素,那么在一个supertile确定后会切成8*8个切片,生成的切片文件在紧凑模式下存在一个bundle文件里,一个bundle可以保存128*128个切片文件,无论是supertile还是bundle都是从切片原点起算。
也是说,同一个比例尺下,一个bundle下可以保存8*8个抗锯齿supertile,每个supertile可以里要切成8*8个切片;非抗锯齿下一个bundle保存16*16个supertile,每个supertile包含16*16个切片。
为方便理解supertile和bundle的概念,进行如下试验,以一个全国行政区划图为例
1)首先生成地图切片方案,利用Generate Map Server Cache Tiling Scheme工具进行创建
这里面设置的几个重要参数,要切片的工程文档、输出的XML格式切片方案、设计的比例尺等级、DPI参数(默认96)和切片大小(256*256)。
创建完成后可以打开创建的XML文档,查看详细的切片信息,里面包括了空间参考、起算原点、比例尺分级信息等。
现在利用ArcGIS提供的Map Server Cache Tiling Scheme To Polygons工具来创建对应切图模式下的所有supertile。
生成完的所有比例尺下的supertile如下
在其属性表里可以看到包含了切片对应的比例尺,切片级别,行列号和面积等
利用字段计算器为color和label赋值,label的值要显示所在切片的行列号信息,color则是为了标识特定的切片给的颜色标记,默认赋0,特殊标识的单独赋值。
现在我们标注200w的supertile网格图层标记标识出第一行第三列的切片,效果如下
200w比例尺下一个supertile包含2*2个100W比例尺的supertile,
100w下一个切片又包含2*2个50w的supertile,50w下一个supertile包含2*2个25w的supertile。
我们回顾一下,非抗锯齿下,一个supertile为16*16个tile,抗锯齿切片下一个supertile为8*8个tile,一个bundle为128*128个切片。
结合上述例子,非抗锯齿模式下,200w比例尺下的一个supertile包含(2*2)*(2*2)*(2*2)*(16*16)个25W的tile,即128*128个tile。
同理200w比例尺下一个supertile则包含(2*2)*(2*2)*(2*2)*(2*2)*(8*8)个10w比例尺下的tile,即128*128个切片。
总结,
非抗锯齿模式下,N级比例尺的一个supertile = 128 *128个N+3级比例尺的tile;
抗锯齿模式下,N级比例尺的一个supertile = 128*128个N+4级比例尺下的tile;
采用非抗锯齿切片,也就是说我们要生成15级的bundle网格的话,只需要用Map Server Cache Tiling Scheme To Polygons工具生成第12级的supertile网格即可。
采用抗锯齿切片,也就是说我们要生成15级的bundle网格的话,只需要用Map Server Cache Tiling Scheme To Polygons工具生成第11级的supertile网格即可。由刚才试验得出了结论后,对我们基于要素创建缓存提供了有理的指导。通常情况下的切图策略是小比例尺按全图直接切,较小比例尺会按照某个要素范围来切(此时切图使用的是要素的包络矩形范围),而大比例尺下则是按包含网格的要素来切。
同时,要明确的一点概念是Server切图实现机制,在指定要素范围切图时,按顺序处理要素类中的所有feature,所有的服务实例会集体先处理一个feature范围,切出该范围内所有要求比例尺级别的缓存。在10.0开始不再以supertile为服务实例切图的工作单元,而采用bundle为处理单位,即一个实例负责一个bundle范围的切图,也就是说为了充分利用服务实例资源,一个feature范围最好包含N个bundle范围,N稍大于服务实例数,ArcGIS Server提供的Map Server Cache Tiling Scheme ToPolygons很好地解决了要素网格生成的问题。
在地图服务发布后通过MangeMap Server Cache Tiles手动管理切片,指定特定比例尺下的切图范围,可以选择按要素来切片,或者要素的包络矩形来切。