Управление листами кэша картографического сервера (Сервер)
Краткая информация
Создает и обновляет листы в существующем кэше картографического сервиса или сервиса изображений. Этот инструмент используется для создания новых листов, замены отсутствующих листов, перезаписи устаревших листов и удаления листов.
Использование
- Прежде чем использовать этот инструмент, убедитесь, что схема листов была определена для картографического сервиса. Создать схему листов можно во вкладке Кэширование (Caching) в окне Редактор сервисов (Service Editor) или с помощью инструмента Построить кэш картографического сервера (Create Map Server Cache).
Этому инструменту может потребоваться много времени на запуск для кэшей, охватывающих большой географический экстент или очень крупные масштабы карты. Если этот инструмент будет отменен, создание листов остановится, но существующие листы не удалятся. Это означает, что вы можете отменить этот инструмент, если у вас не хватит времени, и снова запустить его позже на том же кэше, используя режим обновления RECREATE_EMPTY_TILES.
Синтаксис
Параметр | Объяснение | Тип данных |
input_service | Картографический сервис или сервис изображений, листы кэша которого вы хотите обновить. Это строка, содержащая информацию как о сервере, так и о сервисе. Чтобы узнать, как сформировать эту строку, откройте ArcCatalog, выберите свой сервис в дереве каталога и обратите внимание на текст на панели инструментов Местоположение (Location). Затем поменяйте обратные косые черты на прямые, например GIS Servers/arcgis on MYSERVER (admin)/USA.MapServer. | String |
scales |
Уровни масштаба, на которых вы создадите или удалите листы при запуске инструмента в зависимости от Режима обновления (Update Mode). | Double |
update_mode |
Режим для обновления кэша.
| String |
num_of_caching_service_instances (дополнительно) |
Общее количество экземпляров сервиса System/CachingTools, которые вы хотите выделить для работы этого инструмента. Вы можете увеличить Максимальное число экземпляров на компьютер (maximum number of instances per machine) сервиса System/CachingTools с помощью окна Редактор сервисов (Service Editor), доступного через административное подключение к ArcGIS for Server. Убедитесь, что ваши серверы смогут поддерживать выбранное количество экземпляров. | Long |
area_of_interest (дополнительно) |
Ограничивает ту область интереса, где листы будут созданы или удалены. Это может быть класс объектов или функция, интерактивно определенная в ArcMap. Этот параметр полезен, если вы хотите управлять листами для областей неправильной формы. Он также полезен в ситуациях, когда вы хотите выполнить предварительное кэширование каких-то районов и оставить менее посещаемые области некэшированными. Если не указать значение этого параметра, по умолчанию используется полный экстент карты. | Feature Set |
update_extent (дополнительно) |
Прямоугольный экстент, на котором должны быть созданы или удалены листы в зависимости от значения параметра Режим обновления (update_mode). Указывать значения для опции Экстент обновления (update_extent) и для опции Область интереса (area_of_interest) не рекомендуется. Если значения приведены для обоих параметров, будет использоваться значение опции Область интереса (area_of_interest). | Extent |
wait_for_job_completion (дополнительно) | Этот параметр позволяет следить за ходом задания кэширования, выполняемого на сервере.
| Boolean |
Пример кода
Пример 1
Создание или обновление всех листов в кэше с помощью опции RECREATE_ALL_TILES
# Name: ManageMapServerCacheTiles.py
# Description: The following stand-alone script demonstrates how to Recreate all
# cache tiles for the scales in the cache tiling scheme.
# Requirements: os, sys, time and traceback modules
# Any line that begins with a pound sign is a comment and will not be executed
# Empty quotes take the default value.
# To accept arguments from the command line replace values of variables to
# "sys.argv[]"
# Import system modules
import arcpy
from arcpy import env
import os, sys, time, datetime, traceback, string
# Set environment settings
env.workspace = "C:/data"
# List of input variables for map service properties
connectionFile = r"C:\Users\<username>\AppData\Roaming\ESRI\Desktop10.1\ArcCatalog"
server = "arcgis on MyServer_6080 (publisher)"
serviceName = "Rainfall.MapServer"
inputService = connectionFile + "\\" + server + "\\" + serviceName
scales = [500000,250000,125000,64000]
numOfCachingServiceInstances = 2
updateMode = "RECREATE_ALL_TILES"
areaOfInterest = ""
waitForJobCompletion = "WAIT"
updateExtents = ""
currentTime = datetime.datetime.now()
arg1 = currentTime.strftime("%H-%M")
arg2 = currentTime.strftime("%Y-%m-%d %H:%M")
file = r'C:/data/report_%s.txt' % arg1
# print results of the script to a report
report = open(file,'w')
try:
starttime = time.clock()
result = arcpy.ManageMapServerCacheTiles_server(inputService, scales,
updateMode,
numOfCachingServiceInstances,
areaOfInterest, updateExtents,
waitForJobCompletion)
finishtime = time.clock()
elapsedtime= finishtime - starttime
#print messages to a file
while result.status < 4:
time.sleep(0.2)
resultValue = result.getMessages()
report.write ("completed " + str(resultValue))
print "Created cache tiles for given schema successfully for "
+ serviceName + " in " + str(elapsedtime) + " sec \n on " + arg2
except Exception, e:
# If an error occurred, print line number and error message
tb = sys.exc_info()[2]
report.write("Failed at step 1 \n" "Line %i" % tb.tb_lineno)
report.write(e.message)
report.close()
print "Created Map server Cache Tiles "
Пример 2
Обновление пустых листов для некоторых масштабов с помощью опции RECREATE_EMPTY_TILES
# Name: ManageMapServerCacheTiles.py
# Description: The following stand-alone script demonstrates how to Recreate
# empty tiles for one of the default number of scales in the cache
# tiling scheme.
# Requirements: os, sys, time and traceback modules
# Any line that begins with a pound sign is a comment and will not be executed
# Empty quotes take the default value.
# To accept arguments from the command line replace values of variables to
# "sys.argv[]"
# Import system modules
import arcpy
from arcpy import env
import os, sys, time, datetime, traceback, string
# Set environment settings
env.workspace = "C:/data"
# List of input variables for map service properties
connectionFile = r"C:\Users\<username>\AppData\Roaming\ESRI\Desktop10.1\ArcCatalog"
server = "arcgis on MyServer_6080 (publisher)"
serviceName = "Rainfall.MapServer"
inputService = connectionFile + "\\" + server + "\\" + serviceName
scales = [500000,250000,125000,64000]
numOfCachingServiceInstances = 2
updateMode = "RECREATE_EMPTY_TILES"
areaOfInterest = ""
waitForJobCompletion = "WAIT"
updateExtents = ""
cacheDir = "c:\\arcgisserver\\arcgiscache\\"
currentTime = datetime.datetime.now()
arg1 = currentTime.strftime("%H-%M")
arg2 = currentTime.strftime("%Y-%m-%d %H:%M")
file = 'C:/data/report_%s.txt' % arg1
# print results of the script to a report
report = open(file,'w')
# use "scales[0]","scales[-1]","scales[0:3]"
try:
starttime = time.clock()
result = arcpy.ManageMapServerCacheTiles_server(inputService, scales[-1],
updateMode, numOfCachingServiceInstances,
areaOfInterest, updateExtents,
waitForJobCompletion)
finishtime = time.clock()
elapsedtime = finishtime - starttime
## print messages to a file
while result.status < 4:
time.sleep(0.2)
resultValue = result.getMessages()
report.write ("completed " + str(resultValue))
print "Created cache tiles for scale =" + str(scales[-1]) + "for "
+ serviceName + "\n at " + cacheDir + " in " + str(elapsedtime)
" sec \n on " + arg2
except Exception, e:
# If an error occurred, print line number and error message
tb = sys.exc_info()[2]
report.write("Failed at step 1 \n" "Line %i" % tb.tb_lineno)
report.write(e.message)
report.close()
print "Rereated Map server Cache Tiles for scale = " + str(scaleValues[-1])
Пример 3
Обновление листов с использованием Области интереса
# ManageMapServerCacheTiles example for ArcGIS Server 10.1(stand-alone script)
# Name: ManageMapServerCacheTiles.py
# Description: The following stand-alone script demonstrates how to Recreate all
# tiles using given feature class.
# Requirements: os, sys, time and traceback modules
# Author: ESRI
# Any line that begins with a pound sign is a comment and will not be executed
# Empty quotes take the default value.
# To accept arguments from the command line replace values of variables to
# "sys.argv[]"
# Import system modules
import arcpy
from arcpy import env
import os, sys, time, datetime, traceback, string
# Set environment settings
env.workspace = "C:/data"
# List of input variables for map service properties
connectionFile = r"C:\Users\<username>\AppData\Roaming\ESRI\Desktop10.1\ArcCatalog"
server = "arcgis on MyServer_6080 (publisher)"
serviceName = "Rainfall.MapServer"
inputService = connectionFile + "\\" + server + "\\" + serviceName
scales = [500000,250000,125000,64000]
numOfCachingServiceInstances = 2
updateMode = "RECREATE_ALL_TILES"
areaOfInterest = "C:/data/shp/CaTxFlMaMin.shp"
waitForJobCompletion = "WAIT"
updateExtents = ""
currentTime = datetime.datetime.now()
arg1 = currentTime.strftime("%H-%M")
arg2 = currentTime.strftime("%Y-%m-%d %H:%M")
file = r'C:/data/report_%s.txt' % arg1
# print results of the script to a report
report = open(file,'w')
# use "scales[0]","scales[-1]","scales[0:3]"
try:
starttime = time.clock()
result = arcpy.ManageMapServerCacheTiles_server(inputService, scales[-1],
updateMode,
numOfCachingServiceInstances,
areaOfInterest, updateExtents,
waitForJobCompletion)
finishtime = time.clock()
elapsedtime = finishtime - starttime
#print messages to a file
while result.status < 4:
time.sleep(0.2)
resultValue = result.getMessages()
report.write ("completed " + str(resultValue))
print "Created cache tiles for scale =" + str(scales[-1]) + "for "
+ serviceName + "at " + cacheDir + "\n using specified feature class "
areaOfInterest + " in " + str(elapsedtime) + " sec \n on " + arg2
except Exception, e:
# If an error occurred, print line number and error message
tb = sys.exc_info()[2]
report.write("Failed at \n" "Line %i" % tb.tb_lineno)
report.write(e.message)
report.close()
print "Rereated Map server Cache Tiles"
print "for scale = " + str(scaleValues[-1]) + " using area of Interest"