3 votos

¿Sustitución de la fuente de datos de la capa de servicio de ArcMap mediante ArcPy?

Tengo muchos documentos de mapas que apuntan a una capa de servicio de imágenes alojada que ha cambiado de nombre.

Me gustaría escribir un script de ArcPy que reemplace las fuentes de datos de las capas de servicio que han cambiado de nombre. Hasta ahora he intentado lo siguiente desde la ventana de Python, sin éxito (asumiendo que la única capa en el MXD es la capa de servicio):

mxd = arcpy.mapping.MapDocument("CURRENT")
lyr = arcpy.mapping.ListLayers(mxd)[0]
sourceURL = lyr.serviceProperties["URL"]
arcpy.AddMessage("Source URL: {0}".format(sourceURL))
destURL = "https:\path\to\image\service"
arcpy.AddMessage("Destination URL: {0}".format(destURL))

lyr.findAndReplaceWorkspacePath(sourceURL, destURL)

arcpy.RefreshTOC()
arcpy.RefreshActiveView()
mxd.save()

4voto

jeff porter Puntos 1808

No creo que sea posible hacerlo así, y la razón es que las capas de servicio no admiten rutas de espacio de trabajo. Usted puede probar esto en su capa por lyr.supports("WORKSPACEPATH") que debería devolver False . Sin embargo, puede utilizar UpdateLayer para reemplazar la capa de servicio antigua por una nueva creada por usted con la URL correcta. Estoy bastante seguro de que para hacerlo de esta manera, sin embargo, el mxd no se puede abrir, por lo que tendría que ejecutarlo desde un script independiente:

mxd = arcpy.mapping.MapDocument(path to your .mxd)
df = arcpy.mapping.ListDataFrames(mxd)[0]
newLayer = arcpy.mapping.Layer(new service .lyr)
oldLayer = arcpy.mapping.ListLayers(mxd)[0]
arcpy.mapping.UpdateLayer(df, oldLayer, newLayer, False)
mxd.save()

http://desktop.arcgis.com/en/arcmap/10.3/analyze/arcpy-mapping/updatelayer.htm

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