Buat Layer di GeoServer menggunakan REST


16

Sebagai bagian dari solusi yang memungkinkan untuk pertanyaan ini saya ingin membuat layer di GeoServer via REST yang memasok pernyataan SQL bersama dengan userid.

Membaca Saya pikir saya akan membuat jenis fitur dan menerbitkannya? Saya perlu melakukan ini semua dalam REST. Adakah yang punya contoh kode?


Apakah sepertinya tidak mungkin menambahkan lapisan melalui antarmuka lainnya, apakah Anda menyelesaikannya pada akhirnya? Saya mendapatkan kesalahan: Status HTTP 405 - Metode HTTP yang ditentukan tidak diizinkan untuk sumber daya yang diminta
a1an

Jawaban:


41

Ada banyak hal yang dapat Anda lakukan dengan GeoServer REST API yang tidak secara khusus didokumentasikan dan tidak ada contoh kode untuk. Inilah strategi untuk menanganinya.

Pertama, mulailah dengan contoh - contoh dalam dokumentasi . Pastikan Anda terbiasa dengan cara membuat lapisan atau ruang kerja baru yang sederhana menggunakan HTTP POST dengan XML atau JSON.

Kemudian, melalui GeoServer UI, secara manual buat objek yang Anda butuhkan yang tidak ada dokumentasi (dalam hal ini, tipe fitur).

Terakhir, telusuri secara manual ke indeks GeoServer REST ( http://your-server/restatau http://your-server/geoserver/rest). Jelajahi indeks sampai Anda menemukan jenis fitur yang baru saja Anda buat. Tambahkan ".xml" atau ".json" ke URL sumber ini, dan Anda akan melihat representasi XML atau JSON-nya.

Representasi ini adalah apa yang Anda perlukan untuk POST untuk membuat jenis fitur melalui API. URL representasi adalah URL yang Anda perlukan untuk POST (misalnya, http://your-server/geoserver/rest/..../myFeatureTypeName.json).

Anda dapat menggunakan strategi ini untuk mengetahui cara membuat atau mengonfigurasi sumber daya apa pun di GeoServer secara terprogram.


2
TERIMA KASIH! Jawaban yang mudah dan hanya menyelamatkan saya 2 jam lagi dari mengejek
Ragi Yaser Burhum

4
Selain itu, banyak parameter dapat dilewati, dan GeoServer akan mengetahuinya (seperti di UI). misalnya. kotak pembatas
rcoup

1
Wow - ini adalah deskripsi terbaik dari ini yang pernah saya lihat.
Kieveli

3
Menggunakan GeoServer 2.10.2, saya menemukan bahwa saya perlu POST ke featuretypestitik akhir toko, misalnyageoserver/rest/workspaces/<workspacename>/datastores/<storename>/featuretypes/
Stephen Lead

Deskripsi alur kerja yang jelas, termasuk tautan yang relevan. DIPERBARUI! :)
tony gil

10

Saya tahu ini adalah pertanyaan lama, tapi siapa tahu ada orang yang bingung seperti saya. Bagian yang penting adalah Anda tidak dapat membuat layer dari titik akhir http: // geoserver / rest / layers .

Jika Anda ingin menambahkan layer vektor, ini dilakukan melalui sumber daya tipe fitur:

http://docs.geoserver.org/stable/en/user/rest/api/featuretypes.html

POST ke:

/workspaces/<ws>/datastores/<ds>/featuretypes

di mana ruang kerja tempat Anda ingin tipe fitur hidup, dan sumber data yang digunakan akan membuat tipe fitur vektor baru, yaitu layer.

Jika Anda bertanya-tanya tentang apa yang dapat Anda POST, @Rohan benar, cara termudah adalah dengan menanyakan jenis fitur yang ada, yaitu http dan dapatkan

/workspaces/<ws>/datastores/<ds>/featuretypes/<ft>.json 

yang akan mengembalikan tipe fitur yang ada sebagai json.




0

Untuk menambahkan layer, datastore dan jenis feature harus didefinisikan. Dengan asumsi mereka sudah didefinisikan bersama dengan gaya (seperti yang dijelaskan dalam panduan di http://boundlessgeo.com/2012/10/adding-layers-to-geoserver-using-the-rest-api/ untuk menambahkan layer PUT permintaan harus dikirim ke geoserver di:

http://geoserver.host/geoserver/rest/layers/NEW_LAYER_NAME

Dengan konten data seperti:

<layer>
  <name>NEW_LAYER_NAME</name>
  <type>VECTOR</type>
  <defaultStyle>
    <name>myStyle</name>
  </defaultStyle>
  <resource class="featureType">
    <name>myFeature</name>
  </resource>
</layer>

Blog itu berbicara tentang menambahkan gaya ke lapisan yang ada, yang masuk akal karena itulah yang dirancang untuk PUT. Anda tidak dapat membuat layer baru dengan cara ini. Berikut adalah dokumennya : docs.geoserver.org/stable/en/user/rest/api/layers.html , sebuah PUT untuk beristirahat / lapisan akan mengembalikan 405. Sebuah PUT ke / rest / layers / <existing_layer> akan memodifikasi sebuah lapisan tertentu, bukan membuat yang baru.
Lostintranslation
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.