提升ArcGIS Server访问速度最佳的方式是Cache,将所有图层切片保存在服务器,客户端请求时直接访问cache好的图片,这里分为两种情况,一是所有图层都做cache,二是部分图层做cache,部分图层仍通过ags服务生成,即multi_layer,它们可能会经常被更新(基于b/s浏览器端的更新,或在c/s客户端更新,或通过mobile无线移动的更新),这样做虽然可以从一定程度上解决访问速度问题,但在有些情况下,对地图的实时性要求不是非常高,或业务并不需要经常编辑部分图层,那么我们可以通过定时更新
cache的方式,让客户端访问的总是已经cache好的地图,既保证客户端浏览速度最大化,又满足系统一定的实时性要求。
我们知道,arctoolbox以及arccatalog都可以管理ags cache,那我们可以利用geoprocessing tool编写脚本,实现ags cache的生成、更新。这里需要注意两点:
1.如果客户端要浏览实时数据,并且实时性要求非常高,不建议使用动态更新cache,multi_layer方式更好。
2.如果cache特别大,并且全图的数据、符号经常改变,不建议使用动态更新cache,指定地图局部范围的更新更适合动态更新。
对大数据量的图层做过cache的工程师知道,数据量越大、放大缩小分级越多,生成cache的时间呈指数上升,使用动态更新cache,就需要将更新的时间控制在一定的时间内,如果时间太长就没有意义了,甚至会影响应用。
Python脚本编写比较简单:
#
This script updates all tiles in an ArcGIS Server 9.2 map cache
#
Access the geoprocessing tools
import
arcgisscripting
gp
=
arcgisscripting.create()

#
Set up all of the variables for the update tool
server_name
=
"
myserver1
"
object_name
=
"
Precipitation
"
data_frame
=
"
Layers
"
layers
=
""
constraining_extent
=
""
scales
=
"
32000000;16000000;8000000;4000000;2000000
"
update_mode
=
"
Recreate All Tiles
"
thread_count
=
"
2
"
antialiasing
=
"
NONE
"

#
Run the Update Map Server Cache tool
try
:
print
'
Starting Cache Update
'
gp.UpdateMapServerCache(server_name, object_name, data_frame, layers, constraining_extent, scales, update_mode, thread_count, antialiasing)
print
'
Finished Cache Update
'

#
Get the error messages if the tool fails
except
:
gp.AddMessage(gp.GetMessages(
2
))
print
gp.GetMessages(
2
)
(本文已被浏览 次) | | |