代码改变世界

ESRI Silverlight API里不支通过ArcGISTiledMapServiceLayer加载Multi-Layer Caches

2012-10-19 21:50  Ferdinand  阅读(1883)  评论(0编辑  收藏  举报

        数据研发部的同事有的时候会切图的时候设置了Multi-Layer Cache,而没有Single Fused Cache,在实施人员去配置地图的时候,数据研发部的同事告诉他这个是切图的,所以他们也就理所当然的选择了ArcGISTiledMapServiceLayer类型,但是在ESRI Silverlight API里,ArcGISTiledMapServiceLayer是不支持加载Multi-Layer Cache的,如果选择了ArcGISTiledMapServiceLayer,系统就会提示提示:


           ArcGISTiledMapServiceLayer does not support Multi-Layer Caches. Use an ArcGISDynamicMapServiceLayer instead or create a single fused cache.

如果有需要在一个服务里查看不同切片图的,那么就要将地图类型选择为ArcGISDynamicMapServiceLayer,这样就可以支持了。

       但是在ArcGIS Server10.1中,ArcGIS Server的Cache制作将不再支持Multi-Layer Cache这种方式,其实想想也是的。因为Multi-Layer Cache这种切图方式切出来的图不但在像素的高度和整个图像的粗糙程度上都要比Single Fused Cache差得多,而且在数据的请求方面也会带来大量的数据请求和数据传输的消耗。

       其实他的原理与ArcGISDynamicMapServiceLayer原理也差不多,都是一些快照。

      Multi-Layer Cache为mxd中的每个层单独生成一层缓存,所以如果你有10层在地图中,就有10个独立的Cache产生。一个Fused Cache则会将这10层融合后生成1个Cache。如果客户端向Multi-Layer Cache请求4个Tile,将会产生40个请求用于获取Multi-Layer Cache,这样就大大降低了性能。

     所以我们一般不鼓励他们使用多层缓存。事实上,多层高速缓存也不支持其他Web客户端时,Flex和JavaScript。在ADFS提供有限的支持 - 类似于Silverlight的生成是一个动态的地图图像的“快照”的层缓存切片。