Wykonywanie algebry map rastrowych w GIS w otwartym źródle?

9

Algebra map dla rastra jest łatwa dzięki ArcGIS Raster Calculator (lub QGIS). Pomyślałem, że będzie to łatwe z serwerami WWW GIS, takimi jak GeoServer i MapServer oraz OpenLayers itp. Chcę osiągnąć proste rzeczy, takie jak podzielenie dwóch obrazów i wygenerowanie trzeciego obrazu o proporcjach do wyświetlenia na stronie internetowej. Spędziłem tygodnie, aby znaleźć rozwiązanie i okazuje się to dość trudne (dla mnie).

Próbowałem kilku rzeczy, w tym:

  1. Raster PostGIS. Myślę, że algebra rastrowa nie stanowi tutaj problemu.

    Jednak raster PostGIS jest dość trudny do załadowania do GeoServera. Często zadawane jest wiele pytań na temat ładowania pgrastera w GeoServer. Zobacz np. Jak zaimportować GeoTIFF przez postGIS do GeoServer? ? , /gis/86006/publish-rasters-stored-in-postgresql-with-geoserver ? Żadna odpowiedź tutaj w GIS.SE ani na oficjalnej stronie GeoServer nie zawiera pełnej listy kroków, które można wykonać, aby działać. Ładowanie pgraster do MapServera zgłosiło sukces, ale z bardzo małą wydajnością. Wydaje się, że oba wymagają kafelkowania. Wydaje się, że nie ma mowy o jednoliniowym poleceniu importowania rastra na dowolny serwer.

  2. GeoTIFF

    GeoTIFF można łatwo załadować do GeoServer i MapServer. Ale co możemy z tym zrobić? Bez PostGIS, takiego jak SQL, zwróciłem się i krótko przeszukałem przy użyciu WCS, aby wykonać algebrę mapy, ale nie znalazłem wiele. Czy WCS jest realną ścieżką do tego w obecnych serwerach?

  3. Zaprogramuj to na poważnie

    W jakiś sposób używaj AJAX do wywoływania strony PHP lub pisania WPS za pomocą GeoServera do importowania obrazów do PostGIS, wykonywania algebry map, a następnie konwertowania wyniku pgraster do formatu (np. GeoTIFF), który można łatwo załadować i wyświetlić w GeoServer / MapServer.

  4. Oczywiście można napisać kod do bezpośredniego odczytu GeoTIFF i wykonać algebrę mapy bez obsługi GIS.

Żadne z powyższych nie wydaje mi się łatwe ani rozsądne, biorąc pod uwagę łatwość, z jaką tę samą algebrę można wykonać w Desktop GIS.

Zastanawiałem się, czy ktoś miał jakieś doświadczenie w robieniu Algebry Map w internetowym środowisku GIS i czy może zasugerować realną ścieżkę?

Interesują mnie rozwiązania Open Source (z powodów politycznych w mojej organizacji). Zdaję sobie sprawę, że ArcGIS Server może wywoływać kod python ArcGIS, ale nie mamy licencji, a środowisko nie jest sprzyjające do jej nabycia.

tinlyx
źródło
„Czy istnieje rozsądny sposób na ...” to naprawdę nieprzyjemne zdanie (gdzie np. „Jak…” działa dobrze), aby wpisać tytuł pytania, więc jeśli możesz wymyślić lepszy sposób na stwierdzenie Twoje pytanie niż to, co sugerował należy to zrobić. Uważam też, że słowo „oprogramowanie” obejmuje API programowania i biblioteki, takie jak GDAL, więc dzięki tej interpretacji cofnięcie mojej edycji prawdopodobnie nie było konieczne. Jednak rób, co chcesz, jeśli uważasz, że to wyjaśnia twoje pytanie.
blah238
@ blah238 Dzięki za zmiany :). Prawdopodobnie byłem zbyt rozwlekły, ale myślę, że oczywiście istnieją sposoby na ..., po prostu wydają się być nieuzasadnionym wysiłkiem w porównaniu do świata ESRI / Desktop. Masz również rację, że „oprogramowanie” może zawierać interfejsy API. Chciałbym tylko podkreślić, że kodowanie go od zera jest opcją, jeśli nie ma nic innego, co byłoby stosunkowo łatwe do osiągnięcia algebry mapy.
tinlyx

Odpowiedzi:

4

Używając wyłącznie oprogramowania typu open source, prawie na pewno będziesz musiał samemu trochę zaprogramować. GDAL jest de facto biblioteką we / wy rastrową typu open source, więc prawdopodobnie będziesz go używać lub jednego z jego wielu opakowań. Możesz użyć Pythona (np. Rasterio + numpy / scipy ) lub node.js, np. Node-gdal (choć uważaj, że obecnie jest synchroniczny / blokujący). Jeśli chodzi o faktyczne wdrożenie go jako usługi internetowej, nie jestem pewien, jakie byłoby najlepsze podejście, ale pojawia się podobne pytanie: Porównanie różnych serwerów GIS typu open source?

Jeśli programowanie nie jest Twoją sprawą, możesz rzucić okiem na Serwer FME . Jest to produkt komercyjny, ale prawdopodobnie znacznie tańszy niż ArcGIS Server, i ma wszelkiego rodzaju transformatory obliczeniowe rastrowe , więc byłbym bardzo zaskoczony, gdyby nie udało się osiągnąć tego, co musisz zrobić. Nie musisz ładować rastrów do bazy danych, ponieważ może czytać z dowolnego formatu plików rastrowych .

Część serwerowa umożliwia uruchomienie transformacji (obszarów roboczych FME) na serwerze i użycie interfejsu API, np. Interfejsu API REST FME Server , w celu zainicjowania tych transformacji i uzyskania dostępu do wyników.

Główną zaletą jest to, że nie trzeba wiele robić, jeśli programowanie jest potrzebne do uruchomienia usług, wystarczy niewielkie kodowanie front-end do pracy z interfejsem API.

blah238
źródło
+1 dzięki. Myślałem też o rasdamanie. Mogę programować, ale po prostu nie czuję się dobrze kodować go przez wiele lat po algebrze map.
tinlyx
+1 Na poparcie python + gdal. Wykonanie algebry rastrowej za pomocą numpy to pestka. Ponadto, jeśli pracujesz z rastrami tekstowymi (takimi jak pliki .asc), nie potrzebujesz nawet gdal (w zależności od instalacji może to być utrudnienie), używając numpy.loadtxt (pomiń wiersze nagłówka, spację jako separator, itp.)
użytkownik1269942,
Dzięki rasdaman masz możliwość korzystania z WCPS do przetwarzania na serwerze, choć prawdopodobnie będziesz musiał wykonać trochę skryptów, aby utworzyć składnię WCPS, ponieważ ręczne wykonanie może być trudne.
nmtoken
2

To, czego szukasz, to serwer obrazów. ArcGIS for Server ma to rozszerzenie:

Rozszerzenie obrazu ArcGIS dla serwera

nie znam żadnych odpowiedników typu open source.

Pau
źródło
1
OP pyta, jak to zrobić w kontekście internetowym, a nie o rozszerzenie ArcGIS.
John Powell,
2
@ JohnBarça sugerowane rozszerzenie to ArcGIS for Server, dlatego jest używane w kontekście sieciowym.
PolyGeo
@Pau Zapomniałem powiedzieć, że jestem trochę ograniczony do korzystania z GIS typu open source. Ale dzięki za sugestię. To jest pomocne.
tinlyx
1
@TingL możesz zacząć szukać alternatywnych rozwiązań dla serwera obrazów Arcgis
Pau
1

Prawdopodobnie możesz to zrobić w przeglądarce za pomocą WebGL:

http://www.html5rocks.com/en/tutorials/webgl/webgl_fundamentals/

ale wymagałoby to programowania i przeglądarki zgodnej z WebGL. Ale powinno być szybkie, ponieważ w większości przypadków używa GPU.

Spacedman
źródło
1
Wielkie dzięki. Czy masz jakieś informacje na temat obsługi danych GIS, takich jak GeoTIFF w WebGL?
tinlyx