Przykłady zastosowań ArcPy w Pythonie do geoprzetwarzania?

12

Niedawno niektórzy studenci zapytali mnie, jakie rodzaje operacji GIS Analyst / Developer zazwyczaj próbują zautomatyzować za pomocą Pythona z geoprzetwarzaniem w ArcGIS i pakiecie witryny ArcPy. Wydaje mi się, że warto wiedzieć podczas wyszukiwania niektórych ćwiczeń, aby upewnić się, że to, co tworzysz, jest istotne dla branży i może być ponownie wykorzystane później, już w miejscu pracy.

Najłatwiejszą odpowiedzią byłoby „przeczytaj pomoc Esri i przejrzyj próbki”, ale szukałem bardziej szczegółowych scenariuszy, które są najczęściej wdrażane. Dlatego dzieląc się przepływami pracy, gdy „otrzymujemy plik .zip z plikami kształtów, używamy Pythona do rozpakowania go, wyświetlamy je wszystkie w układzie współrzędnych X, ładujemy do geobazy ArcSDE, udzielamy użytkownikom dostępu do tych danych” są mile widziane. Prosimy o podanie zwięzłego opisu przebiegu pracy, nie są wymagane żadne ekstremalne szczegóły.

Alex Tereshenkov
źródło

Odpowiedzi:

10

Dla mnie, jak sugeruje twoje pytanie, używam Pythona szczególnie do automatyzacji przetwarzania wsadowego, ale także do tworzenia powtarzalnych specjalistycznych obliczeń. Obecnie nie używam ArcPy, ponieważ nie stać mnie na licencje ESRI jako niezależny konsultant GIS. Używam GDAL / OGR, Shapely, PostGIS, Numpy i SciPy, chociaż wszystko na mojej liście można zrobić za pomocą ArcPy (a niektóre z nich były). Przykłady obejmują:

  1. Wyprowadzanie statystyk strefowych dla całej Wielkiej Brytanii, które wymaga najpierw mozaikowania 20 km kafelków rastrowych dwóch różnych typów danych, wykonania niektórych „mapematyki” na tych rastrach, scalenia równoważnego obszaru 10 km kafelków wielokąta wektorowego, obliczenia statystyk strefowych wyniku mapy rastrowe i łączenie tabeli statystyk z oryginalnymi danymi wektorowymi przed wyjściem do plików kształtów w logicznej strukturze katalogów i wypaleniem na CD dla klienta.
  2. Wykonywanie sekwencyjnych obliczeń widoczności co 100 m wzdłuż drogi lub toru, a następnie przypisywanie wyników obliczeń jako wartości M z powrotem do danych trasy.
  3. Zautomatyzowany proces tworzenia modeli krajobrazu 3D przez mozaikowanie / scalanie kafelków danych rastrowych i wektorowych, przycinanie do wymaganego obszaru, a następnie konwertowanie do zastrzeżonego (3D-GIS) formatu 3D. Korzystam z małej biblioteki Pythona, którą do tego celu opracowałem, w ramach mojej niezależnej pracy.
  4. W jednym wielkim projekcie, nad którym pracowałem w zespole, wykorzystałem ArcPy do stworzenia procesów wsadowych do konwersji lub pozyskiwania nowych danych z danych GIS do formatu z funkcjami, które mogłyby zostać wykorzystane przez procesowy generator gier komputerowych. Skrypty geoprzetwarzania zostały wywołane przez przetwarzający wsadowo „sterownik slave” również napisany w Pythonie i przebiegający przez Django.
  5. Python jest bardzo przydatny nawet w przypadku niewielkich zadań, szczególnie tam, gdzie występuje powtórzenie (np. Funkcja przetwarzania funkcji). Konstruktor modeli ArcGIS został znacznie ulepszony dzięki kontrolkom przepływu, które pojawiły się w wersji 10, ale mimo to nadal często nie zapewnia niezbędnej kontroli i / lub szybsze i łatwiejsze jest napisanie procesu w ArcPy niż próba przymus Konstruktora modeli.
  6. W Pythonie stworzyłem narzędzie do przeprowadzania analizy po ścieżce (aby obliczyć, czy bardzo długi pojazd może podążać daną trasą i gdzie przyczepa prawdopodobnie zaklinuje się w ciasnych zakrętach między budynkami. Arsenał.
  7. Generowanie danych wyjściowych z Mapnika
  8. Zanim ArcGIS stał się wielowątkowy, użyłem Pythona, aby umożliwić mi odrodzenie podprocesów, które czasami mogą przyspieszyć długie, powolne obliczenia bez obciążania pamięci przez ArcMap.

Python w komercyjnym przetwarzaniu geoprzestrzennym jest świetny, ponieważ masz całą szybkość i zwięzłość skryptów zapewnianą przez Python oraz szybkość przetwarzania skompilowanego kodu w stylu C, ponieważ podczas interpretacji Pythona przeważnie nazywa on skompilowany kod w stylu C pod maską. Python zapewnia klej, który może pomieścić wiele sekwencyjnych zadań geoprzetwarzania razem, a powyższa lista to tylko mała migawka niektórych rzeczy, do których osobiście go używam. W „Good Old Days” ustawiamy plik Watch i ArcInfo zapisuje nasze dane z wiersza poleceń, a następnie oczyszcza AML (który pamięta Arc Macro Language!), Aby umożliwić wielokrotny proces połączeń geoprzetwarzania sklejonych z AML. Obecnie nie jest tak inaczej, z wyjątkiem tego, że używamy Python lub C # jako kleju.

MappaGnosis
źródło
1
Co ciekawe, właśnie odpowiedziałem na to pytanie ( gis.stackexchange.com/questions/52478/... ) - co stanowi kolejny przykład użycia Pythona jako metody pokonania wycieków pamięci ArcGIS!
MappaGnosis
+1, szczególnie chciałbym zobaczyć temat bloga GIS.SE na # 4.
blah238,
1
Chociaż firma jest teraz nieczynna, a ja opuściłem jakiś czas temu, inna firma kupiła adres IP, więc nie wiem, jak wyraźnie mogę się wyrazić. W każdym razie możesz uzyskać wskazówki dotyczące strony wieloprocesowej z mojej odpowiedzi w linku w moim komentarzu powyżej. Myślę, że mogę również dodać, że nasza farma geoprzetwarzania miała 16-rdzeniową maszynę, dwa 8-rdzeniowe serwery i około tuzina „emerytowanych” dwurdzeniowych komputerów obsługiwanych przez sterownik slave. ESRI nawet wysłało kilku facetów, aby przyszli i spojrzeli na to, co zrobiliśmy, ponieważ nie używaliśmy do tego ArcServera. Prowadziliśmy maszyny tak mocno, że dwie nawet się zapaliły!
MappaGnosis
7

Od czego zacząć ... Jestem wielkim zwolennikiem Pythona w przedsiębiorstwie, mimo że teraz pracuję w wyższym organie rządowym. Oto kilka przykładów zadań, z których korzystałem w Pythonie:

  1. Przenoszenie danych. Dość proste zadania, takie jak rutynowe przenoszenie danych, można bardzo łatwo zautomatyzować za pomocą Pythona, zwłaszcza po shutilwyjęciu modułu z pudełka.
  2. Eksportowanie klas obiektów z bazy danych ArcSDE do plików shapefile w celu wykorzystania przez inne pakiety oprogramowania. ArcSDE (lub inna relacyjna baza danych) jest często rekordem głównym w organizacji, ale nie każdy pakiet oprogramowania może podłączyć się do bazy danych. Wiele pakietów nadal zużywa dobre pliki kształtów, a używanie arcpyich bezproblemowo eksportuje je na noc, aby Twoi użytkownicy mieli aktualne dane.
  3. Tworzenie zestawów danych przestrzennych z różnych zestawów danych. Wszyscy w przedsiębiorstwie używają (i często niewłaściwie używają) programu Excel do przechowywania swoich danych. Za pomocą arcpy(lub innych metod w języku Python) łatwo jest pobrać dane tabelaryczne, które zawierają komponent przestrzenny i szybko utworzyć z niego zbiór danych przestrzennych. To samo dotyczy plików tekstowych. Niedawno stworzyłem narzędzie ArcToolbox dla klienta, który czyta pliki tekstowe w zastrzeżonym formacie XYZ i tworzy polilinie z włączoną funkcją ZM (tak naprawdę nie mogą udostępniać znacznie więcej niż na tym jednym).
  4. Przetwarzanie danych GIS, aby można je było wprowadzić do oprogramowania, które nie ma pojęcia, czym jest „przestrzenny”. Piszę teraz narzędzia, które pobierają zestawy danych GIS (rastry, wektory) i wpychają dane do programu do modelowania 3D za pośrednictwem interfejsu API języka Python. Ten pakiet 3D w ogóle nie działa z formatami danych przestrzennych, ale może pracować z wartościami tekstowymi i atrybutami kryjącymi się za danymi przestrzennymi. W tym celu używam arcpywyciągania informacji z geobazy i wypychania jej do plików tekstowych lub do pliku konfiguracyjnego XML.
  5. Pobieranie danych. Masz witrynę z tabelami danych , których potrzebujesz? Użyj, beautifulsoupaby go wyodrębnić. Masz witrynę FTP z setkami lub tysiącami plików, które musisz pobrać? Użyj urllib2lub, ftplibaby łatwo je pobrać.

To tylko kilka przykładów. Wielką zaletą Pythona w przedsiębiorstwie jest to, że nawet bez pełnych uprawnień administratora do komputera, co często się zdarza, nadal można osiągnąć sporo. Połącz to z delikatną krzywą uczenia się i czytelnością Pythona, a otrzymasz świetne narzędzie do automatyzacji dla GIS Tech / Analyst, które nie ma dużego doświadczenia w programowaniu.

Chad Cooper
źródło
6

Pracuję dla gminy, a gang GIS zapewnia wsparcie dla naszych różnych działów (inżynierii, inspekcji budowlanych, regulaminu, parków, straży pożarnej itp.).

  1. Aktualizacja informacji o paczce i adresie obywatelskim. Mamy dość długie skrypty, które manipulują zarówno danymi przestrzennymi, jak i atrybutami, co wymaga użycia różnych narzędzi geoprzetwarzania do wykonywania operacji przestrzennych, a także łączenia się z relacyjnymi bazami danych w celu pobrania informacji, które są następnie łączone z naszymi danymi przestrzennymi.
  2. Niestandardowe narzędzia. Dla niektórych naszych pracowników spoza systemu GIS stworzyliśmy niestandardowe narzędzia przy użyciu nowego Kreatora dodatków Python . Niektórzy z naszych pracowników muszą czytać dane przestrzenne, a także wykonywać podstawowe operacje. Zaprojektowaliśmy paski narzędzi, które pozwalają im robić wszystko, co trzeba, bez wchodzenia w wnętrzności środowiska ArcGIS.

Jak stwierdzili inni, to tylko kilka przykładów.

dchaboya
źródło