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?
źródło
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ć.
Biorąc pod uwagę te względy:
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.).
źródło
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.
źródło
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.
źródło
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.
źródło
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.
źródło