Jak publikować rastry PostGIS za pomocą GeoServer?
Spędziłem dużo czasu próbując utworzyć źródło danych Raster przy użyciu Image Mosaic JDBC, ale bez powodzenia.
Wykonane kroki:
1. Pobrałem i zainstalowałem rozszerzenie mozaiki obrazu JDBC (działało dobrze)
2. Utworzyłem pliki „Parametru połączenia”:
connect.postgis.xml.inc:
<connect>
<dstype value="DBCP"/>
<username value="postgres" />
<password value="password" />
<jdbcUrl value="jdbc:postgresql://localhost:5432/db1" />
<driverClassName value="org.postgresql.Driver"/>
<maxActive value="10"/>
<maxIdle value="0"/>
</connect>
mapping.postgis.xml.inc:
<spatialExtension name="postgis"/>
<mapping>
<masterTable name="mosaic" >
<coverageNameAttribute name="name"/>
<maxXAttribute name="maxX"/>
<maxYAttribute name="maxY"/>
<minXAttribute name="minX"/>
<minYAttribute name="minY"/>
<resXAttribute name="resX"/>
<resYAttribute name="resY"/>
<tileTableNameAtribute name="tiletable" />
</masterTable>
<tileTable>
<blobAttributeName name="rast" />
</tileTable>
</mapping>
osm.postgis.xml:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE ImageMosaicJDBCConfig [
<!ENTITY mapping PUBLIC "mapping" "mapping.postgis.xml.inc">
<!ENTITY connect PUBLIC "connect" "connect.postgis.xml.inc">]>
<config version="1.0">
<coverageName name="gfm"/>
<coordsys name="EPSG:25832"/>
<!-- interpolation 1 = nearest neighbour, 2 = bilinear, 3 = bicubic -->
<scaleop interpolation="1"/>
<verify cardinality="false"/>
&mapping;
&connect;
</config>
gdzie „mozaika” to tabela (kolumny: nazwa, titletable, minX, minY, maxX, maxY, resX, resY) zawierająca jeden wiersz: „gfm, testrastertable,,,,,,”
3. Zapisano pliki konfiguracyjne w. ./geoserver/data_dir/coverages/
4. Podczas próby dodania magazynu danych JDBC mozaiki obrazu pojawia
się następujący błąd:
Error: Could not list layers for this store, an error occurred retrieving them: Unable to acquire a reader for this coverage with format: ImageMosaicJDBC
Aktualizacja: Dziennik Geoserver
2012-10-24 14:09:11,404 DEBUG [org.geoserver] - Thread 14 locking in mode WRITE
2012-10-24 14:09:11,404 DEBUG [org.geoserver] - Thread 14 got the lock in mode WRITE
2012-10-24 14:09:11,406 DEBUG [geoserver.config] - Persisting coverage store raster_store
2012-10-24 14:09:11,408 DEBUG [geoserver.config] - Persisted org.geoserver.catalog.impl.CoverageStoreInfoImpl to /opt/geoserver/data_dir/workspaces/raster/raster_store/coveragestore.xml
2012-10-24 14:09:11,416 DEBUG [geoserver.config] - Persisted $Proxy15 to /opt/geoserver/data_dir/global.xml
2012-10-24 14:09:11,438 ERROR [imagemosaic.jdbc] -
2012-10-24 14:09:11,438 WARN [imagemosaic.jdbc] -
java.io.IOException
at org.geotools.gce.imagemosaic.jdbc.ImageMosaicJDBCReader.<init>(ImageMosaicJDBCReader.java:163)
at org.geotools.gce.imagemosaic.jdbc.ImageMosaicJDBCFormat.getReader(ImageMosaicJDBCFormat.java:209)
....
2012-10-24 14:09:11,439 INFO [geoserver.web] - Getting list of coverages for saved store file:coverages/osm.postgis.xml
java.lang.RuntimeException: Could not list layers for this store, an error occurred retrieving them: Unable to acquire a reader for this coverage with format: ImageMosaicJDBC
at org.geoserver.web.data.layer.NewLayerPageProvider.getItems(NewLayerPageProvider.java:115)
...
Caused by: java.lang.Exception: Unable to acquire a reader for this coverage with format: ImageMosaicJDBC
at org.geoserver.catalog.CatalogBuilder.buildCoverage(CatalogBuilder.java:812)
at org.geoserver.web.data.layer.NewLayerPageProvider.getItems(NewLayerPageProvider.java:82)
... 95 more
2012-10-24 14:09:11,441 DEBUG [geoserver.config] - Removing coverage store raster_store
2012-10-24 14:09:11,446 DEBUG [geoserver.config] - Persisted $Proxy15 to /opt/geoserver/data_dir/global.xml
2012-10-24 14:09:11,459 DEBUG [org.geoserver] - Thread 14 releasing the lock in mode WRITE
geoserver
postgresql
postgis-2.0
żmija
źródło
źródło
Odpowiedzi:
Przepracowałem kilka problemów, próbując użyć rastra postgis w geoserver podobnym do OP. Poniżej pokazano, jak pomyślnie załadowałem swoje dane rastrowe.
Konfiguracja wstępna: warstwa geotiff BNG, wygenerowana z FME, została zaimportowana do Postgis za pomocą
raster2pgsql
. Użyto polecenia:Stworzyło to stół rastrowy wraz ze stołami piramid.
Obecnie mój serwer ma instancję
Geoserver 2.6.2
. Aby korzystać z rastrów Postgis, wymaga rozszerzenia JDBC Image Mosaic, które można pobrać ze strony http://geoserver.org/release/2.6.2/Rozszerzenie .jar zostało następnie wyodrębnione do
WEB-INF/lib
. Umożliwi to następnie geoserverowi korzystanie z rastrów z Postgis. Jednak aby uzyskać dostęp do danych, należy skonfigurować kilka ustawień.Postępując zgodnie z instrukcjami w: http://docs.geotools.org/latest/userguide/library/coverage/pgraster.html, ale nieco poprawiony:
Teraz wstaw rekordy dla „pokrycia”, nazwanego w tym przykładzie oek, są to tabele rastrowe: główny i piramidalny.
Również zgodnie z dokumentacją, w przypadku sterowników JDBC JDBC <wersja 9 konieczne jest ustawienie właściwości w bazie danych:
Teraz konfiguracja Geoserver:
W katalogu danych Geoserver utwórz katalog
/data/coverages
, który musi zawierać 3 pliki:connect.pgraster.xml.inc, mapping.pgraster.xml.inc, oek.pgraster.xml
Postępuj zgodnie z http://docs.geotools.org/latest/userguide/library/coverage/pgraster.html po ich nazwy i zawartość. Oczywiście dostosuj parametry połączenia z bazą danych i ustawienia nazwy użytkownika / hasła w
connect.pgraster.xml.inc
mapping.pgraster.xml.inc
to tam musimy poprawnie odwoływać się do tabel rastrowych.Otrzymamy więc wartości, które dodaliśmy do tabeli MOSAIC,
name
wartościami są kolumnyMOSAIC
, które łączą się z naszą tabelą rastrową i tabelami piramid.rast
to nazwa kolumny rastrowej w tabelach rastrowych.W
oek.pgraster.xml
upewnić się, że SRS jest ustawiony prawidłowo, 27700 BNG w tej sprawie.W Geoserver możemy teraz dodać nowy magazyn danych.
Idź do nowego Dodaj nowy sklep.
Wybierz ImageMosaicJDBC
Nadaj mu nazwę i ustaw adres URL na
file:coverages/oek.pgraster.xml
Zapisz to, a kciuki nie zwracają błędów. Jeśli tak, sprawdź dzienniki geoservera, które - mam nadzieję - wskażą problem. Mam nadzieję, że to tylko literówka lub problem z nazewnictwem.
Idź, aby dodać nową warstwę i wybierz nowy magazyn danych rastrowych.
Wybierz nową warstwę / pokrycie oek i opublikuj ją.
Następnie w ustawieniach warstw odpowiednio dostosuj układ współrzędnych i obwiednie.
Aby stylizować raster, postępuj zgodnie z dokumentami tutaj: http://docs.geoserver.org/latest/en/user/styling/sld-reference/rastersymbolizer.html
Dodałem styl:
To zabarwiło moje rastry na niebiesko, gdzie miały wartość.
Powinieneś mieć warstwę użytkową.
Oświadczenie: Nie jestem ekspertem od GIS, a wiele z tego, nad czym pracowałem, było próbą i błędem. Nie mam wątpliwości, że istnieją lepsze sposoby, aby to zrobić, ale na razie pracuję tylko nad koncepcją koncepcji, aby potwierdzić, czy mamy możliwość korzystania z danych rastrowych w postgis. Bardziej szczegółowe detale, takie jak wartości rastrowe i stylizacja, to rzeczy, które wciąż muszę uzupełnić. Jeśli zrobię dalszy postęp, zaktualizuję swoją odpowiedź.
źródło
Postępując zgodnie z instrukcjami konfiguracji wtyczki rastrowej PostGIS, powinieneś spróbować wymienić
z
w pliku konfiguracyjnym
mapping.postgis.xml.inc
.źródło