Saya memiliki persyaratan ketat untuk mengambil nama semua lapisan di toko GeoServer menggunakan OpenLayers. Saya telah melewati pos di sini , tetapi tidak menjawab pertanyaan saya. Saya juga telah melalui REST API GeoServer, yang akan ideal jika saya menggunakan bahasa lain, katakanlah C #, Java, atau PHP. Tapi saya ingin melakukan ini sepenuhnya dalam JavaScript.
PEMBARUAN:
Dari apa yang dapat saya lihat di WFS GetCapabilities
dokumen, saya dapat mengambil nama semua lapisan dengan mengirimkan permintaan GetCapabilities WFS menggunakan filter. Tapi saya tidak yakin apakah mungkin untuk memasukkan filter dalam GetCapabilities
permintaan. Saya juga tidak tahu bagaimana rupa filter itu.
Setiap saran tentang bagaimana saya bisa mencapai ini akan sangat dihargai. Setiap pendekatan alternatif juga akan dihargai.
MEMPERBARUI:
Saya yakin saya sudah menemukan solusinya di sini ; "Permintaan GetCapabilities WFS dapat difilter untuk hanya mengembalikan lapisan yang sesuai dengan namespace tertentu. Untuk melakukan ini, tambahkan kode berikut ke permintaan Anda: namespace = <namespace>
". Saya harap ini membantu orang lain.
Jawaban:
Saya perhatikan Anda telah menemukan solusi yang sesuai untuk Anda, tetapi saya pikir saya mungkin menambahkan beberapa opsi tambahan yang mungkin berguna bagi Anda atau orang lain.
Di GeoServer ada kemampuan yang dikenal sebagai Layanan OWS Virtual . Layanan WMS, WFS, dan WCS secara kolektif dikenal sebagai layanan OWS. Saat Anda membuat permintaan ke salah satu layanan ini, Anda membuat permintaan global, sehingga semua lapisan terdaftar dikembalikan dalam dokumen kapabilitas (kecuali jika Anda memiliki pengaturan keamanan data). Sebaliknya, layanan virtual adalah tampilan layanan global yang difilter. Pemfilteran dilakukan di ruang kerja dan diakses melalui url yang sedikit berbeda.
Mari kita ambil contoh. Misalkan Anda memiliki ruang kerja yang disebut myws dan ruang kerja inilah yang ingin Anda daftarkan lapisannya. Jika demikian, Anda dapat membuat permintaan ke url:
Dokumen kemampuan yang dikembalikan hanya akan mencantumkan lapisan yang terdaftar pada ruang kerja myws .
Itu adalah salah satu pendekatan, namun Anda awalnya bertanya tentang mengakses daftar lapisan melalui JavaScript. Untungnya ada cara untuk melakukan ini menggunakan GeoServer REST API. Anda bisa mendapatkan daftar featuretypes untuk ruang kerja yang diberikan dan datastore menggunakan sesuatu seperti:
Ini akan mengembalikan Anda objek JSON daftar semua featuretypes dalam ruang kerja, Anda juga dapat mengganti .json untuk xml atau .html untuk mendapatkan respon dalam format tersebut. Jadi, bagaimana melakukan ini di OpenLayers? Untungnya OpenLayers menyediakan enkapsulasi objek XMLHttpRequest dalam bentuk
OpenLayers.Request
objek. Contoh sederhana menggunakan url REST di atas adalah:Ada dokumen yang bagus untuk meminta data jarak jauh dengan OpenLayers di sini .
Harapan yang memberi Anda beberapa pendekatan lain untuk dipertimbangkan.
sumber
Jawaban ini mungkin membantu seseorang. Saya ingin membuat daftar lapisan saya secara otomatis menggunakan Javascript dan Leaflet. Menggunakan jawaban CHenderson, saya membuat kode berikut:
Dengan cara ini, saya dapat menambahkan kata kunci "group: GEOGRAPHY" pada layer Geoserver dan saya tidak perlu secara manual mengkodekan setiap layer dan grupnya. The Nama digunakan untuk membuat lapisan (mungkin menggunakan L.WMS.source) dan judul adalah label html.
sumber
Coba periksa jawaban ini . itu juga memberikan demo. Jangan lupa bahwa lapisan melayani melalui berbagai layanan seperti yang disebutkan di sana.
Saya harap ini membantu Anda ...
sumber
WFS GetCapabilities
permintaan. Tapi saya hanya ingin mengambil nama layer, tidak ada yang lain. Ini berarti saya harus memasukkan filter dalam permintaan saya. Tapi saya masih belum tahu bagaimana cara menambahkan filter keWFS GetCapabilties
permintaan yang hanya akan mengembalikan nama-nama lapisan. Lihat pembaruan saya di atas. Ada petunjuk?