Administrar datos intermedios en modelos compartidos
Los datos intermedios se crean y eliminan cuando se ejecuta una herramienta de modelo. En la mayoría de los casos, no tiene que preocuparse por los datos intermedios, incluso con modelos compartidos. No obstante, en algunos casos, las herramientas de modelos no pueden crear datos intermedios, ya que el modelo falla, y es probable que los mensajes de error que aparezcan no indiquen directamente el problema. Por ejemplo, en el mensaje se puede leer "Error inesperado" cuando, en realidad, la herramienta simplemente no puede escribir su salida debido a que la carpeta o la geodatabase no existen.
El rendimiento es otro aspecto que puede verse afectado si no tiene en cuenta la ubicación de los datos intermedios. Se debe evitar todo envío de datos intermedios a un equipo remoto o a una geodatabase de ArcSDE. La sobrecarga de comunicación en la red con el sistema remoto de archivos o la base de datos remota es, a menudo, demasiado costosa y podría ralentizar considerablemente el rendimiento del modelo.
La técnica más simple que se debe seguir para asegurarse de que los modelos pueden crear y eliminar datos intermedios es la siguiente:
- Convierta todas las variables de datos intermedios en datos administrados.
Más información acerca de convertir datos intermedios en datos administrados
- Establezca el entorno de espacio de trabajo temporal en una geodatabase de archivos existente.
Los pasos son los siguientes:
- En la ventana Catálogo, haga clic con el botón derecho del ratón en la herramienta de modelo y, a continuación, haga clic en Editar. Se abrirá ModelBuilder.
- En ModelBuilder, haga clic con el botón derecho del ratón en todas las variables de datos intermedios y seleccione Administrados. Una marca de verificación aparecerá al lado de Administrados.
- Guarde y cierre el modelo.
- En el menú Geoprocesamiento, seleccione Entornos y haga clic en Espacio de trabajo.
- En la configuración del Espacio de trabajo temporal, especifique una nueva geodatabase de archivos o déjelo apuntando a la geodatabase predeterminada.
- Haga clic en Aceptar.
- En la ventana Catálogo, ejecute el modelo haciendo doble clic en la herramienta de modelo, introduzca los parámetros y, por último, haga clic en Aceptar. Si se siguen produciendo errores, compruebe que ha convertido todas las variables de datos intermedios en datos administrados y que el espacio de trabajo temporal está configurado correctamente. Si siguen persistiendo los problemas, seguramente ocurrirá debido a una de las siguientes:
- El problema no surge debido a los datos intermedios.
- El modelo está reiniciando el entorno de espacio de trabajo temporal. Compruebe la configuración del entorno del modelo:
- En la ventana Catálogo, haga clic con el botón derecho del ratón en la herramienta de modelo y, a continuación, haga clic en Propiedades.
- En el cuadro de diálogo de propiedades, haga clic en la pestaña Entornos.
- Si la casilla de verificación que se encuentra próxima a Espacio de trabajo está marcada, haga clic en el signo más.
- Resalte Espacio de trabajo temporal haciendo clic en él y, a continuación, haga clic en el botón Valores.
- Si la configuración de Espacio de trabajo temporal contiene una ruta a un espacio de trabajo, verifique la existencia de dicho espacio de trabajo. (Podrá comprobarlo haga clic en y navegue hasta la ubicación). Si el espacio de trabajo no existe, introduzca la ruta a un espacio de trabajo existente.
Cómo administran los modelos los datos intermedios
Debe cerciorarse de que los modelos que comparte tienen una ubicación para crear y borrar sus datos intermedios. El método más sencillo para lograrlo consiste en convertir todos los datos intermedios en datos administrados, tal y como se describe en los pasos anteriores.
En la información restante de este tema encontrará una vista a fondo sobre cómo el geoprocesamiento administra los datos intermedios, así como la perspectiva necesaria para resolver problemas. En los siguientes apartados se describen:
- Cómo se generan rutas de salida automáticamente
- Cómo Modelbuilder controla cualquier modificación en las variables de datos
- Cómo puede utilizarse la opción Administrados en los datos intermedios
- Cómo puede utilizarse la sustitución de variables en las rutas de salida
- Cómo ArcGIS Server invalida el entorno de espacio de trabajo temporal
- Cómo ha sido diseñada la estructura de carpeta ToolShare con el fin de ayudarle a administrar datos intermedios
- Cómo los datos temporales pueden escribirse en el espacio de trabajo in_memory
- Cómo se utilizan los entornos de espacio de trabajo temporal en las secuencias de comandos
Cómo se generan rutas de salida automáticamente
Cuando abra una herramienta y proporcione datasets de entrada, la ubicación de los datos de salida se generará automáticamente. Este nombre generado automáticamente se obtiene por medio de la ubicación del espacio de trabajo temporal en caso de encontrarse configurado, y, en caso contrario, por medio de la ubicación del espacio de trabajo actual. La variable de datos de salida contendrá el nombre generado automáticamente independientemente de si la variable termina convirtiéndose en datos intermedios, en datos administrados o en un parámetro de herramienta.
Cuando distribuya los modelos, los destinatarios seguramente tendrán configuraciones diferentes para el espacio de trabajo temporal o actual y las configuraciones de entorno listas para aplicarse. Esto significa que, cuando abran y ejecuten el cuadro de diálogo de la herramienta, todos los datos intermedios se escribirán en sus espacios de trabajo temporal tal y como quede establecido en sus entornos. Esto ocurrirá siempre que no se modifique el nombre generado automáticamente de las variables de datos, tal como se describe a continuación.
Estado modificado de las variables de datos
Una variable se considerará modificada siempre que se modifique su valor desde ModelBuilder. Después de modificar una variable, ArcGIS funcionará basándose en el principio de que utilizará el valor modificado y nunca más se cambiará. Si la variable modificada contiene una ruta a carpetas o espacios de trabajo que no existen en el equipo de otro usuario, el modelo fallará.
Si la variable es un dataset de salida y su valor está vacío o sin modificar, las herramientas de geoprocesamiento generarán automáticamente una ruta. Se recomienda aprovechar este aspecto y dejar los parámetros del dataset de salida sin modificar, para que así el geoprocesamiento se encargue de generar automáticamente una ruta.
En ModelBuilder no se puede determinar si una variable de datos se considera modificada, pero es posible restablecer el estado modificado de una variable mediante la eliminación (dejando en blanco) del valor existente y la posterior validación de todo el modelo. La validación indicará entonces que el valor de salida se encuentra en blanco, y generará automáticamente un nuevo nombre para los datos intermedios y marcará la variable de datos como no modificada. No obstante, existe un método más apropiado, que consiste en establecer la variable en Administrados, como se describe a continuación.
Utilizar datos administrados
Es posible que elija que ModelBuilder administre la ubicación de los datos intermedios (mediante la lógica descrita). Puede convertir una variable de datos en administrada haciendo clic con el botón derecho del ratón en la variable y, a continuación, haciendo clic en la opción Administrados. Después de establecer una variable como administrada, no podrá cambiar la ruta de salida desde ModelBuilder (el control del parámetro siempre aparecerá como no disponible). Esto significa que los estados modificados de los datos administrados no se pueden cambiar y que se generará automáticamente una ruta para los datos cada vez que se ejecute el modelo.
Utilizar %scratchworkspace%
Las herramientas de secuencias de comandos personalizadas pueden proporcionar o no una ruta de salida generada automáticamente. En el caso en el que no proporcionen una, es posible utilizar la sustitución de variables en ModelBuilder para las rutas de salida, como se muestra a continuación.
El mayor inconveniente a la hora de utilizar la sustitución de variables es que es poco probable saber si %scratchworkspace% se convertirá en una carpeta del sistema o en una geodatabase cuando se ejecute la herramienta. Al crear el modelo en ModelBuilder, si el espacio de trabajo temporal era un espacio de trabajo de shapefile (una carpeta), ModelBuilder agregará .shp de manera automática al nombre del dataset de entidades (es decir, ha introducido %scratchworkspace%/temp y ModelBuilder lo reemplazará automáticamente por %scratchworkspace%/temp.shp). Si posteriormente cambia el espacio de trabajo temporal a una geodatabase de archivos y ejecuta la herramienta de modelo a través de su cuadro de diálogo, el modelo fallará al intentar escribir temp.shp en la geodatabase de archivos, ya que las geodatabases no pueden contener caracteres especiales, como por ejemplo, el punto hallado en .shp.
Existen únicamente dos casos en los que puede predecir con total seguridad el tipo de espacio de trabajo temporal:
- Cuando la herramienta se está ejecutando en ArcGIS Server
- Si utiliza la estructura de carpetas ToolShare recomendada que contiene una carpeta temporal
Ambos casos se examinan con más detalle a continuación.
Espacios de trabajo temporal de ArcGIS Server
Cuando se ejecute una herramienta del servidor en el servidor, ArcGIS Server creará una carpeta de tareas exclusiva para que la herramienta la utilice. Esta carpeta de tareas contiene una carpeta llamada temporal, y en su interior se encuentra una geodatabase de archivos llamada scratch.gdb, como se muestra a continuación.
ArcGIS Server establecerá el entorno de espacio de trabajo temporal a nivel de aplicación en la ubicación de esta carpeta temporal exclusiva. Ignorará a su vez toda configuración a nivel de herramienta, modelo o proceso de modelo para el espacio de trabajo temporal. Cuando se ejecute la herramienta del servidor, se restablecerá la ubicación de las variables de datos de salida administrados o intermedios para que utilice el espacio de trabajo temporal de la carpeta de tareas, a no ser que la variable de datos no se haya administrado pero sí modificado.
Debido a que ArcGIS Server crea siempre esta carpeta temporal con una geodatabase temporal y establece el entorno de espacio de trabajo temporal en la carpeta temporal, es posible utilizar con seguridad la sustitución de variables en todas las rutas de salida. Por ejemplo:
%scratchworkspace%/output_buffer.shp %scratchworkspace%/scratch.gdb/outBuffer
Utilizar la estructura de carpetas de uso compartido
La estructura para herramientas de uso compartido describe la estructura de carpetas recomendada, llamada carpeta ToolShare, como aparece a continuación.
Esta estructura de carpetas ToolShare resulta eficaz para las herramientas de uso compartido, ya sea compartiéndolas en LAN o publicándolas en ArcGIS Server.
Tenga en cuenta que, como ya ocurre con la carpeta de tareas exclusiva creada por ArcGIS Server, la carpeta ToolShare contiene una carpeta temporal y un scratch.gdb. Puede configurar el modelo para que sus datos intermedios se escriban siempre en esta carpeta temporal, tal como se indica a continuación:
- Establezca el espacio de trabajo temporal del entorno del modelo en la carpeta temporal que se encuentra en la carpeta de uso compartido.
- Ajuste la caja de herramientas para utilizar rutas relativas
- En el modelo, utilice la sustitución de variables en todos los datos intermedios.
%scratchworkspace%/output_buffer.shp %scratchworkspace%/scratch.gdb/outBuffer
Si utiliza %scratchworkspace% en un parámetro de modelo se tomará el espacio de trabajo temporal a nivel de aplicación, y no el espacio de trabajo temporal a nivel de modelo, por lo que es recomendable que utilice esta técnica únicamente en las variables de datos sin parámetros, como por ejemplo, los datos intermedios.
Si utiliza esta técnica al compartir la caja de herramientas en LAN, con la ejecución de las herramientas se escribirán datos intermedios en esta carpeta temporal. A continuación se muestra un ejemplo de configuración:
- Un usuario en \\pondermatic agregará una conexión a carpetas en la carpeta de uso compartido \\cogitator\GPTools.
- Abrirá y ejecutará una herramienta de la caja de herramientas RetailFunctions.
- Dado que almacenó la caja de herramientas RetailFunctions con las rutas relativas, la ubicación del espacio de trabajo temporal, %scratchworkspace%, se expandirá a \\cogitator\GPTools\scratch, y todos los datos intermedios se escribirán en \\cogitator\GPTools\Scratch.
Puede elegir el uso de esta técnica de uso compartido mediante LAN si lo desea. La primera consideración a tener en cuenta es si desea otorgar permisos a otros usuarios para que puedan escribir datos en la carpeta compartida. Por otro lado, la escritura de datos por LAN es, por lo general, más lenta que en un disco duro local. Es preferible utilizar el entorno de espacio de trabajo temporal establecido por el usuario de la herramienta. No obstante, y como ya se ha comentado, se desconoce si el usuario ha establecido su espacio de trabajo temporal en una carpeta o en una geodatabase. Con esta técnica se puede saber el tipo de espacio de trabajo temporal.
Escribir datos temporales en el espacio de trabajo in_memory
El geoprocesamiento proporcionará un espacio de trabajo en memoria en aquellos lugares en los que pueda escribir entidades y tablas.
Más información sobre el espacio de trabajo in_memory
-
Nota:
Sólo será posible escribir tablas y clases de entidades (puntos, líneas y polígonos) en el espacio de trabajo in_memory. El espacio de trabajo in_memory no es compatible con elementos extendidos de la geodatabase, como por ejemplo, subtipos, dominios, representaciones, topologías, redes geométricas y datasets de redes. Sólo será posible escribir entidades y tablas simples.
No establezca el entorno de espacio de trabajo temporal en el espacio de trabajo in_memory. Utilice in_memory únicamente para las salidas que sepa que son entidades y tablas simples.
Tenga cuidado a la hora de utilizar espacios de trabajo en memoria; se recomienda escribir datasets que sepa que serán pequeños en el espacio de trabajo in_memory.
Datos temporales en secuencias de comandos
En las secuencias de comandos, a menudo, es necesario generar una ubicación para escribir datos temporales.
Más información acerca de crear datos temporales en secuencias de comandos