Consideraciones de geoprocesamiento para los datos de ArcSDE
Creación dinámica de los archivos de conexión de ArcSDE
Los archivos de conexión de ArcSDE pueden crearse cuando según sea necesario mediante la herramienta Crear archivo de conexión de ArcSDE. Esta herramienta permite automatizar la creación de archivos de conexión de ArcSDE según se vayan necesitando, lo que evita tener que preparar los archivos de conexión antes de ejecutar las herramientas que acceden a los datos de ArcSDE. Es posible obtener las propiedades de conexión a partir de cualquier fuente que desee, como puede ser un archivo de texto, una transmisión XML codificada o una base de datos segura, y transferirlas a la herramienta Crear archivo de conexión de ArcSDE para crear el archivo de conexión de ArcSDE necesario. Cuando ya no necesite utilizar más el archivo de conexión, podrá borrarlo de manera inmediata con la herramienta Borrar o el comando de borrar apropiado del sistema operativo.
El historial y los resultados del geoprocesamiento almacenan todos los parámetros transferidos a las herramientas. Como la información de conexión se introduce en los parámetros de la herramienta Crear archivo de conexión de ArcSDE, estos parámetros se almacenarán también a no ser que deshabilite el historial de registro. Cada vez que ejecute una herramienta, ya sea una de secuencia de comandos, de sistema o de modelo, se generará un registro de la ejecución en un archivo de registro del historial. La información contenida en el archivo de registro es básicamente la misma que la que se puede encontrar en la ventana Resultados. Para evitar que la información de conexión (contraseña u otra información segura introducida en un parámetro) quede almacenada en el historial de registro o en la ventana Resultados cuando se ejecute la herramienta Crear archivo de conexión de ArcSDE, deshabilite el historial de registro. Consulte Archivos de registro del historial para obtener más detalles.
Rendimiento de las herramientas de geoprocesamiento a la hora de utilizar datos ArcSDE
El geoprocesamiento no controla el rendimiento real del servidor de ArcSDE, de la geodatabase o de la base de datos. Una buena configuración de la base de datos y el propio diseño e implementación de la aplicación por medio de la base de datos (ArcSDE y la geodatabase en este caso) son los factores clave en la consecución de un rendimiento óptimo a la hora de utilizar datos de ArcSDE. No obstante, existe una serie de aspectos que se han de tener en cuenta cuando se utilicen los datos de ArcSDE en las herramientas de geoprocesamiento con el fin de evitar dificultades en el flujo de trabajo que puedan afectar al rendimiento de las herramientas y flujos de trabajo.
Las herramientas de geoprocesamiento son en su mayoría operaciones de carga y creación de datos
La mayoría de herramientas de geoprocesamiento se encargan de la creación de nuevos datos. Por tanto, y en mayor medida, la salida del geoprocesamiento debe entenderse como una operación de carga de datos en lo referente al envío de la salida de la herramienta a ArcSDE. Es importante planificar todas las operaciones de carga de datos para que no tenga consecuencias negativas en la base de datos. A la mayoría de administradores (y usuarios) de bases de datos les resultaría molesto encontrarse la salida de su herramienta Combinación con 50 millones de registros y cargando los datos en la base de datos de ArcSDE durante las horas de mayor tráfico en la red y en la base de datos. Un conjunto demasiado extenso de operaciones de carga de datos de gran tamaño podría afectar a todos los usuarios de la base de datos (que, en algunos casos, podrían ser centenares o miles) así como a cualquier usuario de la red al que se le estén enviando los datos. Si las entradas de la operación de geoprocesamiento son demasiado extensas o se combinan (como ocurre cuando se utilizan las herramientas de superposición) para crear una clase de entidad de salida de un tamaño enorme, se recomienda programar la creación de esta salida para una hora en la que pueda afectar lo mínimo posible a la carga de la red o de la base de datos.
En la mayoría de los casos, puede ser ventajoso hacer que las herramientas creen una salida en una geodatabase de archivos. Una vez se haya validado como correcta la salida en la geodatabase de archivos, podrá transferir los datos a ArcSDE (mediante, por ejemplo, Copiar entidades o Clase de entidad a clase de entidad) en una hora en la que afecte lo menos posible al rendimiento de la red o de la base de datos.
Cuándo NO se han de almacenar los datos en ArcSDE
Los datos intermedios se crean cuando se ejecutan modelos y secuencias de comandos que incluyen numerosos pasos hasta alcanzar una salida final. Si los datos se encuentran en ArcSDE y envía también todos los datos intermedios a ArcSDE, podría generar mucho tráfico y contenciones de red, además de provocar una subida innecesaria en la carga del servidor de la base de datos. Es recomendable el envío de todos los datos intermedios a una geodatabase de archivos o, en lo que respecta a las clases de entidad simple, a una clase de entidad en memoria.
Si la salida del análisis es temporal o no va a compartirse abiertamente, almacénela en un lugar diferente a ArcSDE. Consulte Tipos de geodatabases para poder comparar los diferentes tipos de geodatabases y contar con información de ayuda a la hora de decidir el tipo de geodatabase más apropiado según sus necesidades.
Consideraciones de índice espacial para las herramientas de geoprocesamiento que editan datos existentes
En ArcGIS se utilizan índices espaciales para ubicar rápidamente entidades en clases de entidades. Siempre que se introduce o borra una entidad, es necesario actualizar el índice espacial. Al crear una nueva salida, el geoprocesamiento aplazará la creación del índice espacial de las nuevas clases de entidades hasta que se hayan cargado todos los datos. A la hora de editar las clases de entidades existentes, hay dos opciones para seleccionar cuándo se debe actualizar el índice espacial. Puede optar por dejar el índice espacial en su lugar y que se actualice después de cada edición, o bien puede eliminar el índice espacial antes de efectuar las ediciones y dejar que se actualice únicamente cuando se hayan completado todas las ediciones.
Índices espaciales y herramientas de geoprocesamiento
Algunas herramientas de geoprocesamiento pueden editar datos existentes:
Al utilizar las herramientas de geoprocesamiento que editan los datos existentes, un parámetro de entorno, MaintainSpatialIndex, estará disponible para proporcionar el nivel de control sobre cómo se utiliza el índice espacial de ArcSDE durante las operaciones insertar, borrar y actualizar (a las que hará referencia como ediciones). Existen dos opciones disponibles que pueden proporcionar una mejora en el rendimiento de las ediciones en los datos existentes. Es posible establecer MaintainSpatialIndex en verdadero para dejar el índice espacial en su lugar y que ArcSDE lo actualice automáticamente a medida que las ediciones vayan sucediéndose. También es posible establecerlo en falso, lo que provocará que las herramientas de geoprocesamiento que lleven a cabo ediciones en los datos existentes eliminen el índice espacial de ArcSDE antes de efectuar cualquier edición. Deberá leer el índice espacial después de finalizar todas las ediciones.Índices espaciales a la hora de utilizar cursores de actualización e inserción
Los cursores de actualización e inserción funcionan también con los datos existentes. Cuando se utilicen los cursores de actualización e inserción para editar datos, se recomienda utilizar la herramienta Eliminar índice espacial para eliminar el índice espacial de ArcSDE antes de las operaciones de edición en las que se procesan gran cantidad de filas. Después de finalizar las ediciones, podrá entonces utilizar la herramienta Agregar índice espacial para volver a crear el índice espacial. De esta manera se puede mejorar el rendimiento general de la operación de edición cuando se edite una gran cantidad de filas. Consulte Vista general de los índices espaciales en la geodatabase para obtener ayuda para el uso de índices espaciales.
Directrices de los datos de ArcSDE a la hora de escribir secuencias de comandos
Los sistemas de administración de base de datos relacionales (RDBMS) como Oracle, SQL Server, IBM DB2 y PostgreSQL requieren que los nombres de objetos estén calificados completamente, sobre todo si los datos a los que está accediendo se encuentra fuera del esquema. El uso de nombres calificados completamente posibilita la calificación de forma inequívoca del nombre de un objeto, para que se utilice así el objeto correcto (clase de entidad, tabla relacional, tabla, etc.) Cada base de datos tiene un estándar ligeramente diferente a la hora de calificar completamente el nombre de un objeto. Consulte la documentación de la base de datos para obtener más detalles.
Utilizar nombre de tabla o de clase de entidad calificado completamente
Al transferir a una herramienta un nombre de tabla o de clase de entidad no calificado completamente, el geoprocesamiento calificará automáticamente el nombre por medio del nombre de usuario del espacio de trabajo conectado creado mediante el archivo de conexión de ArcSDE. Si una secuencia de comandos requiere el acceso a los datos de un usuario que no sea el conectado, deberá calificar completamente el nombre de la tabla o de clase de entidad para evitar que la herramienta de geoprocesamiento lleve a cabo la calificación por medio del usuario conectado. De lo contrario, podría producirse un error o la herramienta podría utilizar los datos erróneos.
Muestra el uso de una clase de entidad calificada completamente que es propiedad de un usuario distinto al conectado. El usuario de la base de datos de la caja de herramientas debe seleccionar los permisos en los datos del usuario de mapa.
import arcpy # Create and ArcSDE connection file that connects as the toolbox database user arcpy.CreateArcSDEConnectionFile_management(r'C:\temp',r'toolboxuser.sde','gpserver','5151','',"DATABASE_AUTH",'toolbox','toolbox') # Perform a union operation using data owned by the connected user, toolbox, # and another feature class owned by the map database user. arcpy.Union_analysis(r'C:\temp\toolboxuser.sde\toolbox.states;C:\temp\toolboxuser.sde\map.counties',r'C:\temp\toolboxuser.sde\statesCountiesUnion')
Cada base de datos será ligeramente diferente en la forma en la que se espera que un objeto quede calificado completamente. Consulte la documentación de DBMS SQL para más detalles.
Utilizar nombres de campo calificados completamente
Los campos son también objetos en la base de datos y, al acceder a objetos no pertenecientes al usuario conectado, debe acceder a los campos por medio de los nombres calificados completamente de los mismos. En cualquier lugar donde se cree una declaración SQL compleja, los nombres de los campos calificados completamente le ayudarán a garantizar que el SQL funcione según sea necesario. De nuevo, cada base de datos será ligeramente diferente en la forma en la que califica completamente los objetos. Consulte la documentación de DBMS SQL para más detalles.
Geoprocesamiento con datos versionados
El versionado de geodatabases se encuentra únicamente disponible en las geodatabases corporativas. La geodatabase corporativa es ArcSDE. Las herramientas de geoprocesamiento incorporan dos formas de acceso a los datos versionados según si los datos de ArcSDE se transfieren como ruta de dataset o de nombre de capa.
A la hora de utilizar clases de entidades, el geoprocesamiento siempre utilizará la información sobre la conexión del archivo de conexión que es parte de la ruta a la clase de entidad de ArcSDE para abrir la clase de entidad. Esto significa que, al acceder a los datos, estará sujeto al conjunto de versiones de las propiedades de conexión del archivo .sde.
Si agrega los datos a ArcMap, los datos aparecerán representados como capas de entidades o vistas de tabla. Cuando una herramienta de geoprocesamiento identifique una entrada como capa de entidades o vista de tabla, no recurrirá al archivo de conexión de ArcSDE para volver a abrir la clase de entidad por medio de las propiedades de conexión del archivo de conexión. En lugar de ello, accederá a la clase de entidad por medio del espacio de trabajo ya abierto de la capa. Si se ha realizado algún cambio en el espacio de trabajo, como un cambio de versión al que apunta el propio espacio de trabajo, la herramienta los aplicará. En ArcMap, si utiliza la herramienta Cambiar versión en los datos de ArcSDE de la tabla de contenido de ArcMap, la herramienta de geoprocesamiento utilizará la versión de los datos a los que el espacio de trabajo está conectado después de utilizar la herramienta Cambiar versión.
Utilizar clases de entidades versionadas con herramientas de geoprocesamiento
Al acceder directamente a las clases de entidades de las herramientas de geoprocesamiento a través de una ruta que incluya el archivo de conexión de ArcSDE (.sde), deberá de encargarse de la administración de la versión a la que están conectadas las clases de entidades de la siguiente manera:
- Haga referencia a las clases de entidades utilizando una ruta hasta el archivo de conexión de ArcSDE.
- Cree una nueva versión mediante la herramienta Crear versión. Cuando cree una versión siguiendo este procedimiento, la nueva versión será una versión secundaria de la versión que aparece en el archivo de conexión transferido como un argumento de la herramienta.
- Cree un nuevo archivo de conexión mediante la herramienta Crear archivo de conexión de ArcSDE, asegurándose de que emplea la versión creada recientemente en el parámetro Versión de la herramienta.
- Utilice este nuevo archivo de conexión para acceder a la clase de entidad mientras se encuentre conectada a la nueva versión.
- Para volver a utilizar la clase de entidad mientras se encuentre conectada a la versión principal, utilice el archivo de conexión original.
A la hora de poner nombres a los archivos de conexión de ArcSDE, podría resultarle de utilidad nombrar el archivo .sde de manera que sea fácil de identificar la tarea que está realizando mediante cada archivo de conexión que cree:
- Utilizar los parámetros de conexión: gpserver5151toolboxVersion1.sde (nombre del servidor + puerto + nombre de usuario + versión)
- Utilizar el nombre de analista de SIG que utilizará el archivo .sde: Ken.sde
- Ponerle nombre al archivo .sde en referencia al proyecto para el que se utilizará: waterDeptJune2010Upgrade.sde
Independientemente del método de denominación que utilice, asegúrese de que el nombre de archivo es claro y no infringe ninguna política de seguridad de la organización.
Secuencia de comandos de Python mostrando el flujo de trabajo para utilizar las clases de entidades versionadas
# VersionedFeatureClassExample.py # Description: Simple example showing how to access versioned feature classes in geoprocessing tools. # Author: ESRI # import system modules import arcpy import sys, os # Set variables sdeConnFilePath = sys.path[0] + os.sep + "sdeconnectionfiles" analysisVersion = "TOOLBOX.proposedStreets2k9" defaultVersionConnection = r'gpserver5151toolboxDEFAULT.sde' proposedStreetsVersion = r'gpserver5151toolboxproposedStreets2k9.sde' # Perform analysis on the Default version to determine current number of streams within 100 meters of streets. inputFC = sdeConnFilePath + os.sep + defaultVersionConnection + os.sep + r'TOOLBOX.Redlands\TOOLBOX.streams' selectFC = sdeConnFilePath + os.sep + defaultVersionConnection + os.sep + r'TOOLBOX.Redlands\TOOLBOX.street' outputFC = sdeConnFilePath + os.sep + defaultVersionConnection + os.sep + r'StreamsNearStreets' arcpy.MakeFeatureLayer_management(arcpy.SelectLayerByLocation_management(inputFC,"WITHIN_A_DISTANCE",selectFC,"100 Meters","NEW_SELECTION",'#'), outputFC,'','','') print "Streams within 100 Meters of current streets: " + str(arcpy.GetCount_management(outputFC)) # Create an ArcSDE connection file for connecting to the proposedStreets2k9 version folderName = sdeConnFilePath fileName = proposedStreetsVersion serverName = "gpserver" serviceName = "5151" databaseName = "" authType = "DATABASE_AUTH" username = "toolbox" password = "toolbox" saveUserInfo = "SAVE_USERNAME" versionName = analysisVersion saveVersionInfo = "SAVE_VERSION" arcpy.CreateArcSDEConnectionFile_management (folderName, fileName, serverName, serviceName, databaseName, authType, username, password, saveUserInfo, versionName, saveVersionInfo) # Perform the same analysis on the proposedStreets2k9 version to see the effect of the proposed changes. inputFC = sdeConnFilePath + os.sep + proposedStreetsVersion + os.sep + r'TOOLBOX.Redlands\TOOLBOX.streams' selectFC = sdeConnFilePath + os.sep + proposedStreetsVersion + os.sep + r'TOOLBOX.Redlands\TOOLBOX.street' outputFC = sdeConnFilePath + os.sep + defaultVersionConnection + os.sep + r'NewStreamsNearStreets' arcpy.MakeFeatureLayer_management(arcpy.SelectLayerByLocation_management(inputFC,"WITHIN_A_DISTANCE",selectFC,"100 Meters","NEW_SELECTION",'#'), outputFC,'','','') print "Streams projected to be within 100 Meters of streets after proposed street additions:" + str(arcpy.GetCount_management(outputFC))
Acceder a las clases de entidades versionadas por medio de capas de entidades/vistas de tabla con herramientas de geoprocesamiento
El flujo de trabajo que se va a utilizar a la hora de acceder a las clases de entidades versionadas por medio de capas de entidades o vistas de tabla es el siguiente:
- Cree una capa mediante las herramientas Crear capa de entidades o Crear vista de tabla para todas las entradas. Asegúrese de utilizar el archivo de conexión de ArcSDE que incorpora la versión principal o de inicio especificada en la propiedad Versión del archivo de conexión.
- Utilice estas capas en todas las herramientas.
- Cuando desee cambiar la versión en la que se encuentra trabajando, utilice la herramienta Cambiar versión.
- Siga utilizando las capas de entidades en todas las herramientas. El geoprocesamiento aplicará la versión a la que el espacio de trabajo abierto apunta después de utilizar la herramienta Cambiar versión.
- Utilice la herramienta Cambiar versión como estime el proyecto para cambiarse a otras versiones y así llevar a cabo el análisis.
Secuencia de comandos de Python mostrando el flujo de trabajo para utilizar las capas de entidades versionadas
# VersionedFeatureLayersExample.py # Description: Simple example showing how to access versioned feature classes using layers. # Author: ESRI # import system modules import arcpy from arcpy import env import sys, os # Set Environments env.workspace = sys.path[0] + os.sep + "gpserver5151toolboxDEFAULT.sde" # Create the layers arcpy.MakeFeatureLayer_management(r'TOOLBOX.Redlands\TOOLBOX.street', 'RedlandsStreets') arcpy.MakeFeatureLayer_management(r'TOOLBOX.Redlands\TOOLBOX.streams', 'RedlandsStreams') # Perform analysis on the Default version to determine current number of streams within 100 meters of streets. arcpy.MakeFeatureLayer_management(arcpy.SelectLayerByLocation_management("RedlandsStreams","WITHIN_A_DISTANCE","RedlandsStreets","100 Meters","NEW_SELECTION",'#'), 'StreamsNearStreets','','','') print "Streams within 100 Meters of current streets: " + str(arcpy.GetCount_management("StreamsNearStreets")) # Change to the development version arcpy.ChangeVersion_management('RedlandsStreets','TRANSACTIONAL', 'TOOLBOX.proposedStreets2k9','') # Perform the same analysis on the development version to see the effect of the proposed changes. arcpy.MakeFeatureLayer_management(arcpy.SelectLayerByLocation_management("RedlandsStreams","WITHIN_A_DISTANCE","RedlandsStreets","100 Meters","NEW_SELECTION",'#'), 'NewStreamsNearStreets','','','') print "Streams projected to be within 100 Meters of streets after proposed street additions: " + str(arcpy.GetCount_management("NewStreamsNearStreets"))
Herramientas de uso compartido y datos de ArcSDE
La forma recomendada de compartir herramientas, ya sea en una red o en servicios de geoprocesamiento, es por medio de una estructura de carpetas de uso compartido de herramientas, tal y como se muestra en la imagen. Se copiará o creará el archivo de conexión de ArcSDE necesario en la carpeta ToolData junto con el resto de datos necesarios para que la herramienta de ejecute correctamente.
Deberá introducir las herramientas de modelo y secuencia de comandos que desarrolle para acceder al archivo de conexión de ArcSDE que se encuentra en la carpeta ToolData por medio de una ruta relativa al archivo de conexión.
Existe otro método para proporcionar acceso, que consiste en el almacenamiento del archivo de conexión de ArcSDE en una ubicación que sea accesible desde la red. La herramienta accederá entonces a este archivo de conexión de ArcSDE por medio de una ruta UNC.
Seguramente se habrá dado cuenta de que esto realmente no se diferencia mucho del modo en que compartiría otros datos de la geodatabase, como por ejemplo, los datos de geodatabases de archivos. En lo que respecta a las geodatabases de archivos, deberá suministrar la carpeta de la geodatabase de archivos (equivalente a suministrar el archivo de conexión de ArcSDE) junto con las herramientas o proporcionar acceso a la geodatabase de archivos desde la red y permitir que las herramientas puedan acceder a los datos por medio de rutas UNC.