Jak zaimportować GeoTIFF przez postGIS do GeoServer?

10

Jako prosty przypadek testowy próbuję skonfigurować stos oprogramowania OpenGeo w taki sposób, aby wyświetlać GeoTIFF jako nakładkę na normalną mapę, taką jak OSM. Wykonuję więc następujące kroki:

  1. Utwórz bazę danych przestrzennych za pomocą postGIS
  2. Załaduj GeoTIFF do bazy danych
  3. Zaimportuj bazę danych do GeoServer
  4. Wyświetl podgląd jako nakładkę mapy w GeoServer (np. W GeoExplorer lub OpenLayers)

W przeciwieństwie do bezpośredniego importu GeoTIFF do Geoserver (który działa znakomicie), tabela importowana z bazy danych jest oznaczona jako „dane wektorowe”, a nie „dane rastrowe” w aplikacji internetowej GeoServer. W podglądzie warstwy GeoExplorer nie wyświetla niczego z GeoTIFF, a OpenLayers zwraca plik WMS raportujący ServiceExeption:

The requested Style can not be used with this layer.
The style specifies an attribute of geom and the layer is: opengeo:test

Uważam, że rozwiązanie jest dość proste, ale wydaje się, że nie rozumiem, w jaki sposób GeoServer interpretuje dane rastrowe przechowywane w postGIS.

Czy ktoś może mi powiedzieć, o co mi chodzi?


Moje szczegółowe kroki:

  1. Utwórz przestrzenną bazę danych z postGIS zgodnie z dokumentacją, biorąc template_postgisjako szablon i port 5432, gdy działam na Ubuntu 12.04.
  2. Załaduj GeoTIFF do bazy danych z wiersza poleceń, używając raster2pgsqljak w ( http://suite.opengeo.org/docs/dataadmin/pgGettingStarted/raster2pgsql.html )

    raster2pgsql -I -C -s 32632 test.tif public.testTable
    | psql -d test -h localhost -U opengeo

    gdzie

    • -I: flaga, aby utworzyć przestrzenny indeks GiST dla wydajności
    • -C: flaga, aby zastosować ograniczenia rastrowe
    • -s 32632: SRID test.tifzgłoszony przez narzędziegdalinfo
    • test.tif: właściwy test GeoTIFF
    • public.testTable: nowa tabela w schemacie docelowym
    • -d test: baza danych włączona przestrzennie
    • -U opengeo: właściciel bazy danych (standardowa nazwa użytkownika)
  3. Zaimportuj bazę danych do GeoServer zgodnie z opisem w oficjalnym warsztacie
Xandriksson
źródło

Odpowiedzi:

7

Zainstaluj wtyczkę Image Mosaic JDBC

Strona GeoServer wskazuje na przyczynę problemu:

GeoServer nie jest wbudowany w obsługę kolumn rastrowych Postgis, należy go zainstalować poprzez rozszerzenie. Przejdź do Image Mosaic JDBC, aby uzyskać szczegółowe informacje na temat instalacji. To rozszerzenie obejmuje obsługę rastra Postgis.

Postępowałem zgodnie ze złożonymi instrukcjami konfiguracji i udało mi się dodać źródło danych ImageMosaicJDBC Raster do mojego GeoServer.

Konwertuj GeoTIFF na 8bit

Jeśli chodzi o wyświetlanie / wyświetlanie podglądu warstwy, dane nie są wyświetlane poprawnie, tak jak doświadcza tego inny użytkownik [1]. Jak opisano tam, wcześniejsza konwersja pliku GeoTIFF z typu danych INT16 na BYTE rozwiązała problem (do ceny niższej głębi kolorów). Konwersji można dokonać za pomocą narzędzia wiersza polecenia gdal_translate :

$ gdal_translate -ot BYTE input.tif output.tif

Wniosek

Potrzebujesz uciążliwej wtyczki ImageMosaicJDBC i 8-bitowych GeoTiffs, aby wszystko działało. Nie dowiedziałem się, dlaczego moduły podglądu (openLayer, GeoExt, podgląd JPEG, ...) nie działają z 16-bitową głębią kolorów. Na razie zgadzam się z komentarzem, że „raster PostGIS nie ma jeszcze takiego poziomu wykorzystania produkcyjnego” [2].


[1] pusty podgląd obrazu dla warstwy ImageMosaicJDBC (raster postgis) .

[2] Dane rastrowe w PostGIS

Xandriksson
źródło