Kiedy używać ModelBuilder zamiast skryptów Python i odwrotnie?

71

Jestem nowy w skryptach Python w ArcGIS, ale nie jestem nowy w ModelBuilder.

Chciałbym poznać zalety Python vs ModelBuilder.

Kiedy powinniśmy napisać skrypt Pythona do automatyzacji GIS zamiast używać ModelBuilder?

Jakich możliwości automatyzacji w Pythonie nie możemy znaleźć w ModelBuilder?

BBG_GIS
źródło

Odpowiedzi:

82

Uważam, że użytkownik powinien jasno określić swoje cele przed podjęciem decyzji, którego zestawu narzędzi użyć. Skrypty ModelBuilder i Python wyróżniają się w różnych zadaniach. Kilka myśli:

  1. ModelBuilder nie ma możliwości mapowania, podczas gdy arcpy.mapping ma.
  2. Python może być wykorzystywany do optymalizacji przepływów pracy, na przykład z pakietem wieloprocesowym lub równoległym przetwarzaniem .
  3. Python pozwala na zagnieżdżone pętle i inne przydatne iteracyjne narzędzia logiczne. Aby osiągnąć podobny wynik w ModelBuilder, musiałbyś zbudować skomplikowane i skomplikowane, zagnieżdżone modele.
  4. Proste manipulowanie tekstem jest bardzo łatwe w Pythonie i albo bardzo trudne, albo niemożliwe w ModelBuilder.

    np. aby zmienić nazwę listy nazw plików, na przykład „m_2010_naip_2310345_nw.img” na „2310345nw.img” można łatwo osiągnąć za pomocą Pythona za pomocą os.pathmodułu.

Z drugiej strony:

  1. ModelBuilder jest bardzo przydatny do szybkiego łączenia popularnych narzędzi i eliminowania potrzeby debugowania skryptów.

  2. ModelBuilder ma bardzo przydatny iterator rekurencyjny, który jest łatwy do wdrożenia w celu przechodzenia między folderami i podfolderami.

  3. ModelBuilder wyróżnia się wizualnym i intuicyjnym przedstawieniem przepływu pracy dla skomplikowanych zadań .

  4. ModelBuilder może zawierać narzędzia skryptowe Python .

Aaron
źródło
5
Wyraźnie opisano różnice między Pythonem a Konstruktorem modeli w ArcGIS. Dzięki
BBG_GIS,
24
Dodałbym również: 1. możesz uruchomić skrypt Pythona poza ArcMap 2. Możesz używać ArcObjects w Pythonie, 3. Mogą występować pewne różnice prędkości.
Tomek
3
+1 NESTED LOOPS & arcpy.mapping! Podoba mi się możliwość wykonywania obliczeń w skrypcie i dodawania ich do tabel atrybutów lub jeszcze lepiej do układu mapy (na przykład obszar każdego typu mokradeł).
Roy,
2
Czytam skrypty Pythona do książki ArcGIS. Dodam też więcej możliwości: 1- kursory skryptów pozwalają na przeglądanie rekordów w tabeli, czytanie istniejących wierszy i wstawianie nowych wierszy. 2 - skrypty mogą być używane do owijania innego oprogramowania, to znaczy do łączenia aplikacji. na przykład python może być używany do uzyskiwania dostępu do funkcji w programie Microsoft Excel lub w pakiecie statystycznym R. 3-A skrypt może być uruchamiany jako samodzielny skrypt na dysku poza ArcGIS. nie musisz uruchamiać ArcMap ani ArcCatalog, aby skrypt mógł praca. (Skrypty Python dla ArcGIS, rozdział 2, strona 39)
BBG_GIS
24

Jeśli pracujesz wyłącznie w ramach ArcGIS, jest kilka czynników, które powinienem wziąć pod uwagę, próbując ustalić podejście, które należy zastosować.

  • Co próbujesz osiągnąć
  • Jakie są twoje obecne umiejętności,
  • Czy będziesz dzielić się swoją pracą z innymi, aby korzystać, uczyć się od nich lub nimi manipulować, i
  • Kto jest twoją zamierzoną publicznością.

Biorąc pod uwagę te względy:

  1. Często budowanie procesu w ModelBuilder jest szybsze i łatwiejsze niż w Pythonie, chyba że części procesu nie można replikować w ModelBuilder.
  2. Jeśli nie znasz języka Python i nie masz zamiaru go uczyć, ModelBuilder jest świetną opcją.
  3. Jeśli nie znasz Pythona i chcesz nauczyć się włączać go do swojego zestawu umiejętności, ModelBuilder to świetny sposób na rozpoczęcie od stworzenia prostych modeli, a następnie wyeksportowania ich do Pythona, aby mieć gotowy szkielet gotowego procesu. . Ta metoda ma swoją cenę, ponieważ istnieje wiele obcych informacji i zmiennych, które zwykle powstają podczas procesu konwersji, ale nadal jest to świetny sposób na rozpoczęcie nauki.
  4. Jeśli budujesz narzędzia do użytku osobistego, skorzystaj z dowolnej metody, którą najbardziej ci odpowiada. Osobiście korzystam z obu, w zależności od moich potrzeb.
  5. Jeśli planujesz udostępnić swoją analizę innym osobom i chcesz udostępnić swój model / skrypt innym osobom, to część dokumentacji procesu, model jest znacznie łatwiejszy do naśladowania i zrozumienia dla osób nietechnicznych.

Prawdopodobnie nie ma odpowiedzi na pytanie „co jest lepsze” na własny użytek, ale jeśli szukasz długoterminowych możliwości zatrudnienia, ucząc się języka Python, wyróżnisz się na tle tych, którzy wiedzą tylko, jak korzystać ze wstępnie zaprogramowanych narzędzi lub po prostu wiem, jak korzystać z ModelBuilder. Dajesz także sobie możliwość wyjścia poza granice Python for ArcGIS (ArcPy) i rozpoczęcia automatyzacji znacznie większej liczby zadań i projektów przy użyciu innych zastrzeżonych i otwartych bibliotek GIS, a także wielu bibliotek innych niż GIS (tj. Bazy danych , manipulowanie obrazami, statystyki itp.).

RyanDalton
źródło
20

Model Builder to świetny i łatwy do opanowania wizualny język programowania oraz ogólnie dobre wejście do programowania GIS. Ale w niektórych kwestiach Python może więcej.

Jednym z przykładów jest integracja bibliotek GIS innych niż ESRI. Niemal wszystkie GIS Open Source można również adresować przez python (np. GRASS , Sextante , QGIS , SAGA ). To bardzo mi pomogło, ponieważ mam tylko licencję ArcView. Dlatego za każdym razem, gdy nie mogę użyć określonego narzędzia geoprzetwarzania w ArcGIS, sprawdzam, jakie inne opcje są dostępne w GIS typu Open Source. Następnie biorę te narzędzia OpenSource i łączę je z narzędziami ArcGIS albo w większym skrypcie python, albo integruję je z ModelBuilder za pomocą mniejszego skryptu python.

Jestem pewien, że inni członkowie mogą wymienić więcej zalet.

Jaskółka oknówka
źródło
9

Korzystając z Python i ArcGIS, zyskujesz całą funkcjonalność Pythona oprócz tego, co już posiadałeś w ArcGIS. Jeśli potrzebujesz tego rodzaju mocy i elastyczności, zależy od twoich życzeń. Ponadto poznanie języka programowania, takiego jak Python, i jego wykorzystanie. Jeśli ta inwestycja jest tego warta, zależy od Ciebie. Jednak w przypadku poważnego przetwarzania danych prawdziwy język skryptowy jest bardzo dobrym dodatkiem w twoim arsenale.

Oprócz jakiejkolwiek funkcjonalności, której ModelBuilder może przegapić, istnieje również bardziej fundamentalna dyskusja. Ogólnie rzecz biorąc, skrypty są znacznie bardziej odpowiednie do tworzenia złożonych przepływów pracy. Kod jest przetwarzany od góry do dołu, a złożone zadania można podzielić na mniejsze zadania podrzędne za pomocą np. Funkcji. lub przedmioty. Narzędzie graficzne, takie jak konstruktor modeli, zwykle staje się dużym spaghetti.

Paul Hiemstra
źródło
7

Nie mam nic przeciwko tworzeniu skryptów Python. Przyjemność jest pisanie kodu niż mieszanie się z łączeniem linii ze skrzynkami i tym podobne, przynajmniej dla mnie.

Naprawdę świetne w skryptach Python jest to, że możesz zaplanować uruchamianie skryptów w dogodnym dla Ciebie czasie. Jest to bardzo wygodne, jeśli masz skrypt, który zajmuje trochę czasu lub trzeba go uruchomić poza normalnymi godzinami pracy. Można zobaczyć przykład jak zaplanować skrypt tutaj .

Jak wspomina @Aaron, możesz łatwo skonfigurować zapętlenie w skrypcie Python.

Jeśli dopiero zaczynasz korzystać ze skryptów w języku Python, możesz utworzyć model w programie Model Builder i wyeksportować go jako skrypt w języku Python. Robię to czasami, gdy mam problemy ze zrozumieniem, jak korzystać z kilku narzędzi w skrypcie. Może pomóc ci zrozumieć, jak łączyć skrypty.

Patty Jula
źródło
5

Odkryłem, że wydaje mi się, że utknąłem bez rozwiązania bardziej z konstruktorem modeli niż ze skryptami Pythona. Nieco „czarna skrzynka” natury konstruktora modeli sprawia, że ​​trudniej jest znaleźć lokalizację problemu.

Odkryłem również, że mogę znaleźć o wiele więcej pomocy w Pythonie. Zwykle znajduję wiele ślepych wątków i tematów na temat konstruktora modeli. Jest jeszcze mniej przykładów, w których, podobnie jak w Pythonie, prawdopodobnie można znaleźć małe fragmenty większości części pisanego skryptu.

Rex
źródło