Geoserver 2.0.2をプログラミングして、UIなしでラスターデータストアとレイヤーを追加する


15

継続的に更新されるラスターイメージのディレクトリがあります。この画像から、GeotoolのPyramidBuilderユーティリティを使用して画像ピラミッドを作成しています。UIを使用せずにGeoserverにラスターデータストアとレイヤーを自動的に追加するには、cronジョブをセットアップする必要があります。

GeoserverマニュアルのRESTセクションを見て、ワークスペース「testWS」を追加できましたが、ImagePyramidデータストアを作成しようとしても機能しませんでした。

データストアにアクセスできるので、シェープファイルの例を拡張して、

curl -u admin:geoserver -XPUT -H 'Content-type: text/plain' \ 
   -d '/opt/geoserver_data_dir/2.0.2/data/test_pyramid.pyr' \
    "http://localhost:8080/geoserver/rest/workspaces/testWS/datastores/test_pyramid.pyr/external.imagepyramid?configure=all"

test_pyramid.pyrは、この場所にあるImagePyramidのベースです。

これにより、「No such datastore:test_pyramid」というエラーが表示されました

UIを使用してそれぞれを手動で追加せずに、新しいデータストアとレイヤーをGeoserverに追加するより良い方法はありますか?既存のImagePyramidをデータストアおよびレイヤーとして追加する適切なRESTステートメントを作成するのに助けが必要です。

これを行うことができるJavaコードはありますか?Geoserver python拡張機能を調べましたが、これもありませんでした。


Janmail-archive.com/geoserver-users@lists.sourceforge.net/…からのこの投稿は、ほぼ同じ問題を説明しています。解決策はありません。
-DaveParillo

1
でgeoserverドキュメントdocs.geoserver.org/stable/en/user/restconfig/...は、この方法を使用して設定することができる唯一のデータストアは、シェープファイルの場合はファイル、PostGISにした場合のデータベース、またはAであることを意味しますリモートWeb機能サービスの場合はサーバーですが、ドキュメントは単に不完全な場合があります。
-DaveParillo

サーバーにPOSTしているファイルに実際にあるものを追加できますか?
イアンタートン

ただし、その情報を含むXMLファイルを作成する必要があります。
イアンタートン

投稿しようとしているのは、Geoserverで作成するデータストアへのパスです。このパスは、単一のディレクトリ内にあるラスタファイルの外部セット(imagepyramid)です。私が望んでいたのは、Geoserverがこの場所(geoserverと同じファイルシステム上)でimagepyramidのデータストアとレイヤーを作成することだけです。
rbrister11年

回答:


20

次のように、UIの外部からcurlとxmlを使用してGeoTiffのワークスペース、データストア、およびレイヤー(カバレッジストア)を作成できます。

  1. ワークスペースを作成します。

    curl -u admin:geoserver -v -XPOST -H 'Content-type: text/xml' \
         -d '<workspace><name>wsgeotiff</name></workspace>' \
         http://localhost:8080/geoserver/rest/workspaces
  2. 次に、データストアを作成します。

    curl -u admin:geoserver -v -XPOST -H 'Content-type: text/xml' \
         -d '<coverageStore>
             <name>wsgeotiff_imageGeoTiffWGS84_1298678792699</name>
             <workspace>wsgeotiff</workspace>
             <enabled>true</enabled>
             <type>GeoTIFF</type>
             <url>/home/gis/image_wgs84.tif</url>
             </coverageStore>' \
         "http://localhost:8080/geoserver/rest/workspaces/wsgeotiff/coveragestores?configure=all"
  3. 次に、レイヤーを作成します。

     curl -u admin:geoserver -v -XPOST -H 'Content-type: text/xml' \
          -d '<coverage>
              <name>imageGeoTiffWGS84</name>
              <title>imageGeoTiffWGS84</title>
              <nativeCRS>GEOGCS[&quot;WGS 84&quot;,DATUM[&quot;World Geodetic System 1984&quot;,SPHEROID[&quot;WGS 84&quot;,6378137.0, 298.257223563, AUTHORITY[&quot;EPSG&quot;,&quot;7030&quot;]],AUTHORITY[&quot;EPSG&quot;,&quot;6326&quot;]],PRIMEM[&quot;Greenwich&quot;, 0.0, AUTHORITY[&quot;EPSG&quot;,&quot;8901&quot;]],UNIT[&quot;degree&quot;, 0.017453292519943295],AXIS[&quot;Geodetic longitude&quot;, EAST],AXIS[&quot;Geodetic latitude&quot;, NORTH],AUTHORITY[&quot;EPSG&quot;,&quot;4326&quot;]]</nativeCRS>
              <srs>EPSG:4326</srs>
              <latLonBoundingBox><minx>-179.958</minx><maxx>-105.002</maxx><miny>-65.007</miny><maxy>65.007</maxy><crs>EPSG:4326</crs></latLonBoundingBox>
              </coverage>' \
          "http://localhost:8080/geoserver/rest/workspaces/wsgeotiff/coveragestores/wsgeotiff_imageGeoTiffWGS84_1298678792699/coverages"

これがすべて完了すると、外部イメージ「image_wgs84.tif」を指すデータストアと、カバレッジを表示するWMSレイヤーができます。

私が知らないのは、この手法が画像ピラミッド型のデータストアを作成する手法に直接変換されるかどうかです。

幸運を。


上記の質問とまったく同じ問題があります。それをきちんと置いてくれてありがとう、そこにあるほとんどの解決策は紛らわしい。ただし、ここで1つ質問があります。あなたの答えでは、ラスターの境界ボックスを入力として与える必要があります。上記のソリューションをスクリプトに入れると、gdalinfoを使用して境界ボックスを見つけることができることを理解しました。しかし、それは仕事(構文解析など)を追加しただけです。私の質問は、ジオサーバーに境界ボックスを自動的に計算させることはできますか?UIからラスターを追加すると、バウンディングボックスが計算されるため、そうすることができることがわかっています!
ショーナック

3
GeoServer 2.2では、バウンディングボックス(およびSRSなど)を明示的に指定する必要はありません。レイヤーの作成時にファイルからそれらを自動的に検出します(GeoTIFFおよびImageMosaicでテスト済み)。さらに?recalculate=nativebbox、投影または投影ポリシーが変更されたときに、ネイティブバウンディングボックスが再計算されるように設定できます。docs.geoserver.org/stable/en/user/rest/api/…を
xandriksson

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