Saya sudah memeriksa jawaban lain di sini dan tidak ada jawaban yang berfungsi untuk saya ...
Ini masalah "sederhana" untuk menemukan layer dengan nama di peta dan mengubah sumber data itu.
Ini skrip saya:
#-- 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
Saya menjalankannya dari skrip python di luar ArcGIS.
Anda dapat melihat bahwa sumbernya ada, lapisannya ditemukan, saya dapat mengakses sumber datanya dengan mencetaknya, tetapi lyr.replaceDataSource menyebabkan kesalahan (Kesalahan tak terduga ... tidak banyak membantu ...)
Saya telah bekerja selama 4-5 jam sekarang dan saya kekurangan solusi untuk mencoba. Adakah yang tahu apa yang bisa menyebabkan crash?
D:\test
dan lihat apakah itu berhasil.Jawaban:
Saya tahu ini cukup lama, tetapi saya baru saja mengalami masalah yang sama dan terkejut dengan kurangnya solusi di luar sana. Solusinya sangat sederhana, tetapi Anda tidak akan bisa mengetahuinya berdasarkan pada bantuan ESRI yang praktis tidak ada:
Jangan sertakan ekstensi shapefile. ...Itu dia.
Harus dibaca:
sumber
Bersenang-senang dengan debugging! Coba ini:
sumber
Saya tidak tahu apakah ini membantu Anda atau tidak, tetapi saya mengalami kesalahan ini mencoba untuk beralih sumber data SDE untuk layer. Apa yang saya temukan adalah bahwa ketika saya menjalankan dari PyScripter, itu akan menggulung proses python.exe 64-bit. Saya akan mendapatkan ValueError. Jika saya memaksa skrip untuk menjalankan menggunakan python.exe 32-bit melalui Command Prompt, saya tidak akan mendapatkan kesalahan. Saya tidak tahu apakah itu akan membantu masalah Anda atau tidak, tetapi patut dicoba!
sumber
Sebagian besar info tentang ini ada di sini . Tetapi untuk mengatasi ini saya pergi ke jendela python dalam ArcCatalog untuk memeriksa definisi ESRI dari setiap parameter dalam fungsi .replaceDataSource.
.replaceDataSource (workspace, workspace_type, dataset_name)
workspace = ruang kerja sumber data baru
workspace_type = jenis ruang kerja aktual yang tercantum di bagian ganti sumber data dari bantuan yang ditautkan.
dataset_name = nama file tanpa tipe file (IE: .shp), bukan nama dataset dalam daftar isi. Tidak perlu direktori di depannya juga.
sumber