Hinzufügen eines neuen Coveragestores in einem bestimmten Arbeitsbereich durch REST

9

Also, einfache Sache, wie es scheint, aber ich kann es nicht zum Laufen bringen! Ich versuche, eine Raster-Datendatei (GeoTIFF) über die REST-API unter Verwendung von Curl unter Linux zum Geoserver hinzuzufügen. REST API ist arbeiten, da ich einen neuen Arbeitsbereich erstellt es:

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

Es wurde korrekt erstellt, wie von der Administrator-Benutzeroberfläche von Geoserver gezeigt, aber wenn ich versuche, diesem Arbeitsbereich durch Ausführen einen Coveragestore hinzuzufügen

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"

Obwohl es korrekt geladen ist, wird es direkt in den Standardarbeitsbereich verschoben, in dem ich es nicht haben möchte. Gibt es eine Möglichkeit zu definieren, in welchem ​​Arbeitsbereich ich es haben möchte? Ich dachte, es wäre genug, wenn ich es in der URL erwähne, wo ich auf die Arbeitsbereich-URI von restProba verweise, aber es scheint, als würde es weggelassen.

Danke für Ihre Hilfe :-)

pd: Neuling mit Geoserver, ich habe versucht, danach zu suchen, aber entweder verwende ich nicht die richtigen Suchkriterien, ich bin ein Dummkopf oder es ist einfach zu einfach für jemanden zu fragen, ob ich noch dumm bin, es zu fragen: p

Mikel G. Gainza
quelle

Antworten:

5

Vielleicht können Sie dies nach dem Erstellen des Arbeitsbereichs versuchen:

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

Es sollte ein Coveragestore erstellt werden, der int_decim restProbaArbeitsbereich aufgerufen wird ::

Sie können dann auf die GeoTIFF-Datei verweisen:

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

Ich denke, dein Problem ist das Fehlen '

Ihre Anfrage war:

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"

Es hätte sein sollen:

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
quelle
Überprüfte es und nein, ich habe die Anfrage richtig gemacht. Guter Fang, ich werde die Frage korrigieren :) (ich bin irgendwie erleichtert, dass es nicht so war, ich würde gedemütigt werden!)
Mikel G. Gainza
1
Zumindest dein Problem wird gelöst sein ;-) Meine Antwort wurde aktualisiert. Ich hoffe es wird jetzt funktionieren.
RK
1

So fügen Sie in einem Schritt einen GeoTIFF-Speicher und eine gleichnamige Ebene hinzu:

$ 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

Weitere Details finden Sie in den "REST-Konfigurationsbeispielen: Hinzufügen eines vorhandenen Shapefiles" .

xandriksson
quelle