Bagaimana cara mengubah jalur data sumber untuk setiap file lapisan di folder X menggunakan arcpy?
Saya telah mengikuti Memperbarui dan memperbaiki sumber data dengan arcpy.mapping sebaik mungkin, namun yang saya dapatkan adalah tidak membantu Runtime error <type 'exceptions.ValueError'>: Layer: Unexpected error
yang tidak cukup memberi tahu saya untuk memecahkan masalah apa yang salah atau hilang.
Inilah kode (disederhanakan untuk menguji satu file lapisan):
import arcpy, os
fname = r'K:\Layers\xxx.lyr'
lyr = arcpy.mapping.Layer(fname)
oldpath = lyr.workspacePath
print 'oldpath: ', oldpath
lyr.findAndReplaceWorkspacePath(oldpath, r'C:\some\other.gdb')
print 'newpath: ', lyr.workspacePath
dan hasilnya:
oldpath: K:\Canvec_Utility\Temp.gdb
Traceback (most recent call last):
File "x10x.py", line 12, in <module>
lyr.findAndReplaceWorkspacePath(oldpath, r'C:\some\other.gdb')
File "C:\ESRI\ArcGIS\Desktop10.0\arcpy\arcpy\utils.py", line 181, in fn_
return fn(*args, **kw)
File "C:\ESRI\ArcGIS\Desktop10.0\arcpy\arcpy\_mapping.py", line 601, in findAndReplaceWorkspacePath
return convertArcObjectToPythonObject(self._arc_object.findAndReplaceWorkspacePath(*gp_fixargs((find_workspace_path, replace_workspace_path, validate), True
)))
ValueError: Layer: Unexpected error
((memindahkan 'perbarui' bagian ke dalam jawaban))
arcpy
arcgis-10.0
layers
matt wilkie
sumber
sumber
Runtime error...
dikutip di atas adalah dari shell python interaktif di Arccatalog, yang tidak memberikan traceback. Hasil dengan traceback disalin dari shell perintah.Jawaban:
Sepertinya metode yang benar untuk digunakan ketika berpindah ruang kerja DAN kumpulan fitur fitur adalah lyr.replaceDataSource () . Ini skrip kerja saya:
Dalam pengujian tampaknya memvalidasi dalam metode ini berbeda lagi: itu memverifikasi ruang kerja baru valid, tetapi mengabaikan kelas fitur dan kumpulan data fitur - yang berarti itu tidak akan mengembalikan kesalahan jika target FC tidak ada.
Di sisi lain jika target FC hadir, bahkan di dalam dataset fitur yang berbeda, jalur sumber data baru disesuaikan sesuai terlepas dari apakah validasi benar atau salah.
Perbarui: sekarang di Github untuk memudahkan berbagi dan revisi.
sumber
Tidak membantu
unexpected error
dalam hal ini berarti sesuatu seperti "jalur baru tidak ada" .validate
Parameter opsional default ke True jika tidak ditentukan. Dengan false, skrip selesai tanpa kesalahan tetapi file layer yang dihasilkan masih rusak meskipun jalur tujuan dan kelas fitur ada.hasil
Selain awalnya tidak mengetahui validasi default ke true, bug, atau setidaknya beberapa perilaku yang sangat aneh membuat pemecahan masalah ini menjadi sulit. Memperbarui dan memperbaiki sumber data dengan arcpy.mapping mengatakan Jangan sertakan nama dataset fitur dalam jalur ruang kerja. Kumpulan data fitur adalah bagian dari ruang kerja. Jika kelas fitur, misalnya, dipindahkan dari kelas fitur yang berdiri sendiri ke dalam dataset fitur, dokumen peta akan tetap terbuka tanpa lapisannya pecah " , dan " Jika lapisan atau tabel dalam dokumen peta atau file lapisan dipindahkan ke dalam atau keluar dari dataset fitur, tautannya tidak boleh rusak. "
Ternyata memvalidasi memiliki sudut pandang yang sedikit berbeda. Ya itu tidak masalah di mana di geodatabase baru (ruang kerja) kelas fitur target berada , di tingkat atas atau dalam dataset fitur yang sama sekali berbeda. Namun ruang kerja target harus berisi dataset fitur dengan nama yang sama atau validasi gagal .
Sumber :
sumber