Como las otras herramientas de geoprocesamiento, las herramientas de servidor de geoprocesamiento tienen un conjunto fijo de parámetros que proporcionan a la herramienta la información que necesita para la ejecución. Al utilizar herramientas de servidor asíncronas en una secuencia de comandos, se puede recuperar el resultado por medio del método getOutput del resultado.
En el siguiente ejemplo, la función GetParameterValue se utiliza para obtener un objeto FeatureSet desde una herramienta de servidor. Este objeto FeatureSet contiene el esquema del parámetro de entrada de la herramienta. A continuación, el objeto FeatureSet se carga con una clase de entidad y la herramienta de servidor se ejecuta en el servidor. La secuencia de comandos finaliza al utilizar el método getOutput del objeto de resultado para obtener la salida de la herramienta, que luego se guarda localmente con el método para guardar de 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")
Obtener un resultado de ráster de una herramienta de servidor
Los resultados de ráster se devuelven como Formato de archivo de imagen etiquetado (TIFF). Por defecto, cuando se utiliza getOutput, el TIFF se escribe en la carpeta TEMP del sistema. Para controlar la ubicación del TIFF, establezca el entorno scratchWorkspace en una carpeta.
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)
Obtener una imagen de mapa
Los servicios de geoprocesamiento pueden tener un servicio de mapas de resultado para crear una imagen de mapa digital de resultados de tarea. Los mapas digitales contienen representaciones visuales de datasets geográficos que comunican la información. Los mapas digitales se transportan a través de la Web como imágenes (por ejemplo .jpeg). Una imagen de mapa, byte por byte, contiene mucha más información interpretable por el hombre que las entidades sin procesar en una clase de entidad. Las imágenes de mapa también son manejables: se comprimen fácilmente, se pueden teselar en partes manejables y hay métodos establecidos para trasportarlas y visualizarlas a través de la Web.
Un servicio de mapas de ArcGIS Server crea las imágenes de mapa y son el resultado de publicar un documento de ArcMap (.mxd). Debido a las características de una imagen de mapa, es posible que desee crear una para los resultados de la tarea de geoprocesamiento y transportar la imagen a través de la Web en lugar de transportar el dataset o datasets de resultados. Los servicios de geoprocesamiento pueden tener un servicio de mapas de resultado que ArcGIS Server utiliza para crear imágenes de mapa de los datos de salida.
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")