8 votos

Reemplazar permanentemente a/actualización de servidor/servicio en cada Capa de ArcSDE en MXD?

El uso de la mxd.findAndReplaceWorkspacePaths método, si y MXD se actualiza y la ruta de acceso de la la .archivo de conexión de sde se mueve de nuevo todas las fuentes de datos va a romper de nuevo.

Hay un método para la actualización permanente de cada SDE capa en un MXD Tabla de Contenidos para almacenar de forma permanente el SDE Servidor y el Servicio? Es decir. Basta con sustituir el SERVIDOR y la INSTANCIA para cada uno de los SDE capa en un MXD el uso de python o de ArcObjects en Pyhton?

7voto

Bananas Puntos 162

He encontrado una solución para romper la dependencia de la ruta de acceso a la .archivo de conexión de sde el uso de ArcPy y el método siguiente.

De esta manera funciona:

lyr.replaceDataSource(sdeConn, "SDE_WORKSPACE", lyr.datasetName, False)
table.replaceDataSource(sdeConn, "SDE_WORKSPACE", lyr.datasetName, False)

Puede cambiar el nombre o eliminar el archivo de conexión después de la MXD ha sido reparado y se guarda. Seguirá abierto sin problema después de la conexión al archivo ya no existe.

Estos métodos NO funcionan:

mxd.findAndReplaceWorkspacePaths
lyr.findAndReplaceWorkspacePath

Usted PUEDE cambiar el nombre o eliminar el archivo de conexión después de la MXD ha sido reparado. El MXD buscará el .archivo de conexión de sde en la misma ubicación de siempre cada vez que se abre.

1voto

gust1n Puntos 33

Usted necesita para caminar grupo anidado capas, a continuación, utilizar arcpy.CreateArcSDEConnectionFile_management crear nueva sde el uso de parámetros de lyr.serviceProperties, y pasar parámetros como servProp.get o arcpy.GetParameterAsText(0).

No olvides usar os.remove(temp_sde) if os.path.exsists(temp_sde) else None.

for maplayer in lyr_list:
    walknestedgroups(maplayer)
    servProp = maplayer.serviceProperties
    if maplayer.serviceProperties["ServiceType"] == "SDE":
        host = servProp.get('Server','N\A')
    if host in ("MyServer"):
        remap_sde(maplayer)

0voto

Niall C. Puntos 1234

Esto puede ser demasiado simple, pero...
Si cambia el nombre de la antigua conexión y el nombre de la nueva con la vieja en el nombre que lograr un mejor resultado?

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X