Kapan menggunakan ModelBuilder di atas scripting Python dan sebaliknya?

71

Saya baru mengenal skrip Python di ArcGIS tetapi tidak baru di ModelBuilder.

Saya ingin tahu manfaat dari Python vs ModelBuilder.

Kapan kita harus menulis skrip Python untuk otomatisasi GIS daripada menggunakan ModelBuilder?

Apa kemampuan otomatisasi dari Python yang tidak dapat kita temukan di ModelBuilder?

BBG_GIS
sumber

Jawaban:

82

Saya percaya bahwa pengguna harus mendefinisikan tujuan mereka dengan jelas sebelum memutuskan set alat yang akan digunakan. Script ModelBuilder dan Python unggul di tugas yang berbeda. Beberapa pemikiran:

  1. ModelBuilder tidak memiliki kemampuan pemetaan, sedangkan arcpy.mapping tidak.
  2. Python dapat digunakan untuk mengoptimalkan alur kerja, seperti dengan paket multiprosesing atau dengan pemrosesan paralel .
  3. Python memungkinkan untuk loop bersarang dan alat logika berulang yang berguna lainnya. Untuk mencapai hasil yang serupa di ModelBuilder, Anda harus membuat model yang rumit, rumit, dan bersarang.
  4. Manipulasi teks sederhana sangat mudah dengan Python dan sangat sulit atau tidak mungkin dengan ModelBuilder.

    mis. untuk mengubah nama daftar nama file dari, misalnya "m_2010_naip_2310345_nw.img" menjadi "2310345nw.img" dapat dengan mudah dilakukan dengan Python menggunakan os.pathmodul.

Di samping itu:

  1. ModelBuilder sangat berguna untuk secara cepat menyatukan alat-alat umum dan menghilangkan kebutuhan untuk debugging skrip.

  2. ModelBuilder memiliki iterator rekursif yang sangat berguna yang mudah diterapkan untuk loop melalui folder dan subfolder.

  3. ModelBuilder unggul dalam hal visual dan intuitif yang menggambarkan alur kerja untuk tugas-tugas rumit .

  4. ModelBuilder dapat memasukkan alat skrip Python .

Harun
sumber
5
Menjelaskan perbedaan antara Python dan Model Builder di ArcGIS dengan jelas. Terima kasih
BBG_GIS
24
Saya akan menambahkan juga: 1. Anda dapat menjalankan skrip Python Anda di luar ArcMap 2. Anda dapat menggunakan ArcObjects dengan Python, 3. Mungkin ada beberapa perbedaan kecepatan.
Tomek
3
+1 LOOPS TERTARANG & pemetaan arcpy! Saya suka kemampuan untuk membuat perhitungan dalam skrip dan menambahkannya ke tabel atribut atau lebih baik lagi ke tata letak peta (area masing-masing jenis lahan basah misalnya).
Roy
2
Saya membaca skrip python untuk buku ArcGIS. Saya juga menambahkan beberapa kemampuan: 1- kursor skrip memungkinkan Anda mengulangi catatan dalam sebuah tabel, membaca baris yang ada dan menyisipkan baris baru. 2 - scripting dapat digunakan untuk membungkus perangkat lunak lain - yaitu, untuk menyatukan aplikasi. misalnya python dapat digunakan untuk mengakses fungsi dalam Microsoft Excel atau dalam paket statistik R. Skrip 3-A dapat dijalankan sebagai skrip yang berdiri sendiri pada disk di luar ArcGIS. Anda tidak perlu menjalankan ArcMap atau ArcCatalog untuk skrip untuk kerja. (Python Scripting untuk ArcGIS, Bab 2, Halaman 39)
BBG_GIS
24

Jika Anda hanya bekerja dalam batas-batas ArcGIS, ada beberapa pertimbangan yang akan saya pertimbangkan ketika mencoba menentukan pendekatan yang akan diambil.

  • Apa yang ingin kamu capai,
  • Apa set keahlian Anda saat ini,
  • Apakah Anda akan membagikan pekerjaan Anda dengan orang lain untuk digunakan, belajar dari, atau memanipulasi, dan
  • Siapa audiens yang dituju.

Dengan pertimbangan tersebut:

  1. Sering kali lebih cepat dan lebih mudah untuk membangun proses di ModelBuilder daripada di Python, kecuali jika bagian dari proses Anda tidak dapat direplikasi dalam ModelBuilder.
  2. Jika Anda tidak tahu Python & tidak memiliki niat untuk mempelajarinya, ModelBuilder adalah pilihan yang bagus.
  3. Jika Anda tidak tahu Python & ingin belajar untuk memasukkannya ke dalam keahlian Anda, ModelBuilder adalah cara yang bagus untuk memulai dengan membuat model sederhana, kemudian mengekspornya ke Python sehingga Anda memiliki kerangka proses akhir Anda yang telah dibuat sebelumnya untuk Anda . Metode ini memang memakan biaya, karena ada banyak informasi & variabel asing yang biasanya dibuat selama proses konversi, tetapi masih merupakan cara yang bagus untuk mulai belajar.
  4. Jika Anda membuat alat untuk penggunaan pribadi, menggunakan metode apa pun yang Anda rasa paling nyaman adalah rute yang harus ditempuh. Saya pribadi menggunakan keduanya, tergantung kebutuhan saya.
  5. Jika Anda berencana untuk membagikan analisis Anda dengan orang lain, dan ingin membagikan model / skrip Anda dengan orang lain adalah bagian dari dokumentasi proses Anda, sebuah model umumnya lebih mudah diikuti dan dipahami oleh orang-orang non-teknis.

Mungkin tidak ada jawaban untuk "yang lebih baik" untuk penggunaan pribadi, tetapi jika Anda mencari peluang kerja jangka panjang, dengan mempelajari Python, Anda akan membedakan diri dari mereka yang hanya tahu cara menggunakan alat yang diprogram sebelumnya, atau hanya tahu cara menggunakan ModelBuilder. Anda juga memberi diri Anda kemampuan untuk pergi ke luar batas Python untuk ArcGIS (ArcPy), dan mulai mengotomatiskan lebih banyak tugas dan proyek dengan menggunakan perpustakaan GIS milik dan sumber terbuka lainnya, serta banyak perpustakaan non-GIS (yaitu database , manipulasi gambar, statistik, dll).

Ryan Dalton
sumber
20

Model Builder adalah bahasa pemrograman visual yang hebat dan mudah dipelajari dan pintu masuk yang baik untuk pemrograman GIS secara umum. Tetapi dalam beberapa hal python dapat berbuat lebih banyak.

Salah satu contoh adalah integrasi perpustakaan GIS non-ESRI. Hampir semua SIG Open Source dapat disorot melalui python juga (misalnya GRASS , Sextante , QGIS , SAGA ). Ini banyak membantu saya, karena saya hanya memiliki lisensi ArcView. Jadi setiap kali saya tidak dapat menggunakan alat geoprocessing tertentu di ArcGIS, saya mencari opsi lain yang tersedia di Open Source GIS. Saya kemudian mengambil OpenSource-tools ini dan menggabungkannya dengan ArcGIS baik dalam skrip python yang lebih besar atau mengintegrasikannya dalam ModelBuilder melalui skrip python yang lebih kecil.

Saya yakin anggota lain dapat menyebutkan lebih banyak keuntungan.

Martin
sumber
9

Saat menggunakan Python dan ArcGIS, Anda mendapatkan seluruh fungsionalitas Python selain apa yang sudah Anda miliki di ArcGIS. Jika Anda membutuhkan kekuatan dan fleksibilitas semacam ini tergantung pada keinginan Anda. Selain itu, mengenal dan benar-benar memanfaatkan bahasa pemrograman seperti Python membutuhkan waktu. Jika investasi ini layak untuk Anda, itu terserah Anda. Namun, untuk pemrosesan data yang serius, bahasa skrip yang sebenarnya adalah tambahan yang sangat bagus di gudang senjata Anda.

Terlepas dari fungsionalitas apa pun yang ModelBuilder mungkin lewatkan, ada juga diskusi yang lebih mendasar. Secara umum, skrip jauh lebih cocok untuk membuat alur kerja yang kompleks. Kode diproses dari atas ke bawah, dan tugas kompleks dapat dibagi lagi menjadi sub tugas yang lebih kecil menggunakan fungsi mis. atau benda. Alat grafis seperti pembangun model cenderung menjadi spageti besar.

Paul Hiemstra
sumber
7

Saya sebagian membuat skrip Python. Lebih menyenangkan untuk menulis kode daripada main-main dengan menghubungkan garis ke kotak dan semacamnya, setidaknya bagi saya.

Apa yang benar-benar hebat tentang skrip Python adalah Anda dapat menjadwalkan skrip Anda untuk dijalankan pada waktu yang nyaman bagi Anda. Jika Anda memiliki skrip yang membutuhkan waktu cukup lama untuk diselesaikan, atau perlu dijalankan di luar jam kerja reguler, ini benar-benar nyaman. Anda dapat melihat contoh cara menjadwalkan skrip di sini .

Dan seperti @ Harun menyebutkan, Anda dapat dengan mudah mengatur perulangan dalam skrip Python.

Jika Anda hanya memulai dengan skrip Python, Anda mungkin ingin membuat model dengan Model Builder dan mengekspornya sebagai skrip Python. Saya melakukan ini kadang-kadang jika saya mengalami kesulitan memahami cara menggunakan beberapa alat dalam skrip. Ini bisa membantu Anda memahami cara menyatukan skrip.

Patty Jula
sumber
5

Saya telah menemukan bahwa saya tampaknya terjebak dengan tidak ada solusi lebih banyak dengan pembuat model daripada dengan skrip python. Sifat pembangun model yang agak 'kotak hitam' bagi saya membuatnya lebih sulit untuk menemukan di mana masalahnya berada.

Saya juga menemukan bahwa saya dapat menemukan lebih banyak bantuan pada python. Saya cenderung menemukan banyak jalan buntu dan topik tentang pembuat model. Ada juga contoh yang lebih sedikit untuk dilewati, di mana seperti dengan python, Anda mungkin dapat menemukan snipet kecil dari sebagian besar skrip apa pun yang Anda tulis.

Rex
sumber