Saya memiliki banyak folder proyek di mana setiap folder proyek dapat memiliki banyak subfolder. Subfolder ini dapat berisi mxds, shapefile, gdb pribadi, dan fgdb. Dalam banyak kasus, pengguna lupa memeriksa "Use Relative Paths" sebelum menyimpan mxds, jadi ketika folder tersebut disalin, tautan sumber data menjadi rusak.
Saya ingin menulis skrip arcpy mandiri yang merayapi melalui direktori, membuka setiap mxd, menyetel relatifPaths menjadi true, lalu menyimpan mxd. Apakah ada skrip yang melakukan ini di suatu tempat?
Properti relativePaths pada objek MapDocument dibaca hanya. Apakah ada cara lain untuk mengubahnya?
Jawaban:
Ini dimungkinkan menggunakan skrip python berikut (dengan terima kasih kepada Neil Clemmons di forum ESRI ). Anda akan memerlukan perpustakaan comtypes dan modul Snippets dari Pierssen Consulting.
sumber
Tidak mungkin dalam 10.0 , tapi saya telah berhasil menggunakan ArcObjects dengan Python untuk tugas-tugas yang relatif sederhana seperti ini di mana menulis aplikasi .NET akan berlebihan, tetapi fungsionalitas yang diperlukan tidak terpapar dalam modul arcpy / arcgisscripting. Gunakan os.walk untuk merayapi bagian pohon direktori.
Untuk bit ArcObjects, gunakan
IMapDocument.Open()
untuk membuka MXD (tanpa harus membukanya di ArcMap), masukkan keIMxDocument
dan setelRelativePaths
ke true, dan gunakanIMapDocument.Save()
untuk menyimpannya.sumber