Adicionando um novo Coveragestore em um determinado Espaço de Trabalho pelo REST

9

Então, por mais simples que pareça, mas não consigo fazê-lo funcionar! Estou tentando adicionar um arquivo de dados raster (GeoTIFF) ao geoserver via API REST, usando curl no linux. A API REST está funcionando, desde que eu criei um novo espaço de trabalho usando-o:

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

Ele foi criado corretamente, conforme mostrado pela interface do usuário do administrador do Geoserver, mas quando tento adicionar um armazenamento de capa a esse espaço de trabalho executando

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"

mesmo que esteja carregado corretamente, ele entra diretamente na área de trabalho padrão, que não é a que eu quero. Existe alguma maneira de definir em qual área de trabalho eu quero? Eu pensei que basta mencioná-lo na URL em que aponto para o URI da área de trabalho do restProba, mas parece estar omitindo-o.

Obrigado pela ajuda :-)

pd: newbie with geoserver, eu tentei procurar por isso, mas ou não estou usando os critérios de pesquisa corretos, sou um tolo ou é muito simples para alguém perguntar que sou idiota por perguntar: p

Mikel G. Gainza
fonte

Respostas:

5

Talvez você possa tentar isso depois de criar a área de trabalho:

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

Ele deve criar um coveragestore chamado int_decno restProbaespaço de trabalho:

Você pode fazer referência ao arquivo 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

Eu acho que seu problema está faltando '

Sua solicitação foi:

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"

Deveria ter 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
fonte
Verifiquei e não, fiz o pedido corretamente. Boa captura tho, eu vou corrigir a questão :) (im tipo de aliviado que não era isso, eu estaria humilhado!)
Mikel G. Gainza
11
Pelo menos o seu problema será resolvido ;-) Atualizei minha resposta. Espero que funcione agora.
RK
1

Para adicionar um armazenamento GeoTIFF e uma camada com o mesmo nome em uma etapa, você pode executar:

$ 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

Mais detalhes nos "exemplos de configuração REST: Adicionando um shapefile existente" .

xandriksson
fonte