Menggunakan metode mxd.findAndReplaceWorkspacePaths, jika dan MXD diperbarui dan jalur file koneksi .sde bergerak lagi semua sumber data akan rusak lagi.
Apakah ada metode untuk memperbarui setiap lapisan SDE secara permanen dalam Daftar Isi MXD untuk secara permanen menyimpan Server dan Layanan SDE? Yaitu. Cukup ganti SERVER dan INSTANCE untuk setiap lapisan SDE dalam MXD menggunakan python atau ArcObjects di Pyhton?
"Database Connections\Connection to Foobar.sde"
, dan tidak ada cara untuk hanya meneruskan atau menyimpan info SERVER dan SERVICE secara langsung. Saya akan senang terbukti salah. Saya bisa membayangkan hack untuk menyimpan file sde yang dihasilkan secara dinamis di direktori yang sama dengan mxd, atau bahkan mungkin di dalam mxd, dan kemudian merujuknya sebagai gantinya; tidak tahu bagaimana menerapkannya.Jawaban:
Saya telah menemukan solusi untuk memutus ketergantungan pada jalur ke file koneksi .sde menggunakan ArcPy dan metode berikut.
Cara ini bekerja:
Anda dapat mengganti nama atau menghapus file koneksi setelah MXD telah diperbaiki dan disimpan. Ini akan terus terbuka tanpa masalah setelah file koneksi tidak ada lagi.
Metode-metode ini JANGAN bekerja:
Anda TIDAK BISA mengganti nama atau menghapus file koneksi setelah MXD telah diperbaiki. MXD akan mencari file koneksi .sde di lokasi yang sama selalu setiap kali dibuka.
sumber
Anda perlu berjalan lapisan grup bersarang lalu gunakan
arcpy.CreateArcSDEConnectionFile_management
untuk membuat sde baru menggunakan parameter darilyr.serviceProperties
, dan meneruskan parameter sebagaiservProp.get
atauarcpy.GetParameterAsText(0)
.Jangan lupa gunakan
os.remove(temp_sde) if os.path.exsists(temp_sde) else None
.sumber
Ini mungkin terlalu sederhana tapi ...
Jika Anda mengganti nama koneksi lama dan beri nama yang baru dengan nama lama apakah itu memberikan hasil yang lebih baik?
sumber