Управление листами кэша картографического сервера (Сервер)

Уровень лицензии:BasicStandardAdvanced

Резюме

Создает и обновляет листы в существующем кэше картографического сервиса или сервиса изображений. Этот инструмент используется для создания новых листов, замены отсутствующих листов, перезаписи устаревших листов и удаления листов.

Использование

Синтаксис

ManageMapServerCacheTiles_server (input_service, scales, update_mode, {num_of_caching_service_instances}, {update_extent}, {area_of_interest}, {wait_for_job_completion})
ПараметрОбъяснениеТип данных
input_service

Картографический сервис или сервис изображений, листы кэша которого вы хотите обновить.

Это строка, содержащая информацию как о сервере, так и о сервисе. Чтобы узнать, как сформировать эту строку, откройте ArcCatalog, выберите свой сервис в дереве каталога и обратите внимание на текст на панели инструментов Местоположение (Location). Затем поменяйте обратные косые черты на прямые, например GIS Servers/arcgis on MYSERVER (admin)/USA.MapServer.

String
scales

Уровни масштаба, на которых вы создадите или удалите листы при запуске инструмента в зависимости от Режима обновления (Update Mode).

Double
update_mode

Режим для обновления кэша.

  • RECREATE_EMPTY_TILESВ этом случае создаются только пустые листы. Существующие листы останутся неизменными.
  • RECREATE_ALL_TILESСуществующие листы будут заменены, а новые листы добавлены, если экстент изменился.
  • DELETE_TILESЛисты будут удалены из кэша. Структура папки кэша не будет удалена. Чтобы удалить весь кэш, включая структуру папок, запустите инструмент Удалить кэш картографического сервера (Delete Map Server Cache).
String
num_of_caching_service_instances
(дополнительно)

Общее количество экземпляров сервиса System/CachingTools, которые вы хотите выделить для работы этого инструмента. Вы можете увеличить Максимальное число экземпляров на компьютер (maximum number of instances per machine) сервиса System/CachingTools с помощью окна Редактор сервисов (Service Editor), доступного через административное подключение к ArcGIS for Server. Убедитесь, что ваши серверы смогут поддерживать выбранное количество экземпляров.

Long
update_extent
(дополнительно)

Прямоугольный экстент, на котором должны быть созданы или удалены листы в зависимости от значения параметра Режим обновления (update_mode). Указывать значения для опции Экстент обновления (update_extent) и для опции Область интереса (area_of_interest) не рекомендуется. Если значения приведены для обоих параметров, будет использоваться значение опции Область интереса (area_of_interest).

Extent
area_of_interest
(дополнительно)

Ограничивает ту область интереса, где листы будут созданы или удалены. Это может быть класс объектов или функция, интерактивно определенная в ArcMap. Этот параметр полезен, если вы хотите управлять листами для областей неправильной формы. Он также полезен в ситуациях, когда вы хотите выполнить предварительное кэширование каких-то районов и оставить менее посещаемые области некэшированными.

Если не указать значение этого параметра, по умолчанию используется полный экстент карты.

Feature Set
wait_for_job_completion
(дополнительно)

Этот параметр позволяет следить за ходом задания кэширования, выполняемого на сервере.

  • WAITЭтот инструмент продолжит работать в ArcGIS for Desktop, в то время как задание кэширования выполняется в ArcGIS for Server или ArcGIS Online. С помощью этой опции вы можете запросить подробные отчеты о ходе процесса в любое время и просматривать сообщения геообработки по мере их появления. Это является опцией по умолчанию. Рекомендуется использовать эту опцию в скриптах Python.
  • DO_NOT_WAITЭтот инструмент геообработки отправит задание на сервер, что позволит выполнять другие задачи геообработки на ArcGIS for Desktop или даже закрыть ArcGIS for Desktop. Эта опция используется, когда вы хотите построить кэш автоматически в момент публикации сервиса. Вы также можете установить эту опцию на любом другом создаваемом кэше. Чтобы отслеживать статус задания кэширования, откройте ArcGIS for Desktop, щелкните правой кнопкой мыши сервис в окне Каталог (Catalog) и выберите Посмотреть статус кэша (View Cache Status). Вы также можете использовать URL, указанный в сообщении результата инструмента.Эта опция недоступна, если файловой базы геоданных Status.gdb нет в директории кэша сервиса.
Boolean

Пример кода

Пример 1

Создание или обновление всех листов в кэше с помощью опции RECREATE_ALL_TILES

# Name: ManageMapServerCacheTiles.py
# Description: The following stand-alone script demonstrates how to Recreate all 
#               cache tiles for 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 = ""
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"

Параметры среды

Этот инструмент не использует параметры среды геообработки

Связанные темы

Информация о лицензировании

ArcGIS for Desktop Basic: Да
ArcGIS for Desktop Standard: Да
ArcGIS for Desktop Advanced: Да
9/11/2013