Cómo utilizar conjuntos de entidades y conjuntos de registros

Los objetos de FeatureSet son representaciones ligeras de una clase de entidad. Son elementos de datos especiales que no sólo contienen esquemas (tipo de geometría, campos, referencia espacial) sino también datos, incluida la propia geometría. Los objetos de RecordSet son similares pero se los puede comparar con una tabla. Cuando se utilizan en una herramienta de secuencia de comandos, los conjuntos de entidades y los conjuntos de registros se pueden utilizar para definir entidades y registros interactivamente.

NotaNota:

Las herramientas de servidor se comunican mediante conjuntos de entidades y conjuntos de registros, lo que significa que los datos se deben crear con estos objetos o cargados en ellos al utilizar las herramientas del servidor.

Las clases de FeatureSet y RecordSet tienen estos mismos dos métodos.

Propiedad

Explicación

carga

Importe una clase de entidad al objeto de FeatureSet.

guardar

Exporte a una clase de entidad de geodatabase o un shapefile.

Clase de FeatureSet

Propiedad

Explicación

carga

Importe una clase de entidad al objeto de RecordSet.

guardar

Exporte a una tabla de geodatabase o un archivo dBASE.

Clase de RecordSet

Crear y utilizar objetos de FeatureSet y RecordSet

Los objetos de FeatureSet y RecordSet se pueden crear de diversas maneras según la necesidad y la aplicación. El método cargar se puede utilizar para agregar nuevas entidades o filas al objeto, y el método guardar se puede utilizar para conservar las entidades o filas en el disco. Además, la tabla o clase de entidad de entrada se puede suministrar como argumento de la clase. Los objetos de FeatureSet y RecordSet también se pueden utilizar directamente como entrada de una herramienta de geoprocesamiento.

Cree un conjunto de entidades vacío.

import arcpy  # Create an empty FeatureSet object # featSet = arcpy.FeatureSet()  

Cree un conjunto de entidades a partir de una clase de entidad de entrada

import arcpy  # Construct a FeatureSet from a feature class # featSet = arcpy.FeatureSet("c:/base/roads.shp")  

Función GetParameterValue

Si desea crear un conjunto de entidades o un conjunto de registros con el esquema específico de la entrada de una herramienta, utilice GetParameterValue() para crear un objeto de FeatureSet o RecordSet vacío con el esquema adecuado.

import arcpy  # Add a custom server toolbox # arcpy.ImportToolbox("http://flame7/arcgis/services;BufferByVal", "servertools")  # Get the default input from a tool # inRecSet = arcpy.GetParameterValue("bufferpoints", 0) 

Más información sobre la función GetParameterValue

Utilizar la función GetParameter

Al trabajar con herramientas de secuencia de comandos, los objetos de FeatureSet y RecordSet se pueden adquirir desde la herramienta mediante la función GetParameter.

 import arcpy  # Get the RecordSet from a script tool # inRecSet = arcpy.GetParameter(0) 

Más información sobre la función GetParameter

Métodos getInput/getOutput de la clase Resultado

Al utilizar una herramienta del servidor, debe solicitar explícitamente su salida. Cuando la salida es un conjunto de entidades o un conjunto de registros, el método getOutput() de la clase Resultado se puede utilizar para devolver la salida de la herramienta en un objeto de FeatureSet o RecordSet. Asimismo, el método getInput del objeto Resultado se puede utilizar para obtener un objeto de FeatureSet o RecordSet de entrada.

Más información sobre cómo obtener resultados de una herramienta de geoprocesamiento

 import arcpy import time  # Add a toolbox from a server # arcpy.ImportToolbox("http://flame7/arcgis/services;GP/BufferByVal", "servertools")  # 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_servertools(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")  

Más información sobre la clase Resultado

Ejemplo: Cargar datos a un conjunto de entidades utilizando cursores y una clase de entidad en la memoria

import arcpy from arcpy import env  env.overwriteOutput = True  arcpy.ImportToolbox("http://flame7/arcgis/services;BufferByVal", "server")  # List of coordinates # coordinateL = ["-117.196717216;34.046944853","-117.186226483;34.046498438",\                "-117.179530271;34.038016569","-117.187454122;34.039132605",\                "-117.177744614;34.056765964","-117.156205131;34.064466609",\                "-117.145491191;34.068261129","-117.170825195;34.073618099",\                "-117.186784501;34.068149525","-117.158325598;34.03489167"]  # Create an in_memory feature class to initially contain the coordinate pairs # fc = arcpy.CreateFeatureClass_management("in_memory", "tempfc", "POINT")  # Open an insert cursor # cur = arcpy.InsertCursor(fc) pointArray = arcpy.Array() pnt = arcpy.Point()  # Iterate through list of coordinates and add to cursor # for coords in coordinateL:     x,y = coords.split(';')      pnt.ID = coordinateL.index(coords) + 1     pnt.X = x     pnt.Y = y      feat = cur.newRow()     feat.shape = pnt     cur.InsertRow(feat)     pointArray.add(pnt)  # Delete the cursor del cur  # Create a FeatureSet object and load in_memory feature class # featSet = arcpy.FeatureSet() featSet.load(fc)  results = arcpy.BufferPoints_servertools(featSet)      

Temas relacionados


7/11/2012