Geoserver Layer Bounding Box – How to Programmatically Set Bounding Box in PostGIS

geoserverpostgis

I have a system built on PostGIS/GeoServer/OpenLayers. Data (a ship's voyage track) is inserted into the database in real-time – a bunch of variables and point geometry type. This is served up via (primarily) WFS to OpenLayers.

I dynamically publish the layer for a new voyage using REST. When done this way, the bounding box (according to the config page) is set to 0,0,-1,-1 for both native and lat/long.

What I'd like to do is set this to a reasonable value programmatically – effectively automating going in and using the 'Compute from Data'/'Compute from Native Bounds' links on the layer config page.

My preference is to do this via a RESTful call, however this doesn't seem to be supported in the current version of the standard API. Any other alternative solutions are more than welcome.

Best Answer

This is already an old question, but I haven't found many example documenting this on he Web. On GeoServer version 2.5.1 the following should work (it should also work with older versions). :

Example XML

<layerGroup>

<workspace>workspace</workspace>
<name>014531_layer_group</name>
<layers>
<layer>014531_layer</layer>
<layer>014531_layer_watermark</layer>
</layers>
<styles>
<style>raster</style>
<style>sld_watermark</style>
</styles>
<bounds>
<minx>12.91</minx>
<miny>-6.97</miny>
<maxx>14.32</maxx>
<maxy>-5.44</maxy>
<crs>EPSG:4326</crs>
</bounds>
</layerGroup>

Example REST statement

sudo curl -v -u user:pwd -XPOST -d @yourxmlfile.xml -H "Content-type: text/xml" http://localhost:8080/geoserver/rest/layergroups

It doesn't take the bounding box of the underlying layer, but you could retrieve it by using a Selenium script