Consideraciones al utilizar el espacio de trabajo in_memory

Las aplicaciones de ArcGIS, ArcGIS Pro y ArcMap, así como ArcGIS Server, tienen un espacio de trabajo basado en memoria donde se pueden escribir clases de entidad, tablas y datasets ráster de salida: el espacio de trabajo in_memory. El espacio de trabajo in_memory se puede utilizar como una alternativa a escribir la salida en archivos o en geodatabases de archivos y corporativas. Escribir en el espacio de trabajo in_memory suele ser mucho más rápido, pero no siempre es así. Los datos que se escriben en el espacio de trabajo in_memory son temporales y se perderán cuando se cierre la aplicación, por lo que es ideal para los datos intermedios que se crean a partir de las herramientas de modelo y secuencia de comandos de Python.

Para escribir en el espacio de trabajo in-memory, especifique una ruta de dataset de salida que empiece por in_memory, por ejemplo, in_memory/outputParcels.

Precaución:
El espacio de trabajo in_memory no es compatible con elementos de la geodatabase como, por ejemplo, subtipos, dominios, representaciones, topologías, redes geométricas, datasets de red o datasets de entidades.

Utilizar el espacio de trabajo in_memory con ArcGIS Pro

ArcGIS Pro es una aplicación multiproceso de 64 bits. Cualquier programa de software de 64 bits puede hacer uso de más RAM que una aplicación de software de 32 bits, que limita cada aplicación a 3 GB de RAM. Ejecutar herramientas de geoprocesamiento de una en una desde el panel Geoprocesamiento o desde la ventana de Python no optimiza el uso del espacio de trabajo in_memory; de hecho, se puede incurrir en un coste de rendimiento. Dado que ArcGIS Pro es una aplicación multiproceso, puede hacer uso de varias CPU para realizar más de una tarea a la vez. Una operación de geoprocesamiento que escribe en el espacio de trabajo in_memory mantiene el resultado de esa operación en una determinada parte de la memoria que no está disponible para otros subprocesos. La salida debe mantenerse en el disco (en una carpeta o geodatabase) para que todos los subprocesos puedan actuar sobre la salida. Si escribe la salida de una única operación de geoprocesamiento en in_memory, la salida se crea ahí y se copia en una geodatabase antes de mostrarla en la aplicación. Tal y como se indicó anteriormente, el espacio de trabajo in_memory solo debería utilizarse para crear datos intermedios dentro de modelos y secuencias de comandos. Una herramienta de modelo o secuencia de comandos se ejecutará en un único subproceso y tendrá acceso al mismo espacio de trabajo in_memory; una serie de herramientas encadenadas generalmente se ejecutará más rápido que una serie de herramientas que leen y escriben desde el disco.

Administrar el espacio de trabajo in_memory

Cuando se utiliza el espacio de trabajo in_memory, puede que desee eliminar los datos intermedios lo antes posible para liberar la memoria del sistema. Se puede utilizar la herramienta Eliminar para eliminar los datos del espacio de trabajo in_memory. Puede eliminar los datasets individuales o, si lo desea, todo el espacio de trabajo para borrar por completo el contenido del espacio de trabajo. El espacio de trabajo in_memory vacío seguirá estando disponible para utilizarlo.

Utilizar in_memory con modelos

Al crear modelos, las herramientas se conectan mediante parámetros de entrada y salida. Los datos que son la salida de una herramienta y que se utilizan como entrada para el procesamiento en otra herramienta suelen denominarse datos intermedios. Escribir salidas intermedias en el espacio de trabajo in_memory puede reducir el tiempo general de ejecución del modelo cuando se utiliza en ArcGIS Pro. Otra ventaja añadida de crear un modelo que utiliza el espacio de trabajo in_memory es que cuando se comparte como una herramienta web en ArcGIS Enterprise, seguirá utilizando el espacio de trabajo in_memory cuando se ejecute en el servidor.

Las salidas definidas como parámetros se agregan al mapa de forma predeterminada cuando un modelo se ejecuta como una herramienta. Estas salidas se pueden escribir en el espacio de trabajo in_memory; no obstante, se convertirán a una clase de entidad en una geodatabase local cuando se ejecute la herramienta. En lugar de crear la salida en el espacio de trabajo in_memory y después convertirla en una clase de entidad, puede escribir los parámetros del modelo en su %scratchGDB% o en otra ruta completa en el disco para que la conversión se realice solo una vez.

Nota:
No puede utilizar la opción del parámetro Agregar a visualización cuando escribe en in_memory. La salida de geoprocesamiento debe escribirse en el disco o en una geodatabase para que se muestre en el mapa.

Utilizar in_memory con Python y arcpy

Utilizar el espacio de trabajo in_memory con las herramientas de secuencias de comandos de Python le aporta las mismas ventajas que utilizar herramientas de modelo. Escribir datos intermedios en el espacio de trabajo in_memory normalmente será más rápido en comparación a escribir la salida en el disco. En el ejemplo siguiente se crean datasets intermedios en el espacio de trabajo in_memory para las herramientas Zona de influencia y Borrar. La FinalOutput de la herramienta Disolver crea una clase de entidad en la geodatabase Habitat tal y como se define en la configuración del espacio de trabajo.

Crear la salida en el espacio de trabajo in_memory

import arcpy
# Set the geoprocessing workspace
arcpy.env.workspace = r"C:\Data\Habitat.gdb"
# Buffer a Roads layer, writing output to in_memory 
arcpy.Buffer_analysis("Roads", "in_memory/Buffers", 1000)
# Erase the buffers from a Vegetation layer
arcpy.Erase_analysis("Vegetation", "in_memory/Buffers", "in_memory/Erased")
# Dissolve the in_memory output of Erase to make a final output
arcpy.Dissolve_management("in_memory/Erased", "FinalOutput")