Escribir la salida de geoprocesamiento en la memoria

Escribir las salidas de geoprocesamiento en la memoria es una alternativa a escribir la salida en una geodatabase o en un formato basado en archivo. Suele ser mucho más rápido que escribir en formatos en el disco. Los datos escritos en la memoria son temporales y se eliminan al cerrar la aplicación. El espacio de trabajo de memoria es una ubicación ideal para escribir datos intermedios en un modelo de ModelBuilder o una secuencia de comandos de Python.

Espacios de trabajo basados en memoria

ArcGIS proporciona dos espacios de trabajo basados en memoria, en los que se pueden escribir salidas de geoprocesamiento.

espacio de trabajo de memoria

memory es un espacio de trabajo basado en memoria que admite clases de entidades, tablas y datasets ráster de salida.

Para escribir en el espacio de trabajo memory, especifique una ruta de dataset de salida que empiece por memory\ y no tenga ninguna extensión de archivo; por ejemplo, memory\tempOutput.

Puede agregar datasets memory a un mapa de ArcGIS Pro.

Espacio de trabajo in_memory

Heredado:

in_memory es el espacio de trabajo heredado basado en memoria creado para ArcMap que admite clases de entidad, tablas y datasets ráster de salida.

Para escribir en el espacio de trabajo in_memory, especifique una ruta de dataset de salida que empiece por in_memory\ y no tenga ninguna extensión de archivo; por ejemplo, in_memory\tempOutput.

Nota:

Una herramienta de geoprocesamiento no puede agergar una salida in_memory a un mapa. Después de crear una salida in_memory, una herramienta copiará la salida a la geodatabase del proyecto. A continuación, la herramienta agrega la salida de la geodatabase del proyecto al mapa. Para mostrar datos basados en memoria en un mapa, utilice en su lugar el espacio de trabajo de memoria.

No se escribe copia a la geodatabase del proyecto cuando los datasets son intermedios y no se agregan al mapa.

A diferencia del espacio de trabajo memory, el espacio de trabajo in_memory no admite subtipos ni dominios.

Administrar el espacio de trabajo de memoria

Los datos del espacio de trabajo memory solo pueden administrarse mediante herramientas de geoprocesamiento, y no se muestran en el panel Catálogo ni en la vista Catálogo. Para ver qué capas de un mapa tienen una fuente de datos de memoria, en el panel Contenido, haga clic en el botón Listar por fuente de datos Lista por origen de datos; las fuentes de datos de memoria aparecerán listadas bajo el espacio de trabajo InMemoryDB\GPProMemoryWorkspace.

También puede obtener una lista de datasets en el espacio memory mediante las funciones de lista de ArcPy.

# Set the workspace and list the data saved to memory
arcpy.env.workspace = "memory"

print(f"Memory Feature Classes: {arcpy.ListFeatureClasses()}")
print(f"Memory Rasters: {arcpy.ListRasters()}")
print(f"Memory Tables: {arcpy.ListTables()}")

Cuando se utiliza un espacio de trabajo basado en memoria, elimine los datos intermedios lo antes posible para liberar recursos de memoria del sistema. Se puede utilizar la herramienta Eliminar para eliminar los datos del espacio de trabajo basado en memoria. Elimine los datasets individuales o todo el espacio de trabajo para borrar el contenido del espacio de trabajo.

Usar el espacio de trabajo de memoria en Python

El uso de espacios de trabajo basados en memoria en Python solo es válido para herramientas de geoprocesamiento. La memoria no es un directorio virtual de uso general en el que se puedan escribir archivos u otros datos.

Use el espacio de trabajo memory como se muestra en la siguiente muestra de código:

import arcpy

# Set the geoprocessing workspace
arcpy.env.workspace = r"C:\Data\Habitat.gdb"

# Buffer a Roads layer, writing output to memory 
arcpy.analysis.Buffer("Roads", r"memory\Buffers", 1000)

# Erase the buffers from a Vegetation layer
arcpy.analysis.Erase("Vegetation", r"memory\Buffers", r"memory\Erased")

# Dissolve the memory output of Erase to make a final output in the gdb workspace
arcpy.management.Dissolve(r"memory\Erased", "FinalOutput")

Limitaciones

Los espacios de trabajo basados en memoria presentan las siguientes limitaciones:

  • Los espacios de trabajo basados en la memoria no son compatibles con elementos de geodatabase tales como datasets de entidades, clases de relación, grupos de campos, índices espaciales o de atributos, representaciones, topologías, redes geométricas o datasets de red.
  • La herramienta Copiar no admite datasets de entrada o salida de un espacio de trabajo basado en memoria. Para copiar datasets en un espacio de trabajo de memoria, utilice la herramienta Copiar entidades o la herramienta Exportar entidades.
  • La herramienta Truncar tabla no admite datos de entrada de espacios de trabajo basados en memoria.
  • Puesto que los espacios de trabajo basados en memoria se almacenan en la memoria física del sistema (RAM), es posible que a su sistema le quede poca memoria disponible si escribe datasets grandes en el espacio de trabajo. Esto puede afectar negativamente al rendimiento del procesamiento.
  • No se pueden crear carpetas en los espacios de trabajo basados en memoria.
  • Los espacios de trabajo de memoria admiten modificaciones limitadas de campos de atributos y esquemas mediante Modificar campo y otras herramientas. Puede modificar los alias de campo, pero no los nombres de campo ni otras propiedades.