对Geoserver 2.0.2进行编程以添加不带UI的栅格数据存储和图层


15

我有一个栅格图像目录,该目录将不断更新。通过此图像,我正在使用Geotool的PyramidBuilder实用程序制作图像金字塔。我需要设置一个cron作业,以在不使用UI的情况下自动将栅格数据存储和图层添加到Geoserver。

在查看Geoserver手册的REST部分之后,我可以添加我的工作区“ testWS”,但是尝试创建ImagePyramid数据存储区无效。

由于我有权访问数据存储区,因此我在shapefile示例中进行了扩展,并尝试

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在此位置的基础。

这给了我一个错误“没有这样的数据存储:test_pyramid”

有没有更好的方法可以在不通过UI手动添加每个数据存储和图层的情况下向Geoserver添加新的数据存储和图层?在设计适当的REST语句时需要帮助,该语句将添加现有的ImagePyramid作为数据存储和图层。

有一些Java代码可以做到这一点吗?我查看了Geoserver python扩展,但它们也没有。


Jan的这篇文章mail-archive.com/geoserver-users@lists.sourceforge.net/…描述了几乎完全相同的问题。那里没有分辨率。
DaveParillo 2011年

1
在GeoServer的文档docs.geoserver.org/stable/en/user/restconfig/...意味着您可以使用此方法配置的唯一数据存储在shape文件的情况下一个文件,在PostGIS的情况下的数据库,或如果是远程Web功能服务,则服务器,但文档可能不完整。
DaveParillo 2011年

您可以添加要发布到服务器的文件中的实际内容吗?
伊恩·特顿

但是您必须构造一个包含该信息的XML文件。
伊恩·特顿

我要发布的是我要Geoserver创建的数据存储的路径。此路径是单个目录中的一组外部栅格文件(imagepyramid)。所有我想要的是利用Geoserver在这个位置创建一个imagepyramid数据存储和层(在同一文件系统为GeoServer的。)
rbrister

Answers:


20

您可以从UI外部使用curl和xml为GeoTiff创建工作空间,数据存储和图层(coveragestore),如下所示:

  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图层以显示覆盖范围。

我不知道该技术是否会直接转化为创建图像金字塔类型数据存储的技术。

祝好运。


我有与上述问题相同的确切问题。感谢您的介绍,大多数解决方案都令人困惑。我在这里有一个问题。在您的答案中,需要提供栅格的边界框作为输入。现在我知道,如果将上述解决方案放入脚本中,则可以使用gdalinfo查找边界框。但这只是增加了工作(解析等)。我的问题是,我们可以让Geoserver自动计算边界框吗?我们知道它可以这样做,因为当我们从UI添加栅格时,它会计算边界框!
Shaunak 2011年

3
在我的GeoServer 2.2上,您无需显式指定边界框(和SRS等)。创建图层时,它将自动从文件中检测到它们(已通过GeoTIFF和ImageMosaic测试)。您还可以设置?recalculate=nativebbox更改投影或投影策略时重新计算本机边界框。见docs.geoserver.org/stable/en/user/rest/api/...
xandriksson

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.