¿Por qué es importante usar capas de entidades en ModelBuilder?


9

Estoy tratando de entender la creación de un geoprocesamiento con ModelBuilder, pero no sé por qué es importante usar capas de entidades en lugar de clases de entidades al crear un geoprocesamiento con ModelBuilder. ¿Alguien puede explicar por qué?


Respuestas:



9

Hay un par de razones por las que desea hacer referencia a las capas de características en ModelBuilder, en lugar de las clases de características. Primero es útil entender las diferencias.

  • Las "clases de entidad" como simples referencias a los datos sin procesar, en su totalidad. Un ejemplo simple de esto donde el FC es un archivo de forma en disco.
  • Las "capas de características" son referencias a una abstracción de los datos, donde puede interactuar con una o más de las características del conjunto de datos sin procesar (en oposición a todo el conjunto de datos). Las capas son con lo que está interactuando efectivamente una vez que ha cargado los datos en ArcMap.

Entonces, teniendo en cuenta estos antecedentes, aquí hay algunas razones por las que desea utilizar la herramienta "Crear capa de características" como intermediario entre los datos sin procesar y otras herramientas de geoprocesamiento.

  1. Muchas herramientas GP en ModelBuilder requieren el uso de una capa y no aceptarán un FC como entrada. Esto es particularmente cierto si su (s) herramienta (s) GP necesita (n) seleccionar datos. En este escenario, debe interactuar con LA CAPA, no con los datos sin procesar. Ejemplo: si no tuviera abierto ArcMap (u otro programa SIG), ¿cómo seleccionaría entidades del archivo de forma sin procesar ... no puede. Debe interactuar con la capa en ArcMap para hacer esa selección.
  2. Si desea ejecutar un Modelo desde ArcCatalog, o exportar su Modelo a un script de Python que pueda ejecutarse fuera de ArcGIS, debe usar "Capas de entidades" para que sus datos de origen sin procesar se conviertan en "Capas". Esto sería análogo a "agregar datos" a su sesión de ArcMap.

  3. El uso de capas facilita el subconjunto de sus datos a medida que avanza en el proceso de ModelBuilder. Supongamos que desea procesar todos los datos con el atributo "A" con un método, pero todos los datos con el atributo "B" con otro método. Puede hacer referencia a sus datos sin procesar una vez, luego dividir los datos en dos "ramas" utilizando Capas de funciones y procesar cada conjunto de forma independiente, pero afectando / actualizando el conjunto de datos de origen único.

  4. Puede crear capas de características "en memoria" que sean "contenedores" de procesamiento de datos verdaderamente temporales y que puedan procesar los datos mucho más rápidamente que escribir en el disco después de cada operación. También limita la cantidad de basura que tiene que limpiar después de que se complete su procesamiento.

Muchas gracias Ryan. Su respuesta es muy completa y clara.
Diego Pardo

7

La incorporación de capas temporales en sus modelos también disminuye el tiempo de procesamiento. Desde el punto de vista del procesamiento, es mucho más eficiente escribir en la memoria en comparación con escribir en el disco. Del mismo modo, puede escribir datos temporales en el espacio de trabajo in_memory , que también es más eficiente desde el punto de vista computacional.

Muchas operaciones en ArcGIS requieren capas temporales como entradas. Por ejemplo, Seleccionar capa por ubicación (Administración de datos) es una herramienta muy potente y práctica que le permite seleccionar características de una capa que comparten relaciones espaciales con otra característica de selección. Puede especificar relaciones complejas como "HAVE_THEIR_CENTER_IN" o "BOUNDARY_TOUCHES", etc.

Editar:

Por curiosidad, y para profundizar en las diferencias de procesamiento utilizando capas de entidades y el espacio de trabajo in_memory, considere la siguiente prueba de velocidad en la que se almacenan 39,000 puntos en 100 m:

import arcpy, time
from arcpy import env

# Set overwrite
arcpy.env.overwriteOutput = 1

# Parameters
input_features = r'C:\temp\39000points.shp'
output_features = r'C:\temp\temp.shp'

###########################
# Method 1 Buffer a feature class and write to disk
StartTime = time.clock()
arcpy.Buffer_analysis(input_features,output_features, "100 Feet")
EndTime = time.clock()
print "Method 1 finished in %s seconds" % (EndTime - StartTime)
time.sleep(5)

############################
# Method 2 Buffer a feature class and write in_memory
StartTime = time.clock()
arcpy.Buffer_analysis(input_features, "in_memory/temp", "100 Feet")
EndTime = time.clock()
print "Method 2 finished in %s seconds" % (EndTime - StartTime)
time.sleep(5)

############################
# Method 3 Make a feature layer, buffer then write to in_memory
StartTime = time.clock()
arcpy.MakeFeatureLayer_management(input_features, "out_layer")
arcpy.Buffer_analysis("out_layer", "in_memory/temp", "100 Feet")
EndTime = time.clock()
print "Method 3 finished in %s seconds" % (EndTime - StartTime)
time.sleep(5)

ingrese la descripción de la imagen aquí


Podemos ver que los métodos 2 y 3 son equivalentes y aproximadamente 3 veces más rápidos que el método 1. Esto muestra el poder de usar capas de entidades como pasos intermedios en flujos de trabajo más grandes.


Esto parece estar combinando dos cosas (datos en memoria y capas de características). Ellos no son los mismos. Los datos escritos en el in_memoryespacio de trabajo siguen siendo datos (por ejemplo, clases de entidad y tablas) todavía ocupan (potencialmente mucho) espacio. Las capas de características, por otro lado, son una vista sobre los datos, lo que le permite seleccionar un subconjunto de datos y usarlo en procesos posteriores, en lugar de duplicar datos solo para obtener un subconjunto de ellos. Las capas de características casi no ocupan espacio en absoluto. Me gusta pensar en ellos como "punteros con metadatos", por ejemplo, señalan algunos datos y describen cómo consultarlos / procesarlos.
blah238

Solo para agregar a mi comentario anterior, he leído en algún lugar de este sitio que el in-memoryespacio de trabajo es básicamente una geodatabase de archivos que se encuentra en la memoria, si te gusta pensar de esa manera.
blah238

Como una geodatabase de archivos, pero las áreas de forma no se calculan cuando in_memory proporcionará un enlace a esto más adelante.
PolyGeo

En su segundo ejemplo actualizado, está creando una clase de entidad en memoria, no una capa de entidad.
blah238

2
Ha pasado un tiempo, pero aquí está el enlace que prometí hace más de 6 meses.
PolyGeo
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.