Bagaimana cara saya mempublikasikan raster PostGIS menggunakan GeoServer?
Saya telah menghabiskan banyak waktu untuk mencoba membuat sumber data Raster menggunakan Image Mosaic JDBC tetapi tidak berhasil.
Langkah-langkah yang dilakukan:
1. Mengunduh dan Menginstal ekstensi JDBC Image Mosaic (berfungsi ok)
2. Membuat file "Parameter Koneksi":
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>
di mana "mosaic" adalah tabel (kolom: nama, titletable, minX, minY, maxX, maxY, resX, resY) yang berisi satu baris: "gfm, testrastertable,,,,,,,,"
3. Menyimpan file konfigurasi di. ./geoserver/data_dir/coverages/
4. Saat mencoba menambahkan penyimpanan data JDBC Image Mosaic, saya menerima galat berikut:
Error: Could not list layers for this store, an error occurred retrieving them: Unable to acquire a reader for this coverage with format: ImageMosaicJDBC
Pembaruan: Log 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
Jawaban:
Saya bekerja melalui beberapa masalah mencoba menggunakan raster postgis di geoserver mirip dengan OP. Di bawah ini adalah bagaimana saya berhasil memuat data raster saya.
Pra-konfigurasi: Lapisan geotiff BNG, yang dihasilkan dari FME, telah diimpor ke postgis menggunakan
raster2pgsql
. Perintah yang digunakan adalah:Ini menciptakan tabel raster beserta tabel piramidnya.
Saat ini server saya memiliki instance dari
Geoserver 2.6.2
. Untuk menggunakan raster Postgis diperlukan ekstensi JDBC Image Mosaic yang dapat diunduh dari http://geoserver.org/release/2.6.2/Ekstensi .jar kemudian diekstraksi menjadi
WEB-INF/lib
. Ini kemudian akan memungkinkan geoserver untuk menggunakan raster dari postgis. Namun untuk mengakses data, beberapa pengaturan perlu dikonfigurasi.Ikuti instruksi di: http://docs.geotools.org/latest/userguide/library/coverage/pgraster.html tetapi sedikit diubah:
Sekarang masukkan catatan untuk "cakupan", bernama oek dalam contoh, ini adalah tabel raster Anda: master dan piramida.
Juga menurut dokumen, untuk driver Postgis JDBC <versi 9 perlu untuk mengatur properti dalam database:
Sekarang konfigurasi Geoserver:
Dalam direktori data Geoserver Anda membuat direktori
/data/coverages
, ini perlu berisi 3 file:connect.pgraster.xml.inc, mapping.pgraster.xml.inc, oek.pgraster.xml
Ikuti http://docs.geotools.org/latest/userguide/library/coverage/pgraster.html untuk penamaan dan isinya. Jelas menyesuaikan string koneksi database dan pengaturan nama pengguna / kata sandi di
connect.pgraster.xml.inc
mapping.pgraster.xml.inc
Di sinilah kita perlu mereferensikan tabel raster dengan benar.Jadi ini akan mendapatkan nilai yang kita tambahkan ke tabel MOSAIC,
name
nilainya adalah kolomMOSAIC
, yang menautkan ke tabel raster dan tabel piramida kami.rast
adalah nama kolom raster di tabel raster.Dalam
oek.pgraster.xml
memastikan SRS Anda diatur dengan benar, 27700 BNG dalam hal ini.Di Geoserver kita sekarang dapat menambahkan datastore baru.
Buka baru Tambahkan toko baru.
Pilih ImageMosaicJDBC
Beri nama dan atur URL ke
file:coverages/oek.pgraster.xml
Simpan ini, dan semoga tidak ada kesalahan yang terjadi. Jika ya, periksa log geoserver yang mudah-mudahan akan menunjukkan apa masalahnya, semoga hanya masalah kesalahan ketik atau penamaan.
Pergi untuk menambahkan layer baru dan pilih penyimpanan data raster baru.
Pilih layer / cakupan baru Anda bernama oek dan publikasikan.
Kemudian dalam pengaturan lapisan, sesuaikan sistem koordinat Anda dan kotak terikat dengan tepat.
Untuk menata raster, ikuti dokumen di sini: http://docs.geoserver.org/latest/en/user/styling/sld-reference/rastersymbolizer.html
Saya menambahkan gaya:
Ini mewarnai raster saya biru di mana mereka memiliki nilai.
Anda kemudian harus memiliki layer yang dapat digunakan.
Penafian: Saya bukan ahli GIS, dan banyak dari apa yang saya kerjakan adalah trial and error. Saya tidak ragu bahwa ada cara yang lebih baik untuk melakukannya, tetapi untuk saat ini saya hanya bekerja pada bukti konsep untuk mengkonfirmasi jika kami memiliki kemampuan untuk menggunakan data raster di postgis. Detail yang lebih halus seperti nilai raster dan gaya adalah hal yang masih harus saya selesaikan. Jika saya membuat kemajuan lebih lanjut, saya akan memperbarui jawaban saya.
sumber
Mengikuti instruksi konfigurasi untuk plugin raster PostGIS, Anda harus mencoba untuk mengganti
dengan
dalam file konfigurasi
mapping.postgis.xml.inc
.sumber