He comprobado las otras respuestas aquí y ninguna de las respuestas me funcionó ...
Es una cuestión "simple" de encontrar una capa por nombre en un mapa y cambiar su fuente de datos.
Aquí está mi guión:
#-- New Source
newSource = os.path.join(currDir, lyrZones + "_Dep" + dirNum + ".shp")
#-- Validation
if arcpy.Exists(newSource):
print "The new source exists!"
else:
print "Not found!"
#-- Find the layer and change its source
for lyr in arcpy.mapping.ListLayers(mxd):
if lyr.name == lyrZones:
print "Layer found!"
print layers.dataSource
print " Replacing source..."
lyr.replaceDataSource(currDir, "SHAPEFILE_WORKSPACE", newSource)
print lyr.dataSource
Lo ejecuto desde un script de Python fuera de ArcGIS.
Puede ver que la fuente existe, la capa se encuentra, puedo acceder a su fuente de datos imprimiéndola, pero lyr.replaceDataSource produce un error (error inesperado ... no ayuda mucho ...)
He estado trabajando en ello durante 4-5 horas y me faltan soluciones para probar. ¿Alguna idea de lo que puede causar el accidente?
D:\test
y vea si eso funciona.Respuestas:
Sé que esto es bastante antiguo, pero acabo de encontrar este mismo problema y me sorprendió la falta de soluciones. La solución es muy simple, pero no tendría forma de conocerla en base a la ayuda prácticamente inexistente de ESRI:
No incluya la extensión del archivo de forma. ...Eso es.
Tiene que leer:
fuente
Diversión con depuración! Prueba esto:
fuente
No sé si esto te ayuda o no, pero he encontrado este error al intentar cambiar las fuentes de datos SDE para una capa. Lo que encontré es que cuando ejecuté desde PyScripter, se puso en cola un proceso python.exe de 64 bits. Obtendría el ValueError. Si forzara la secuencia de comandos para que se ejecute usando el python.exe de 32 bits a través del símbolo del sistema, no obtendría el error. No sé si eso ayudaría a su problema o no, pero vale la pena intentarlo.
fuente
La mayoría de la información sobre esto está aquí . Pero para resolver esto, entré en la ventana de Python dentro de ArcCatalog para verificar las definiciones de ESRI de cada parámetro en la función .replaceDataSource.
.replaceDataSource (workspace, workspace_type, dataset_name)
espacio de trabajo = espacio de trabajo de nueva fuente de datos
workspace_type = el tipo de espacio de trabajo real que figura en la sección de reemplazo del origen de datos de la ayuda vinculada.
dataset_name = nombre del archivo sin el tipo de archivo (IE: .shp), no el nombre del conjunto de datos en la tabla de contenido. Tampoco es necesario el directorio frente a él.
fuente