GeoServerでPostGISラスターを公開しますか?


23

GeoServerを使用してPostGISラスターを公開するにはどうすればよいですか?

Image Mosaic JDBCを使用してRasterデータソースを作成しようとして多くの時間を費やしましたが、運はありません。

実行手順:
1. JDBC Image Mosaic拡張機能をダウンロードしてインストールしました(正常に機能しました)
2.「接続パラメーター」ファイルを作成しました:

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>

ここで、「モザイク」は、「gfm、testrastertable 、、、、、、、、」という1行を含むテーブル(列:name、titletable、minX、minY、maxX、maxY、resX、resY)

です。 ./geoserver/data_dir/coverages/
4. Image Mosaic JDBCデータストアを追加しようとすると、次のエラーが表示されます。

Error: Could not list layers for this store, an error occurred retrieving them: Unable to acquire a reader for this coverage with format: ImageMosaicJDBC



更新:ジオサーバーログ

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

ログを詳細に表示し、ログファイルを確認します
Ian Turton

ログで更新されました...あまり教えてくれません
-asp

誰も助けてくれないように思えるので、GeoServerのメーリングリストを試してみてください:geoserver.org/display/GEOS/Mailing+Lists
GIS-Jonathan

この質問に関する最新情報はありますか?
パブロ

1
更新なし... Geoserverで作成できなかったため、JDBC Image Mosaicを作成するという考えを捨てなければなりませんでした。現在ImagePyramidストアを使用しており、ファイルはディスクに保存されています。
asp

回答:


7

OPと同様に、ジオサーバーでpostgisラスターを使用しようとしていくつかの問題を解決しました。以下は、ラスターデータを正常にロードした方法です。

事前設定:FMEから生成されたBNGジオティフレイヤーは、を使用してpostgisにインポートされていraster2pgsqlます。使用したコマンドは次のとおりです。

raster2pgsql -s 27700 -I -M -C {geotiffName}.tif -t 100x100 -l 2,4,6 {schema}.{tableName} | psql -U {user} -d {database}

これにより、ピラミッドテーブルとともにラスターテーブルが作成されました。

現在、私のサーバーにはのインスタンスがありますGeoserver 2.6.2。PostGISのラスタを使用するにはからダウンロードすることができる拡張JDBCイメージモザイクが必要ですhttp://geoserver.org/release/2.6.2/を

次に、拡張子.jarがに抽出されましたWEB-INF/lib。これにより、ジオサーバーがpostgisからのラスターを使用できるようになります。ただし、データにアクセスするには、いくつかの設定を構成する必要があります。

http://docs.geotools.org/latest/userguide/library/coverage/pgraster.htmlの手順に従いますが、少し調整されています。

create table {schema}.MOSAIC (NAME varchar(254) not null,
     TileTable varchar(254)not null,
     minX FLOAT8,minY FLOAT8, maxX FLOAT8, maxY FLOAT8,resX FLOAT8, resY FLOAT8, primary key (NAME,TileTable))

次に、この例ではoekという名前の「カバレッジ」のレコードを挿入します。これらはラスタテーブルです。マスターテーブルとピラミッドテーブルです。

insert into {schema}.MOSAIC (name, tiletable) values ('oek', {Main raster table name});
insert into {schema}.MOSAIC (name, tiletable) values ('oek', {raster pyramid 2 table name});
insert into {schema}.MOSAIC (name, tiletable) values ('oek', {raster pyramid 4 table name});
insert into {schema}.MOSAIC (name, tiletable) values ('oek', {raster pyramid 6 table name});

また、ドキュメントによると、Postgis JDBCドライバー<バージョン9の場合、データベースにプロパティを設定する必要があります。

ALTER DATABASE dbname SET bytea_output TO 'escape'

ジオサーバーの設定:

Geoserverデータディレクトリ内にディレクトリを作成し/data/coveragesます。これには3つのファイルが含まれている必要があります。connect.pgraster.xml.inc, mapping.pgraster.xml.inc, oek.pgraster.xml

命名と内容については、http://docs.geotools.org/latest/userguide/library/coverage/pgraster.htmlに従ってください。明らかにデータベース接続文字列とユーザー名/パスワード設定を調整しますconnect.pgraster.xml.inc

mapping.pgraster.xml.inc ラスタテーブルを正しく参照する必要がある場所です。

<spatialExtension name="pgraster"/>
 <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>

これにより、MOSAICテーブルに追加した値が取得されます。name値はの列でありMOSAIC、ラスターテーブルとピラミッドテーブルにリンクします。 rastは、ラスターテーブルのラスター列の名前です。

oek.pgraster.xml確認してくださいあなたのSRSが正しく、この場合には、27700 BNGに設定されています。

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE ImageMosaicJDBCConfig [
  <!ENTITY mapping PUBLIC "mapping"  "mapping.pgraster.xml.inc">
  <!ENTITY connect PUBLIC "connect"  "connect.pgraster.xml.inc">
]>

<config version="1.0">
  <coverageName name="oek"/>
  <coordsys name="EPSG:27700"/>
  <!-- interpolation 1 = nearest neighbour, 2 = bipolar, 3 = bicubic -->
  <scaleop  interpolation="1"/>
<axisOrder ignore="false"/>
  &mapping;
  &connect;
</config

Geoserverで、新しいデータストアを追加できるようになりました。

新規に移動新しいストアを追加します。

ImageMosaicJDBCを選択します

名前を付けてURLを設定します file:coverages/oek.pgraster.xml

これを保存すると、指が交差してもエラーは返されません。存在する場合は、ジオサーバーのログを確認してください。問題が何であるかを示し、できれば単なるタイプミスまたはネーミングの問題を示してください。

新しいレイヤーを追加して、新しいラスターデータストアを選択します。

oekという名前の新しいレイヤー/カバレッジを選択して公開します。

次に、レイヤー設定で、座標系と境界ボックスを適切に調整します。

ラスターのスタイルを設定するには、http//docs.geoserver.org/latest/en/user/styling/sld-reference/rastersymbolizer.htmlのドキュメントに従ってください。

スタイルを追加しました:

<RasterSymbolizer>
 <Opacity>1.0</Opacity>
  <ColorMap>
   <ColorMapEntry color="#ffffff" quantity="1" label="label1" opacity="1"/>
   <ColorMapEntry color="#0000ff" quantity="200" label="label2" opacity="1"/>
  </ColorMap>
</RasterSymbolizer>

これにより、値のあるラスターが青色になりました。

その後、使用可能なレイヤーが必要です。

免責事項:私はGISの専門家ではなく、私が取り組んだ多くのことは試行錯誤でした。より良い方法があることは間違いありませんが、当面は、PostGISでラスターデータを使用できるかどうかを確認するための概念実証に取り組んでいます。ラスター値やスタイリングなどのより細かい詳細は、まだ解決する必要があるものです。さらに進歩した場合は、回答を更新します。


2

PostGISラスタープラグインの構成手順に従って、置き換えてみてください。

<spatialExtension name="postgis"/>

<spatialExtension name="pgraster"/>

構成ファイル内mapping.postgis.xml.inc

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.