Usando el método mxd.findAndReplaceWorkspacePaths, si se actualiza y MXD y la ruta de acceso del archivo de conexión .sde se vuelven a romper todas las fuentes de datos.
¿Existe algún método para actualizar permanentemente cada capa SDE en una tabla de contenido MXD para almacenar permanentemente el servidor y el servicio SDE? Es decir. ¿Simplemente reemplace el SERVIDOR y la INSTANCIA para cada capa SDE en un MXD usando Python o ArcObjects en Pyhton?
"Database Connections\Connection to Foobar.sde"
, y no hay forma de pasar o guardar la información del SERVIDOR y SERVICIO directamente. Estaría encantado de que se demuestre lo contrario . Puedo imaginar un truco para almacenar un archivo sde generado dinámicamente en el mismo directorio que el mxd, o incluso tal vez dentro del mxd, y luego referirme a eso; Sin embargo, no sé cómo implementarlo.Respuestas:
He encontrado una solución para romper la dependencia de la ruta al archivo de conexión .sde usando ArcPy y el siguiente método.
De esta manera funciona:
Puede cambiar el nombre o eliminar el archivo de conexión después de que el MXD haya sido reparado y guardado. Continuará abriéndose sin problemas después de que el archivo de conexión ya no esté allí.
Estos métodos NO funcionan:
NO PUEDE cambiar el nombre o eliminar el archivo de conexión después de que se haya reparado el MXD. El MXD buscará el archivo de conexión .sde en la misma ubicación siempre que se abra.
fuente
Debe recorrer capas de grupo anidadas y luego usarlas
arcpy.CreateArcSDEConnectionFile_management
para crear nuevos SDE utilizando parámetros delyr.serviceProperties
, y pasar parámetros comoservProp.get
oarcpy.GetParameterAsText(0)
.No te olvides de usar
os.remove(temp_sde) if os.path.exsists(temp_sde) else None
.fuente
Esto puede ser demasiado simple pero ...
Si cambia el nombre de la conexión anterior y nombra la nueva con el nombre anterior, ¿eso logra un mejor resultado?
fuente