Bisakah ArcGIS ModelBuilder membuka file Excel untuk pengeditan manual, lalu mengumpankan hasil edit itu kembali ke model?

10

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).

Model akan berhenti sementara file Excel diedit, kemudian melanjutkan setelah disimpan dan ditutup

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.

the_bonze
sumber
1
Saya cukup yakin dengan alat pembangun model standar Anda tidak akan dapat melakukan ini karena tidak ada cara menghentikan model, Anda juga akan memerlukan semacam pemicu untuk mengatakan pengguna telah menutup Excel untuk memulai kembali model. Anda mungkin dapat mencapai ini dengan semacam skrip dikirim ke loop tak terbatas melihat bendera dalam file teks setelah itu melahirkan proses yang terpisah (Excel)? Saya tidak pernah melakukan itu dan tidak tahu apa itu jebakan. Jika Anda ingin menyimpannya di modelbuilder saya akan melakukan pengeditan excel terlebih dahulu kemudian jalankan model.
Hornbydd
Terima kasih @Hornbydd - Saya memiliki pemikiran yang sama. Mengedit file terlebih dahulu dan kemudian menjalankan model adalah apa yang telah saya sarankan, tetapi saya telah diberitahu bahwa itu perlu menjadi satu, model yang terintegrasi ...
the_bonze
1
Saya pikir skrip dapat melihat cap tanggal dan waktu file untuk mengetahui apakah sudah diedit, kemudian melanjutkan model dari sana? Menjeda itu masalahnya, saya pikir.
the_bonze
Ya, pembangun model dirancang untuk mengotomatiskan alur kerja untuk mempercepat pemrosesan, tidak memiliki jeda tak tentu di tengah, apa yang terjadi jika pengguna itu pergi makan siang misalnya? :) Sama seperti saya sekarang!
Hornbydd

Jawaban:

1

Ini terdengar seperti Anda perlu mengembangkan lebih dari alat Python khusus daripada model di ModelBuilder. xlwtatau xlutilsdi http://www.python-excel.org/ akan memungkinkan Anda menulis ke file Excel Anda ( XlsxWriterakan 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.

Chad Cooper
sumber
Apakah Python AddIns sudah menyediakan opsi GUI canggih dalam 10.1+? Saya pikir hanya .NET dan Java AddIns memberikan ini ... Python hanya menawarkan AddIns tanpa GUI (perintah, alat).
Jürgen Zornig
1
@ JürgenZornig Tidak mudah: anothergisblog.blogspot.com/2013/07/…
Chad Cooper
Terima kasih @ChadCooper. Saya perlu menyimpan model dalam model builder, jadi add-in Python baik-baik saja, tetapi model sebagai entitas perlu dalam model builder daripada alat Python full-blown.
the_bonze
@Chad, terima kasih juga untuk Tutorial Cepat ArcPy / Tkinter yang bagus ini ... harus coba ini!
Jürgen Zornig
1

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:

  1. Itu tidak memerlukan perpustakaan eksternal
  2. fungsi panggilan tidak memungkinkan kelanjutan skrip sampai excel ditutup
  3. Anda dapat menentukan dokumen excel sebagai argumen kedua
  4. 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.

James Milner
sumber