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é?
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:
Los modelos pueden tener muchas capas de salida de subproceso según su tamaño y complejidad. Para eliminar los archivos que se escriben en su disco duro, algunas herramientas lo hacen usar capas de características (por ejemplo, Iterate Feature Selection o Select by Attribute ). Las capas de entidades son temporales y no persistirán una vez que finalice su modelo.
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.
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.
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.
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.
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)
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.
in_memory
espacio 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.
in-memory
espacio de trabajo es básicamente una geodatabase de archivos que se encuentra en la memoria, si te gusta pensar de esa manera.