Verifiquei as outras respostas aqui e nenhuma delas funcionou para mim ...
É uma questão "simples" de encontrar uma camada pelo nome em um mapa e alterar sua fonte de dados.
Aqui está o meu script:
#-- 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
Eu o executo a partir de um script python fora do ArcGIS.
Você pode ver que a fonte existe, a camada foi encontrada, eu posso acessar sua fonte de dados imprimindo-a, mas o lyr.replaceDataSource causa um erro (erro inesperado ... não ajuda muito ...)
Estou trabalhando há 4-5 horas e estou com poucas soluções para tentar. Alguma idéia do que pode causar o acidente?
D:\test
e veja se isso funciona.Respostas:
Sei que isso é bastante antigo, mas acabei de encontrar o mesmo problema e fiquei surpreso com a falta de soluções por aí. A solução é muito simples, mas você não teria como saber com base na ajuda praticamente inexistente da ESRI:
Não inclua a extensão shapefile. ...É isso aí.
Deve ler:
fonte
Diversão com depuração! Tente o seguinte:
fonte
Não sei se isso ajuda ou não, mas encontrei este erro ao tentar alternar as fontes de dados SDE para uma camada. O que eu descobri é que, quando eu corria do PyScripter, ele processava um processo python.exe de 64 bits. Eu pegaria o ValueError. Se eu forcei a execução do script usando o python.exe de 32 bits via Prompt de Comando, não recebi o erro. Não sei se isso ajudaria ou não o seu problema, mas vale a pena tentar!
fonte
A maioria das informações está aqui . Mas, para resolver isso, entrei na janela python no ArcCatalog para verificar as definições de ESRI de cada parâmetro na função .replaceDataSource.
.replaceDataSource (espaço de trabalho, tipo de espaço de trabalho, nome do conjunto de dados)
espaço de trabalho = espaço de trabalho da nova fonte de dados
workspace_type = o tipo de espaço de trabalho real listado na seção substituir fonte de dados da ajuda vinculada.
dataset_name = nome do arquivo sem o tipo de arquivo (IE: .shp), não o nome do conjunto de dados no índice. Também não é necessário o diretório à sua frente.
fonte