Programmation de Geoserver 2.0.2 pour ajouter un magasin de données raster et une couche sans l'interface utilisateur

15

J'ai un répertoire d'images raster qui sera continuellement mis à jour. À partir de cette imagerie, je crée des pyramides d'images à l'aide de l'utilitaire PyramidBuilder de Geotool. J'ai besoin de configurer un travail cron pour ajouter automatiquement des banques de données raster et des couches à Geoserver sans utiliser l'interface utilisateur.

Après avoir regardé la section REST du manuel Geoserver, j'ai pu ajouter mon espace de travail, "testWS", mais essayer de créer une banque de données ImagePyramid n'a pas fonctionné.

Depuis que j'ai accès au magasin de données, j'ai développé l'exemple du fichier de formes et essayé 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"

Où test_pyramid.pyr est la base de mon ImagePyramid à cet emplacement.

Cela m'a donné une erreur de "Aucune telle banque de données: test_pyramid"

Existe-t-il un meilleur moyen d'ajouter une nouvelle banque de données et une nouvelle couche à Geoserver sans les ajouter manuellement via l'interface utilisateur? J'ai besoin d'aide pour créer l'instruction REST appropriée qui ajoutera un ImagePyramid existant en tant que magasin de données et couche.

Y a-t-il du code Java qui pourrait le faire? J'ai regardé les extensions python de Geoserver mais elles ne l'avaient pas non plus.

rbrister
la source
Ce message de Jan mail-archive.com/[email protected]/… décrit presque exactement le même problème. Pas de résolution là-bas.
DaveParillo
1
Les documents geoserver sur docs.geoserver.org/stable/en/user/restconfig/… impliquent que les seules banques de données que vous pouvez configurer à l'aide de cette méthode sont un fichier dans le cas d'un Shapefile, une base de données dans le cas de PostGIS ou un serveur dans le cas d'un service de fonctionnalité Web à distance, mais les documents peuvent simplement être incomplets.
DaveParillo le
pouvez-vous ajouter ce qui se trouve réellement dans le fichier que vous POSTEZ sur le serveur?
Ian Turton
Mais vous devez créer un fichier XML contenant ces informations.
Ian Turton
ce que j'essaie de publier, c'est le chemin vers le magasin de données que je veux que Geoserver crée. Ce chemin est un ensemble externe de fichiers raster (imagepyramid) dans un seul répertoire. Tout ce que je voulais, c'est que Geoserver crée le magasin de données et la couche pour une imagepyramid à cet emplacement (sur le même système de fichiers que geoserver.)
rbrister

Réponses:

20

Vous pouvez créer un espace de travail, un magasin de données et une couche (magasin de couvertures) pour un GeoTiff avec curl et xml depuis l'extérieur de l'interface utilisateur, comme ceci:

  1. Créez l'espace de travail.

    curl -u admin:geoserver -v -XPOST -H 'Content-type: text/xml' \
         -d '<workspace><name>wsgeotiff</name></workspace>' \
         http://localhost:8080/geoserver/rest/workspaces
  2. Créez ensuite le magasin de données.

    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. Créez ensuite le calque.

     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"

Lorsque tout cela est fait, vous disposez d'une banque de données pointant vers l'image externe 'image_wgs84.tif' et d'une couche WMS pour afficher la couverture.

Ce que je ne sais pas, c'est si cette technique se traduira directement en technique de création d'une banque de données de type pyramide d'images ou non.

Bonne chance.

DaveParillo
la source
J'ai le même problème exact que la question ci-dessus. Merci de bien l'avoir dit, la plupart des solutions prêtent à confusion. J'ai cependant une question ici. Dans votre réponse, les zones de délimitation du raster doivent être fournies en entrée. Maintenant, je comprends que si je mets la solution ci-dessus dans un script, je pourrais utiliser gdalinfo pour trouver la boîte englobante. Mais c'est juste un travail supplémentaire (analyse, etc.). Ma question est: pouvons-nous faire geoserver calculer automatiquement les boîtes englobantes? Nous savons qu'il peut le faire, car lorsque nous ajoutons un raster à partir de l'interface utilisateur, il calcule la boîte englobante!
Shaunak
3
Sur mon GeoServer 2.2, vous n'avez pas besoin de spécifier explicitement le Bounding Box (et SRS, etc.). Il les détecte automatiquement à partir du fichier lors de la création du calque (testé pour GeoTIFF et ImageMosaic). Vous pouvez en outre définir ?recalculate=nativebboxle recadrage du cadre de sélection natif lorsque la projection ou la stratégie de projection est modifiée. Voir docs.geoserver.org/stable/en/user/rest/api/…
xandriksson