Nasza organizacja rozważa przeniesienie przepływu pracy geoprzetwarzania do PostGIS. Obecnie używamy ArcGIS z mnóstwem niestandardowych narzędzi Python używanych w ModelBuilder. Przenosimy większość naszych danych do PostGIS, aby mogły być wykorzystywane przez różne aplikacje, a teraz pytamy, czy sensowne jest również tam przetwarzanie danych.
Przetwarzamy dane w celu zapewnienia zgodności z naszym oprogramowaniem. Klient kupuje nasze oprogramowanie, przekazuje nam swoje dane, a my przetwarzamy je w celu zoptymalizowania do wykorzystania w naszym oprogramowaniu. Wymaga to od nas zbudowania różnych narzędzi do obsługi różnych jakości danych wejściowych. Nie możemy oczekiwać danych w określonym formacie lub schemacie, dlatego budujemy narzędzia do mapowania pól wejściowych na pola wyjściowe, parsowania pojedynczych pól na wiele pól, scalania wielu zestawów danych itp. Wykonujemy również połączenia przestrzenne, przecięcia, przycinanie białych znaków i łączą pola i wiele innych typowych operacji. PostGIS wydaje się być w pełni zdolny do spełnienia wszystkich naszych potrzeb przetwarzania.
Czy dla tych z was, którzy korzystają z PostGIS do przetwarzania danych, czy macie jakieś porady dotyczące organizacji, narzędzi do wykorzystania itp.?
- czy używasz go w połączeniu z przetwarzaniem Pythona QGIS?
- czy ludzie używają Python ORM do przetwarzania nie-sieciowego? Skłaniam się ku korzystaniu z GeoDjango, ponieważ ma on Python ORM dla PostGIS. Nasz wstępny test wykorzystania PostGIS do przetwarzania danych zawiera wiele dużych bloków tekstowych SQL w kodzie Pythona i uważamy, że GeoDjango ORM może pomóc w tworzeniu bardziej zarządzalnego i czytelnego kodu. Istnieje również GeoAlchemy ORM, który współdziała podobnie z PostGIS i nie wydaje się być tak specyficzny dla sieci, jak Django.
Nie słyszałem o ludziach korzystających z PostGIS do geoprzetwarzania tak często, jak widzę ludzi używających QGIS lub ArcGIS, więc chcę wiedzieć, czy jest to porównywalna alternatywa.
źródło
Odpowiedzi:
Bardzo lubię używać PostGIS do celów geoprzetwarzania.
Moje dwa główne resony to:
1) Wykonywanie skomplikowanych zadań w bazie danych jest często znacznie szybsze, ponieważ pomagasz planerowi zapytań wykonywać czynności we właściwej kolejności.
2) Po prostu zapisz wiersze sql użyte w pliku tekstowym i masz bardzo dobrą dokumentację tego, co zrobiłeś.
Mój obieg pracy, jeśli zadania obejmują wiele „kroków”, mogą wyglądać następująco:
1- Zbuduj części zapytania lub wszystkie w zależności od charakteru zadania
2- Przetestuj zapytanie na małej części zestawu danych, aby zobacz, jak to działa
3- Wykonaj poprawki, jeśli to konieczne
4- Uruchom zapytanie dla całego zestawu danych
5- Zapisz linie w pliku tekstowym z pewnymi notatkami.
Wszystko to często jest tak szybkie, jak uruchomienie ArcGIS i oczekiwanie na licencję z serwera licencji.
źródło
Używamy PostGIS i pewnego rodzaju środowiska programowania Python do opracowanych przez nas usług sieciowych do geoprzetwarzania produkcji; bez zarzutów!
GeoDjango to świetny wybór, jeśli pracujesz głównie (lub wyłącznie) z funkcjami aplikacji internetowej. Nie obsługuje typu danych rastrowych PostGIS Raster ani PostGIS 2.0. Teraz jest dostarczany z najnowszą wersją Django. Możesz zrekompensować brak obsługi rastra i ogólną niezawodność, używając niestandardowych, surowych zapytań SQL w Django.
Aby uzyskać bardziej niezawodne aplikacje geoprzetwarzania, a zwłaszcza jeśli chcesz użyć modelu relacyjno-obiektowego, wypróbuj GeoAlchemy2. Oryginalna biblioteka GeoAlchemy, która rozszerza SQLAlchemy, zapewnia obsługę danych funkcji; GeoAlchemy2 rozszerza go , zapewniając (ograniczoną) obsługę nowego typu danych rastrowych w PostGIS 2.0.
A potem zawsze są powiązania Pythona dla GDAL i OGR!
źródło
Chociaż jest to możliwe, trudno jest sobie wyobrazić, że chciałbyś wykonywać wiele geoprzetwarzania w silniku bazy danych lub frameworku internetowym. Polecam zajrzeć do bazowych bibliotek kodów - geos, proj.4 i gdal. Dla wszystkich trzech istnieją powiązania lub biblioteki Pythona. Inną opcją do zbadania jest wtyczka geoprzetwarzania Sextante do QGIS, ponieważ umożliwia budowanie modelu / przepływu pracy.
Kilka innych myśli:
Nie wykluczaj korzystania z PostGIS. Zapewnia dobre możliwości przechowywania i serwera, a także udostępnia niektóre funkcje geograficzne i proj.4 przez SQL. Dobrze gra również z innymi wymienionymi narzędziami: Django, QGIS i Python.
Oprócz możliwego wykorzystania wspomnianej wtyczki Sextante, QGIS jest dobry do wizualizacji, ma pewne narzędzia do pracy z postgres, a także zawiera konsolę Python.
Jeśli szukasz ORM i chcesz mieć interfejs internetowy, Django to zrobi. Jeśli nie przeszkadza ci mniej seksowny interfejs, strony administracyjne zapewnią ci interfejs CRUD przy stosunkowo niewielkim wysiłku - nawet edycję geometrii, jeśli używasz GeoDjango.
źródło
Spójrz na ETL , w szczególności FME do operacji przestrzennych (lub GeoKettle o otwartym kodzie źródłowym ).
Naprawdę lubię korzystać z FME, ponieważ tworzy wizualny przepływ pracy, a ty możesz oddzielić logikę operacji przestrzennych, złączeń, scaleń ... wszystko, i możesz pracować z formatami innymi niż bazy danych i różnymi bazami danych ... Możesz robić dużo, łatwo i szybko. Jeśli masz doświadczenie w budowaniu modeli, szybko je zdobędziesz, a online jest mnóstwo dokumentacji.
Jedyną wadą FME jest to, że kosztuje. Ale myślę, że warto.
Alternatywą dla korzystania z FME jest prawdopodobnie GDAL i OGR wraz z być może Pythonem, aby powiązać to ze sobą. Lub, jak mówisz, robiąc to wszystko w PostgreSQL. Myślę, że ETL odgrywa istotną rolę w przeszukiwaniu danych przestrzennych i robi wiele, czego nie można zrobić tylko w bazie danych.
Nie korzystałem z niego, ale GeoServer zapewnia implementację WPS , nie korzystałem z tego, ale inni mogą komentować, w jaki sposób może to być przydatne?
Nie mogę komentować używania GeoDjango, ale myślałem, że to bardziej CMS, jak interfejs do przeglądania danych.
źródło