来自客户的需求:某省范围创建大比例尺缓存切片的工作已经全部完成,但由于不可抗拒因素,生产缓存切片的原始矢量数据被线性偏移了,有什么办法能够在不重新创建缓存的基础上,能够使得现有切片和偏移后的矢量数据准确叠加,并且地理坐标与偏移后的矢量数据保持一致?
问题分析:站在客户端的角度来分析此问题。客户端绘制切片的过程是,地图缩放或平移后,获得当前屏幕对应的地理坐标范围,通过计算,获得与当前地理范围相交的所有切片的行列号,然后下载并拼接显示。计算的过程可参考《ArcGIS Server的切图原理深入》,《ArcGIS Server 10中的切图/缓存机制深入》。计算的过程中,有三个关键变量:缓存策略(Tiling Scheme)的切图原点(TileOrigin),当前比例尺的分辨率(Resolution)以及当前屏幕的地理范围。可以看出,客户端在加载切片时,后两个变量即当前比例尺的分辨率与客户端当前屏幕的地理范围都是无法改变的,所以我们能做出干预的就是切图原点这个变量了。
解决办法:通过计算比较可以得知,只需修改conf.xml文件,对切图原点(TileOrigin中的X和Y)进行偏移,偏移量和矢量数据的偏移保持一致,即可达到将缓存切片与偏移后的矢量数据准确叠加的目的。由于没有对conf.xml中的SpatialReference信息进行修改,所以地理坐标依然准确(与偏移后保持一致)。注:修改conf.xml中的参数后,需要重启缓存地图服务方可使改动生效。
下图中,绿色的点是原始数据发布的动态地图服务,红色的点是偏移后的数据发布的动态地图服务,多边形底图是经过缓存切片的缓存地图服务。此时未对TileOrigin参数修改。
下图为修改了TileOrigin参数并重启缓存地图服务后的效果。