Saya telah ditugaskan untuk membuat model menggunakan ArcGIS ModelBuilder, yang awalnya menjalankan beberapa tugas geoproses, sebelum kemudian bergabung dengan tabel Excel ke hasil dari geoproses tersebut. Namun, model harus benar-benar membuka file Excel terlebih dahulu, agar pengguna dapat mengeditnya secara manual, sebelum pengguna kemudian menyimpan hasil edit dan menutup file. Diharapkan model tersebut akan bergabung dengan file Excel ini ke tabel atribut dataset (masih bagian dari model) sebelum model melanjutkan dengan sejumlah tugas geoproses lainnya.
Saya menyertakan garis besar skematik tingkat tinggi di bawah ini untuk membantu mengilustrasikan poin (saya mengerti ini mungkin tidak masuk akal untuk memulai dengan).
Jadi model akan berjalan, menyelesaikan beberapa tugas geoprosesing, berhenti sebentar untuk membuka file Excel, tunggu pengguna mengeditnya, simpan dan tutup, sebelum melanjutkan untuk bergabung dengan file Excel itu ke tabel atribut dan kemudian menjalankan nomor tugas geoproses lainnya.
Saya harus membayangkan ini akan membutuhkan memasukkan satu atau dua skrip Python ke dalam model. Namun saat ini saya hanya tertarik untuk mengetahui apakah konsep tersebut benar-benar mungkin atau tidak.
sumber
Jawaban:
Ini terdengar seperti Anda perlu mengembangkan lebih dari alat Python khusus daripada model di ModelBuilder.
xlwt
atauxlutils
di http://www.python-excel.org/ akan memungkinkan Anda menulis ke file Excel Anda (XlsxWriter
akan menangani file xlsx). Jika pengeditan kecil, Anda mungkin dapat memasukkan ini ke dalam alat ArcToolbox standar (dengan beberapa kreativitas). Jika Anda menggunakan 10.1+, maka Anda bisa membuat Python Add-In atau Python Toolbox untuk melakukan pekerjaan GUI juga.sumber
Saya sudah memikirkannya dan mungkin saya sudah menemukan solusi baru. Anda mengatur skrip python di kotak alat dengan dua parameter pengguna, pertama lokasi Excel EXE. Ini bahkan dapat dikodekan secara cerdas untuk memeriksa daftar lokasi-lokasi filepath hardcode yang kemungkinan (Office12, Office13 dll).
Selanjutnya gunakan fungsi subprocess.call. Ada beberapa hal yang sangat rapi tentang penggunaan metode ini:
Itu satu baris kode!
import subprocess subprocess.call(["C:\Program Files (x86)\Microsoft Office\Office12\EXCEL.EXE", "Test.xlsx"])
#Replace args with user inputs (sys.argv[1], sys.argv[2] respectively)
Satu-satunya hal adalah saya tidak 100% yakin apakah ini akan bekerja di pembangun model, ini perlu diuji, namun saya tidak melihat mengapa itu tidak terjadi tetapi karena saya yakin Anda tahu Arc adalah binatang yang temperamental.
sumber