ModelBuilder Python komut dosyası üzerinde ne zaman kullanılır?


71

ArcGIS'te Python scriptlerinde yeniyim ama ModelBuilder'da yeniyim.

ModelBuilder vs Python yararlarını bilmek istiyorum.

ModelBuilder kullanmak yerine Python betiğini GIS otomasyonu için ne zaman yazmalıyız?

Python'un ModelBuilder'da bulamadığımız otomasyon yetenekleri nelerdir?

Yanıtlar:


82

Hangi araçları kullanacağına karar vermeden önce, kullanıcının amaçlarını açıkça tanımlaması gerektiğine inanıyorum. ModelBuilder ve Python komut dosyası farklı görevlerde mükemmeldir. Birkaç düşünce:

  1. ModelBuilder hiçbir eşleme yeteneğine sahip değildir, oysa arcpy.mapping da öyledir .
  2. Python, çoklu işlem paketinde veya paralel işlemede olduğu gibi iş akışlarını optimize etmek için kullanılabilir .
  3. Python iç içe döngüler ve diğer kullanışlı yinelemeli mantık araçları için izin verir . ModelBuilder'da da benzer bir sonuç elde etmek için karmaşık ve karmaşık, iç içe modeller oluşturmanız gerekir.
  4. Basit metin işleme Python ile çok kolaydır ve ModelBuilder ile çok zor veya mümkün değildir.

    örneğin, "m_2010_naip_2310345_nw.img" ile "2310345nw.img" arasındaki dosya adlarının bir listesini yeniden adlandırmak için os.pathmodül kullanılarak Python ile kolayca yapılabilir .

Diğer yandan:

  1. ModelBuilder, yaygın araçları hızlı bir şekilde bir araya getirmek ve hata ayıklama komut dosyalarına duyulan ihtiyacı ortadan kaldırmak için çok kullanışlıdır.

  2. ModelBuilder, klasörler ve alt klasörler arasında geçiş yapmak için uygulaması kolay, çok kullanışlı bir özyinelemeli yineleyiciye sahiptir.

  3. ModelBuilder, karmaşık görevler için iş akışını görsel olarak ve sezgisel olarak gösteren mükemmel bir performans sergiliyor .

  4. ModelBuilder, Python script araçlarını içerebilir .


5
ArcGIS’te Python ve Model Builder arasındaki farkları açıkça açıkladı. Teşekkürler
BBG_GIS

24
Ayrıca şunu eklerdim: 1. Python betiğinizi ArcMap dışında çalıştırabilirsiniz. 2. ArcObjects'i Python, 3'te kullanabilirsiniz.
Tomek


3
+1 NESTED LOOPS & arcpy.mapping! Bir betiğin içinde hesaplamalar yapma ve bunları tablolara ya da daha iyi bir şekilde harita düzenine ekleme (örneğin her sulak alan tipinin alanı) eklemeyi seviyorum.
Roy,

2
ArcGIS kitabı için python komut dosyası okudum. Ayrıca biraz daha yetenekler ekliyorum: 1- script imleçleri bir tablodaki kayıtlar arasında dolaşmanıza, mevcut satırları okumanıza ve yeni satırlar eklemenize izin veriyor. 2 - Diğer yazılımları sarmak, yani uygulamayı bir arada yapıştırmak için komut dosyası kullanılabilir. Örneğin, python, Microsoft Excel'deki veya istatistiksel Paket R'deki işlevlere erişmek için kullanılabilir. 3-Bir komut dosyası, ArcGIS dışındaki bir diskte bağımsız bir komut dosyası olarak çalıştırılabilir. iş. (ArcGIS için Python Komut Dosyası, Bölüm 2, Sayfa 39)
BBG_GIS 13.03.2015

24

Yalnızca ArcGIS sınırları dahilinde çalışıyorsanız, yaklaşma yaklaşımını belirlemeye çalışırken göz önünde bulundurmam gereken birkaç husus var.

  • Ne yapmaya çalışıyorsun?
  • Mevcut yetenek setleriniz neler,
  • Çalışmanızı, kullanmak, öğrenmek veya işlemek için başkalarıyla paylaşacak mısınız ve
  • Hedef kitleniz kim?

Bu düşünceler göz önüne alındığında:

  1. ModelBuilder'da bir işlem oluşturmak, işleminizin bir parçası ModelBuilder'da çoğaltılamadığı sürece Python'da olduğundan daha hızlı ve kolaydır.
  2. Python'u bilmiyorsanız ve öğrenmek istemiyorsanız, ModelBuilder harika bir seçenektir.
  3. Python'u bilmiyorsanız ve bunu beceri setinize dahil etmeyi öğrenmek istiyorsanız, ModelBuilder basit modeller oluşturarak başlamanın harika bir yoludur, daha sonra bunları Python'a dışa aktarın; . Bu yöntem bir maliyete sahiptir, çünkü dönüşüm sürecinde genellikle oluşan birçok yabancı bilgi ve değişken vardır, ancak öğrenmeye başlamak için hala harika bir yoldur.
  4. Kişisel kullanım için araçlar yapıyorsanız, en rahat hissedeceğiniz yöntemi kullanmak genellikle gideceğiniz yoldur. Gereksinimlerime bağlı olarak her ikisini de kişisel olarak kullanıyorum.
  5. Analizinizi başkalarıyla paylaşmayı planlıyorsanız ve modelinizi / komut dosyanızı diğerleriyle paylaşmak istiyorsanız, işlem belgenizin bir parçası olan bir model, teknik olmayan insanlar için izlenmesi ve anlaşılması genellikle daha kolaydır.

Kişisel kullanım için "hangisi daha iyidir" cevabı muhtemelen yoktur, ancak istihdam olanaklarına uzun vadeli bakıyorsanız, Python'u öğrenerek kendinizi yalnızca önceden programlanmış araçların nasıl kullanılacağını bilenlerin dışında tutacaksınız veya sadece ModelBuilder'ı kullanmayı biliyorum. Ayrıca, ArcGIS (ArcPy) için Python sınırlarının dışına çıkma ve diğer GIS dışı kütüphanelerin yanı sıra diğer özel ve açık kaynaklı GIS kütüphanelerini kullanarak çok daha fazla iş ve projeyi otomatikleştirmeye başlayabilmenizi sağlar. , görüntü manipülasyonu, istatistikler vb.


20

Model Builder, görsel programlama dilini öğrenmek için büyük ve kolay bir yöntemdir ve genel olarak GIS programlamasına iyi bir giriş yapar. Ancak bazı şeylerde python daha fazlasını yapabilir.

Bir örnek, ESRI dışı GIS kütüphanelerinin entegrasyonu. Neredeyse Açık Kaynak GIS'in tümüne python yoluyla da erişilebilmektedir (örneğin, GRASS , Sextante , QGIS , SAGA ). Bu bana çok yardımcı oldu, çünkü sadece bir ArcView lisansım var. Bu yüzden ArcGIS’te belirli bir coğrafi işlem aracını her kullanamadığımda Açık Kaynak CBS’de başka hangi seçeneklerin mevcut olduğuna bakıyorum. Daha sonra bu OpenSource araçlarını alıyorum ve bunları daha büyük bir python betiğinde ArcGIS araçlarıyla birleştiriyorum veya daha küçük bir python betiği ile ModelBuilder'da birleştiriyorum.

Eminim diğer üyeler daha fazla avantaj söyleyebilir.


9

Python ve ArcGIS'i kullanırken, ArcGIS'te olanlara ek olarak Python'un tüm işlevselliğini elde edersiniz. Bu tür bir güce ve esnekliğe ihtiyacınız varsa isteklerinize bağlıdır. Ek olarak, Python gibi bir programlama dilini tanımak ve gerçekten bu programdan yararlanmak zaman alır. Bu yatırım sana değerse, size kalmış. Ancak, ciddi veri işleme için, gerçek bir kodlama dili cephaneliğinizde çok iyi bir eklentidir.

ModelBuilder'ın kaçırabileceği herhangi bir fonksiyonellik dışında, daha temel bir tartışma da var. Genel olarak, komut dosyaları karmaşık iş akışları oluşturmak için çok daha uygundur. Kod yukarıdan aşağıya işlenir ve karmaşık işlevler, örneğin işlevler kullanılarak daha küçük alt görevlere bölünebilir. veya nesneler. Model üreticisi gibi bir grafik aracı büyük bir spagetti olma eğilimindedir.


7

Python komut dosyaları oluştururken kısmiyım. En azından benim için kod yazmak, kutulara vb. Bağlantı yapmakla uğraşmaktan çok daha eğlenceli.

Python komut dosyası oluşturma işleminde gerçekten harika olan, komut dosyalarınızı sizin için uygun bir zamanda çalışacak şekilde programlayabilmenizdir. Tamamlanması biraz zaman alan veya normal çalışma saatleri dışında çalıştırılması gereken bir komut dosyanız varsa, bu gerçekten kullanışlıdır. Burada bir betiği nasıl programlayacağınıza dair bir örnek görebilirsiniz .

@Aaron'dan da bahsedildiği gibi, kolayca Python betiğinde döngü oluşturabilirsiniz.

Sadece Python komut dosyası kullanıyorsanız, Model Builder ile bir model oluşturmak ve onu bir Python komut dosyası olarak dışa aktarmak isteyebilirsiniz. Bunu bir komut dosyasında birkaç aracı nasıl kullanacağımı anlamakta sorun yaşıyorsam bazen yapıyorum. Senaryoları nasıl bir araya getireceğine dair bir fikir edinmene yardımcı olabilir.


5

Python komut dosyasıyla değil, model oluşturucu ile hiç bir çözüme mahkum olmadığımı fark ettim. Model oluşturucunun bana göre biraz 'kara kutu' olması sorunun nerede olduğunu bulmayı zorlaştırıyor.

Python hakkında daha fazla yardım bulabileceğimi de buldum. Model oluşturucu hakkında birçok çıkmaz konu ve konu bulma eğilimindeyim. Ayrıca, Python'da olduğu gibi yazdığınız herhangi bir betiğin çoğu bölümünün küçük parçacıklarını bulabileceğiniz bir alan daha az olacaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.