Agregar un nuevo almacén de coberturas en un espacio de trabajo determinado por REST

9

Entonces, ¡algo simple como parece pero no puedo hacer que funcione! Estoy tratando de agregar un archivo de datos ráster (GeoTIFF) al geoservidor a través de REST API, usando curl en linux. REST API está funcionando, ya que creé un nuevo espacio de trabajo usándolo:

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

Se creó correctamente como lo muestra la interfaz de usuario de administración de Geoserver, pero cuando intento agregar un almacén de coberturas a ese espacio de trabajo ejecutando

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"

a pesar de que está cargado correctamente, va directamente al espacio de trabajo predeterminado, que no es en el que lo quiero. ¿Hay alguna forma de definir en qué espacio de trabajo lo quiero? Pensé que era suficiente al mencionarlo en la URL donde señalo el URI del espacio de trabajo de restProba, pero parece estar omitiéndolo.

Gracias por tu ayuda :-)

pd: novato con geoservidor, he intentado buscar esto, pero o no estoy usando los criterios de búsqueda correctos, soy un tonto o es demasiado simple para que alguien pregunte que incluso soy un tonto por preguntar: p

Mikel G. Gainza
fuente

Respuestas:

5

Tal vez pueda intentar esto después de crear el espacio de trabajo:

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

Debería crear un almacén de coberturas llamado int_decen el restProbaespacio de trabajo ::

Luego puede hacer referencia al archivo 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

Creo que tu problema es el desaparecido '

Su solicitud fue:

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"

Debería haber sido:

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
fuente
Lo comprobé y no, hice la solicitud correctamente. Bien hecho, corregiré la pregunta :) (estoy un poco aliviado de que no sea eso, ¡me humillarían!)
Mikel G. Gainza
1
Al menos su problema será resuelto ;-) Actualicé mi respuesta. Espero que funcione ahora.
RK
1

Para agregar una tienda GeoTIFF y una capa del mismo nombre en un solo paso, puede ejecutar:

$ 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

Más detalles en los "Ejemplos de configuración REST: Agregar un archivo de forma existente" .

xandriksson
fuente