Programación de Geoserver 2.0.2 para agregar un almacén de datos ráster y una capa sin la interfaz de usuario

15

Tengo un directorio de imágenes raster que se actualizará continuamente. A partir de estas imágenes, estoy creando pirámides de imágenes utilizando la utilidad PyramidBuilder de Geotool. Necesito configurar un trabajo cron para agregar automáticamente almacenes de datos de ráster y capas a Geoserver sin usar la interfaz de usuario.

Después de consultar la sección REST de Geoserver manual, pude agregar mi espacio de trabajo, "testWS", pero intentar crear un almacén de datos ImagePyramid no funcionó.

Ya que tengo acceso al almacén de datos, expandí el ejemplo de shapefile y traté de

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"

Donde test_pyramid.pyr es la base de mi ImagePyramid en esta ubicación.

Esto me dio un error de "No hay tal almacén de datos: test_pyramid"

¿Hay una mejor manera de agregar un nuevo almacén de datos y una capa a Geoserver sin agregarlos manualmente a través de la interfaz de usuario? Necesito ayuda para crear la declaración REST adecuada que agregará un ImagePyramid existente como un almacén de datos y una capa.

¿Hay algún código Java que pueda hacer esto? Miré las extensiones de python de Geoserver pero tampoco tenían esto.

    
pregunta rbrister 23.02.2011 - 23:36

2 respuestas

19

Puede crear un espacio de trabajo, un almacén de datos y una capa (coveragestore) para un GeoTiff con rizo y xml desde fuera de la interfaz de usuario, de este modo:

  1. Crea el espacio de trabajo.

    curl -u admin:geoserver -v -XPOST -H 'Content-type: text/xml' \
         -d '<workspace><name>wsgeotiff</name></workspace>' \
         http://localhost:8080/geoserver/rest/workspaces
    
  2. Luego crea el almacén de datos.

    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. Luego crea la capa.

     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"
    

Cuando haya terminado todo esto, tendrá un almacén de datos que apunta a la imagen externa 'image_wgs84.tif' y una capa WMS para mostrar la cobertura.

Lo que no sé es si esta técnica se traducirá directamente en una técnica para crear un almacén de datos de tipo pirámide de imagen o no.

Buena suerte.

    
respondido por el DaveParillo 03.03.2011 - 17:52
4

Necesitará una tienda de cobertura y coberturas.

  

Un almacén de cobertura es una fuente de datos espaciales basada en ráster.

Los almacenes de datos que intentaste usar son solo para datos vectoriales.

¿Ha revisado ¿Cómo utilizar curl para cargar Cobertura a través del resto de Geoserver?

    
respondido por el underdark 24.02.2011 - 14:01

Lea otras preguntas en las etiquetas