TileCache & GIS Server Cache
真郁闷,前两天配置的TileCache虽然配好了,但是它切出来的png图竟然不是透明的,空白部分竟然用白色填充,导致最后叠加的图层只能显示最上层的图(因为是不透明的,所以当前的这个图层就把下边的图层覆盖掉了),只能通过设置上边一层图的透明度为半透明的(opacity = 0.5)才可以看得到下边一层的图,但这样一样就给人一种灰秃秃的感觉,很不好。
所以今天重新尝试用ArcGIS Server自带的Cache功能来切图,我是借助于ArcCatalog来实现的切图,最大的弊端就是生成切图的速度极其缓慢,在网上查了一下,即使只切成很小的几个比例级别的瓦片图都得要一两个小时,慢归慢,但最后我发现用这种方式切出来的png格式的图确实是透明的,空白部分也没有被填充,很不错,可美中不足就是速度实在让人难以忍受……
下边就把我收集的部分资料给大家分享一下,也省得自己日后忘了自己曾经还做过这些……
arctoolbox以及arccatalog都可以管理ags cache,那我们可以利用geoprocessing tool编写脚本,实现ags cache的生成、更新。这里需要注意两点:
1.如果客户端要浏览实时数据,并且实时性要求非常高,不建议使用动态更新cache,multi_layer方式更好。
2.如果cache特别大,并且全图的数据、符号经常改变,不建议使用动态更新cache,指定地图局部范围的更新更适合动态更新。
对大数据量的图层做过cache的工程师知道,数据量越大、放大缩小分级越多,生成cache的时间呈指数上升,使用动态更新cache,就需要将更新的时间控制在一定的时间内,如果时间太长就没有意义了,甚至会影响应用。
建立Cache的原理很简单:通过事先把数据按照一定的比例和大小按瓦片的方式生成图片,并保存在ArcGIS Server的cache目录下,当用户请求数据时,如果cache目录下已经有图片,则直接显示,如果没有,则需要到数据取相应范围内的数据。通过这种cache的方式,从而大幅度提高显示效率。
建立cache,
• 可以控制:
– 被缓存的图层
• 所有的还是指定的子集
– 在地图坐标系中图块系统的原点
– 比例尺集合
– 图块大小 (缺省 = 512 x 512)
– 显示精度DPI (缺省 = 96)
– 比例尺、图块大小和DPI控制了每个比例尺下单位地图的象素精度
创建cache后,如何管理呢?其实,cache的目录管理由ArcGIS Server的内部机制进行管理:
• 地图服务有一个相关的地图缓存路径
– 在GIS服务器的缓存路径下的一个子路径
• 通过名称关联地图服务和地图缓存路径
• 地图缓存路径的组织
• Server Cache Directory
• Map Cache Directory (Wyoming, SoCal, …)
• Data Frame (Layers, Study Area, …)
• Layer (_alllayers, roads, …)
• Level (L01, L02, L03, …)
• Row (R00000000, R00000001, …)
• Tiles (C00000000.png, C00000001.png, …)
如图: