Использование сервисов геообработки в Python

Как и другие инструменты геообработки, серверные инструменты геообработки имеют фиксированный набор параметров, которые обеспечивают инструмент необходимой информацией. При использовании асинхронных серверных инструментов в скрипте, выходные данные могут быть получены с помощью применяемого в инструменте Результат (Result) метода Получить выходные данные (getOutput).

ПодсказкаПодсказка:

Функция Является синхронным (IsSynchronous) может быть использована для определения режима работы инструмента: синхронного или асинхронного. Если инструмент является синхронным, результат возвращается автоматически, но, до завершения работы инструмента нельзя предпринимать никаких действий.

В следующем примере, функция Получить значение параметра (GetParameterValue) используется для получения объекта Набор объектов (FeatureSet) из серверного инструмента. Объект Набор объектов (FeatureSet) содержит схему входных параметров инструмента. Затем, объект Набор объектов (FeatureSet) загружается в класс пространственных объектов, а серверный инструмент выполняется на сервере. Скрипт заканчивается методом Получить выходные данные (getOutput), использующимся для получения выходных данных, которые затем сохраняются локально с помощью метода сохранения объекта Набор объектов (FeatureSet).

import arcpy
import time

# Add a toolbox from a server
#
arcpy.ImportToolbox("http://flame7/arcgis/services;GP/BufferByVal", "mytools")

# Use GetParameterValue to get a featureset object with the default 
#   schema of the first parameter of the tool 'bufferpoints'
#
inFeatureSet = arcpy.GetParameterValue("bufferpoints", 0)

# Load a shapefile into the featureset
#
inFeatureSet.load("c:/base/roads.shp")

# Run a server tool named BufferPoints with featureset created above
#
result = arcpy.BufferPoints_mytools(inFeatureSet, "5 feet")

# Check the status of the result object every 0.2 seconds until it has a value 
#    of 4 (succeeded) or greater
#
while result.status < 4:
    time.sleep(0.2)

# Get the output FeatureSet back from the server and save to a local geodatabase
#
outFeatSet = result.getOutput(0)
outFeatSet.save("c:/temp/base.gdb/towers_buffer")

Получение результата растрового типа из серверного инструмента

Результат в виде растра возвращается в формате Tagged Image File Format (TIFF). По умолчанию, при использовании метода Получить выходные данные (getOutput), файл TIFF записываются в папку TEMP вашей системы. Для управления местоположением файла TIFF необходимо задать соответствующую папку в качестве параметра среды scratchWorkspace.

import arcpy 
import time

# Set the scratchworkspace to a folder.
#
arcpy.env.scratchWorkspace = "c:/temp/rasteroutput"

# Add a toolbox from a server
#
arcpy.ImportToolbox("http://flame7/arcgis/services;SlopeByVal", "mytools")

dem = "c:/dems/k_ne_g"

# Run a server tool named RunSlope
#
result = arcpy.RunSlope_mytools(dem)

# Check the status of the result object every 0.2 seconds until it has a value 
#    of 4 (succeeded) or greater
#
while result.status < 4:
    print result.status
    time.sleep(0.2)

# Raster output will be written to the scratchworkspace    
#
outTIFF = result.getOutput(0)

Получение изображения карты

Сервисы геообработки могут иметь результат в виде сервиса карты, что позволяет создать картографическое изображение с результатами выполненной задачи. Цифровые карты содержат визуальное представление географических наборов данных. Цифровые карты передаются через интернет в виде изображений (таких как .jpeg). Изображение карты содержит более понятную для человека информацию, чем необработанные объекты в классе пространственных объектов. Изображениями карты также можно управлять — они легко сжимаются, их можно соединять в управляемые блоки, кроме того, имеются методы их транспортировки и просмотра через интернет.

Изображения карты создаются с помощью картографического сервиса ArcGIS for Server и являются результатом публикации документа ArcMap (.mxd). Учитывая характеристики изображения карты, может быть удобнее создать изображение по результатам работы инструмента геообработки и передать его через интернет, чем передавать полученный набор или наборы данных. Сервисы геообработки могут иметь результат в виде картографического сервиса, используемого ArcGIS for Server для создания изображений карты по выходным данным.

import arcpy
import time
import urllib

# Add a toolbox from a server
#
arcpy.ImportToolbox("http://flame7/arcgis/services;GP/BufferByVal", "mytools")

# Use GetParameterValue to get a featureset object with the default schema of the 
#   first parameter of the tool 'bufferpoints'
#
inFeatureSet = arcpy.GetParameterValue("bufferpoints", 0)

# Load a shapefile into the featureset
#
inFeatureSet.load("c:/base/roads.shp")

# Run a server tool named BufferPoints with featureset created above
#
result = arcpy.BufferPoints_mytools(inFeatureSet, "5 feet")

# Check the status of the result object every 0.2 seconds until it has a value 
#    of 4 (succeeded) or greater
#
while result.status < 4:
    time.sleep(0.2)
    print result.status

# Return a map service
#
mapimage = result.getMapImageURL(0)

# Use Python's urllib module's urlretrieve method to copy the image locally
#
urllib.urlretrieve(mapimage, "c:/base/road_buffer.jpg")
9/11/2013