Ajout d'un nouveau Coveragestore dans un certain espace de travail par REST

9

Donc, chose aussi simple que cela puisse paraître mais je n'arrive pas à le faire fonctionner! J'essaie d'ajouter un fichier de données raster (GeoTIFF) au géoserveur via l'API REST, en utilisant curl sur linux. API REST est travaille, depuis que je créé un nouvel espace de travail utilisant:

curl -u admin:geoserver -v -XPOST -H 'Content-type: text/xml' \
 -d '<workspace><name>restProba</name></workspace>' \
 http://localhost:8080/geoserver/rest/workspaces

Il est correctement créé comme indiqué par l'interface utilisateur d'administration de Geoserver, mais lorsque j'essaie d'ajouter un magasin de couvertures à cet espace de travail en exécutant

curl -u admin:geoserver -v -XPOST -H 'Content-type: text/xml' -d
'<coverageStore><name>int_dec</name><enabled>true</enabled>
<type>GeoTIFF</type> <url>$home/int_dec.tif</url></coverageStore>'     
"http://localhost:8080/geoserver/rest/workspaces/restProba/coveragestores?configure=all"

même s'il est correctement chargé, il va directement dans l'espace de travail par défaut, qui n'est pas celui dans lequel je le veux. Existe-t-il un moyen de définir dans quel espace de travail je le veux? J'ai pensé que cela suffirait en le mentionnant dans l'URL où je pointe vers l'URI de l'espace de travail de restProba, mais il semble l'omettre.

Merci de votre aide :-)

pd: débutant avec geoserver, j'ai essayé de chercher cela, mais soit je n'utilise pas les bons critères de recherche, je suis un imbécile, soit il est trop simple pour quiconque de demander que je suis encore plus idiot de le demander: p

Mikel G. Gainza
la source

Réponses:

5

Vous pouvez peut-être essayer ceci après avoir créé l'espace de travail:

curl -u admin:geoserver -v -XPOST -H 'Content-Type: application/xml' \
     -d '<coverageStore><name>int_dec</name><workspace>restProba</workspace>  
         <enabled>true</enabled></coverageStore>' \
         http://localhost:8080/geoserver/rest/workspaces/restProba/coveragestores

Il devrait créer un coveragestore appelé int_decdans l' restProbaespace de travail ::

Vous pouvez ensuite référencer le fichier GeoTIFF:

curl -u admin:geoserver -v -XPUT -H 'Content-type: text/plain' \
     -d 'file:/$home/int_dec.tif' \
      http://localhost:8080/geoserver/rest/workspaces/restProba/coveragestores/int_dec/external.geotiff?configure=first\&coverageName=int_dec

Je pense que votre problème est le manque '

Votre demande était:

curl -u admin:geoserver -v -XPOST -H 'Content-type: text/xml' -d
<coverageStore><name>int_dec</name><enabled>true</enabled>
<type>GeoTIFF</type> <url>$home/int_dec.tif</url></coverageStore>'     
"http://localhost:8080/geoserver/rest/workspaces/restProba/coveragestores?configure=all"

Cela aurait dû être:

curl -u admin:geoserver -v -XPOST -H 'Content-type: text/xml' -d
'<coverageStore><name>int_dec</name><enabled>true</enabled>
<type>GeoTIFF</type> <url>$home/int_dec.tif</url></coverageStore>'     
"http://localhost:8080/geoserver/rest/workspaces/restProba/coveragestores?configure=all"

RK
la source
Vérifié et non, j'ai fait la demande correctement. Bon catch tho, je vais corriger la question :) (je suis un peu soulagé que ce ne soit pas ça, je serais humilié!)
Mikel G. Gainza
1
Au moins votre problème sera résolu ;-) Mise à jour de ma réponse. J'espère que cela fonctionnera maintenant.
RK
1

Pour ajouter un magasin GeoTIFF et une couche du même nom en une seule étape, vous pouvez exécuter:

$ curl -v -u admin:geoserver -XPUT -H "Content-type: text/plain"
       -d "file:///path_to_directory/int_dec.tif"
       http://localhost:8080/geoserver/rest/workspaces/restProba/coveragestores/int_dec/external.geotiff

Plus de détails dans les "Exemples de configuration REST: Ajout d'un fichier de formes existant" .

xandriksson
la source