Estoy tratando de entender la creación de geoprocesos con ModelBuilder, pero no sé por qué es importante utilizar capas de función en lugar de clases cuando se crea un geoprocesos con ModelBuilder. ¿Alguien puede por favor explicar por qué?
Respuestas
¿Demasiados anuncios?Hay un par de razones por las que desea hacer referencia a las Capas de entidades en ModelBuilder, en contraposición a las Clases de entidad. La primera es útil para entender las diferencias.
- "Las Clases de entidad" simplemente como referencias a los datos en bruto, en su totalidad. Un ejemplo sencillo de este, donde el FC es un shapefile en el disco.
- Característica de "Capas" son referencias a una abstracción de los datos, donde se puede interactuar con uno o más de las características en el conjunto de datos raw (en oposición a la totalidad del conjunto de datos). Las capas son lo que son efectivamente interactuar con una vez se han cargado los datos en ArcMap.
Por lo tanto, dado que de fondo, aquí hay algunas razones por qué usted desea utilizar la Función de la Capa de" herramienta como un intermediario de los datos en bruto y otras herramientas de geoprocesamiento.
- Muchas GP herramientas en ModelBuilder requieren el uso de una capa, y no va a aceptar un FC como entrada. Esto es especialmente cierto si su médico de cabecera herramienta(s) que necesita para seleccionar los datos. En este escenario, es necesario interactuar con la CAPA, no los datos en bruto. Ejemplo: Si usted no tiene ArcMap (u otro programa SIG) abrir, ¿cómo podría usted selecciona las características de los crudos shapefile... no se puede. Es necesario interactuar con la capa en ArcMap para hacer esa selección.
Si desea ejecutar un Modelo de ArcCatalog, o exportar su Modelo a una secuencia de comandos de Python que se puede ejecutar fuera de ArcGIS, usted necesita para utilizar la Característica de "Capas" con el fin de tener los datos de origen se convierte a "Capas". Esto sería análogo a "agregar datos" a tu sesión de ArcMap.
El uso de capas hace que sea fácil para el subconjunto de datos en la medida que avanzamos en la ModelBuilder proceso. Digamos 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 los datos una vez, a continuación, dividir los datos en dos "ramas" uso de la Función de las Capas y el proceso de cada grupo de forma independiente, pero que afectan a/actualización de la única fuente de datos.
- Usted puede crear "in_memory" característica de las capas que son verdaderamente temporal de procesamiento de datos "papeleras", y que pueden procesar los datos mucho más rápido 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 su procesamiento es completa.
La incorporación de estratos temporales en sus modelos también disminuye el tiempo de procesamiento. A partir de un procesamiento de punto de vista, es mucho más eficiente de escritura en la memoria en comparación con la escritura en el disco. Del mismo modo, puede escribir datos temporales a in_memory área de trabajo, que también es más eficiente computacionalmente.
Muchas de las operaciones en ArcGIS requieren estratos temporales como entradas. Por ejemplo, Seleccionar Capa Por Ubicación (Gestión de Datos) es una potente y útil herramienta que le permite a usted seleccionar las características de una capa que comparten relaciones espaciales con otra selección de función. Puede especificar relaciones complejas tales como "HAVE_THEIR_CENTER_IN" o "BOUNDARY_TOUCHES", etc.
Editar:
Por curiosidad, y para profundizar sobre las diferencias de tratamiento mediante función de capas y in_memory área de trabajo, considere la siguiente prueba de velocidad donde 39,000 puntos se almacenan 100m:
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ápido que el método 1. Esto muestra el poder de utilizar las capas de entidades como pasos intermedios en los grandes flujos de trabajo.
Los modelos pueden tener muchos sub proceso de salida de las capas dependiendo de su tamaño y complejidad. Para eliminar los archivos que se graban en el disco duro, algunas herramientas hacen uso de la característica de capas (por ejemplo, Repetir la Selección de características, o Seleccionar por atributos). Las capas de entidades son de carácter temporal y no persistir después de que su modelo de extremos.