Menambahkan Coveragestore baru di Workspace tertentu oleh REST

9

Jadi, hal sederhana seperti kelihatannya tetapi saya tidak bisa membuatnya bekerja! Saya mencoba menambahkan file data raster (GeoTIFF) ke geoserver melalui REST API, menggunakan curl di linux. SISA API yang bekerja, karena saya membuat sebuah ruang kerja baru menggunakannya:

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

Itu dibuat dengan benar seperti yang ditunjukkan oleh admin ui Geoserver, tetapi ketika saya mencoba menambahkan coveragestore ke ruang kerja itu dengan mengeksekusi

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"

meskipun sudah dimuat dengan benar, ia langsung masuk ke ruang kerja default, yang bukan yang saya inginkan. Apakah ada cara untuk mendefinisikan ruang kerja yang saya inginkan? Saya pikir itu sudah cukup dengan menyebutkannya di URL di mana saya menunjuk ke URI ruang kerja restroba tetapi tampaknya menghilangkannya.

Terima kasih atas bantuan Anda :-)

pd: pemula dengan geoserver, saya sudah mencoba mencari ini, tetapi entah saya tidak menggunakan kriteria pencarian yang benar, bodoh atau terlalu sederhana bagi siapa pun untuk bertanya bahwa saya bahkan lebih bodoh untuk bertanya: p

Mikel G. Gainza
sumber

Jawaban:

5

Mungkin Anda bisa mencoba ini setelah membuat ruang kerja:

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

Itu harus membuat coveragestore yang disebut int_decdi restProbaruang kerja ::

Anda kemudian dapat mereferensikan file 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

Saya pikir masalah Anda adalah yang hilang '

Permintaan Anda adalah:

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"

Seharusnya:

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
sumber
Memeriksa dan tidak, saya melakukan permintaan dengan benar. Bagus tangkap, saya akan memperbaiki pertanyaan :) (saya agak lega bukan itu, saya akan dipermalukan!)
Mikel G. Gainza
1
Setidaknya masalah Anda akan terpecahkan ;-) Memperbarui jawaban saya. Saya harap ini akan berhasil sekarang.
RK
1

Untuk menambahkan toko GeoTIFF dan lapisan dengan nama yang sama dalam satu langkah, Anda dapat menjalankan:

$ 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

Lebih detail dalam "contoh konfigurasi REST: Menambahkan shapefile yang ada" .

xandriksson
sumber