Sistem Informasi Geografis

FILTERING WFS GET FEATURE REQUESTS



Kita dapat menggunakan Filter dalam konteks yang sedikit berbeda di sini. Kali ini, kita akan menggabungkan Filter dengan permintaan GetFeature untuk membatasi jumlah GML yang akan diturunkan kawat kepada kami. Sebagai contoh, mari kita mengatakan bahwa kita ingin melihat hanya Colorado negara poligon. Berikut adalah sintaks Filter:

<OGC: Filter xmlns: OGC =" http://www.opengis.net/ogc" >
<OGC: PropertyIsEqualTo>
<OGC: PropertyName> NAMA </ OGC: PropertyName>
<OGC: Literal> Colorado </ OGC: Literal>

</ OGC: PropertyIsEqualTo>

</ OGC: Filter>

Anda sudah tahu apa permintaan GetFeature terlihat seperti. Jika Anda glob bahwa Filter ke akhir permintaan GetFeature menggunakan filter = param-eter, GML Anda kembali harus terbatas pada Colorado tunggal poli-gon:

http: // localhost: 8888 / geoserver / WFS layanan = WFS & Versi = 1.0.0 &
permintaan = GetFeature & typename = g4wd: st99_d00 &
filter = <OGC: Filter xmlns: OGC =" http://www.opengis.net/ogc" >
<OGC: PropertyIsEqualTo> <OGC: PropertyName> NAMA </ OGC: PropertyName>
<OGC: Literal> Colorado </ OGC: Literal> </ OGC: PropertyIsEqualTo> </ OGC: Filter>

OK, biarkan aku menjadi yang pertama untuk menunjukkan bahwa isian XML menjadi querys-Tring adalah kejahatan terhadap kemanusiaan. Untuk membuat hal lebih buruk, secara teknis filter string yang harus URL dikodekan (% 3Cogc: Filter% 3E), yang ren-ders itu total kekejian. Apakah Anda hanya dengar itu? Itu suara HTTP GET request yang terentang melampaui kemampuannya. praktik terbaik Indus-coba menunjukkan bahwa Anda membatasi panjang permintaan GET untuk 255 karakter atau kurang. Apakah itu berarti bahwa kita beruntung? Masukan ke pengembang topi web Anda sejenak-ada metode HTTP lain yang umumnya digunakan untuk lebih lama, pengajuan lebih kompleks untuk web server?

Melihat kembali dokumen WFS GetCapabilities di bagian Kemampuan, Anda akan melihat bahwa dukungan GetFeature baik HTTP GET dan POST. Saya menggunakan GETS untuk permintaan sederhana, tapi kadang-kadang Posting permintaan Anda ke server WFS adalah satu-satunya cara untuk pergi. Untungnya, GeoServer membuat permintaan sampel POSTING hampir semudah hanya menyisipkan permintaan GET ke baris alamat browser Anda. Untuk melihat apa yang saya bicarakan, pergi ke Selamat datang> Demo, dan klik link Permintaan Sampel. 


  
Kotak permintaan combo memberi Anda banyak sampel yang menarik. Entri yang berakhir dengan .url adalah HTTP GET. Orang-orang yang berakhir dengan xml

adalah HTTP POST. Pilih WMS_getCapabilities.url, dan klik Ubah. Garis URL akan diperbarui sesuai. Klik Submit, dan Anda akan melihat sebuah dokumen yang akrab kembali.

Sekarang pilih WFS_getCapabilities.xml, dan klik Ubah. Anda tidak hanya mendapatkan URL baru, tetapi tubuh diisi juga. Klik Submit sekali lagi untuk melakukan permintaan.

<GetCapabilities
layanan =" WFS"

OK, saya mengakui bahwa ini membuat saya lama untuk keanggunan sederhana dari sebuah HTTP GET. Semua itu skema hal-hal jahat membuat permintaan ini lebih compli-kasikan daripada perlu. Karena kita tidak menggunakan unsur-unsur dari mereka ruang nama, kita dapat mempersingkat sedikit:

<GetCapabilities layanan =" WFS"/>

Ah, itu lebih baik. Tetapi mereka deklarasi namespace sial akan kembali lagi nanti dengan sepenuh hati. Ini hanya penangguhan hukuman sementara.

Sementara kita masih dalam tahap awal bermain-main dengan POST, layak untuk menyebutkan alat baris perintah yang Anda akan ingin mendapatkan akrab dengan: cURL. ikal

datang standar pada Mac dan Linux kotak. Anda dapat pergi ke website7 Curl untuk men-download binari Windows.
XML untuk permintaan WFS akan mendapatkan rumit terburu-buru. Anda harus membiasakan menabung XML ke file teks dan menggunakan cURL untuk menyerahkan POST. Sebagai contoh, menyimpan GetCapabilities XML ke getcapabilities.xml nama file. Ketik berikut ini pada command prompt di direktori yang sama dengan file yang baru saja dibuat. (Abaikan garis breaks- semua ini harus berada di baris yang sama untuk itu untuk bekerja.)



meringkuk POST --request
-  - header " Content-Type: text / xml"
-  - Data @ getcapabilities.xml
http: // localhost: 8888 / geoserver / WFS

Dokumen GetCapabilities harus flash dengan di konsol. Jika Anda ingin menyimpan hasil ke file, tambahkan - somefile.txt -Output ke com-mand.

 OK, mari kita kembali ke tugas di tangan. Kami ingin menyaring getRequest kami. Inilah yang terlihat seperti dalam XML sebuah getRequest polos:
<WFS: GetFeature xmlns: WFS =" http://www.opengis.net/wfs"
layanan =" WFS" Versi =" 1.0.0" outputFormat =" GML2" >
<WFS: Query typename =" g4wd: st99_d00" />

</ WFS: GetFeature>


Tidak buruk. Saya bisa cocok XML ini untuk QueryString dalam pikiran saya. Karena kita akan memulai penyaringan output, saya suka berpikir tentang hal itu dalam hal SQL juga. Query kita hanya dilakukan akan ditulis dalam SQL sebagai pilih * dari st99_d00 ;.

Penyaringan pertama kami akan melakukan GML. Dalam SQL saya akan menulis membatasi jumlah bidang kembali di pilih NAMA, AREA, PERIMETER dari st99_d00 ;.
Menggunakan Filter XML, terlihat seperti ini:

<WFS: GetFeature xmlns: WFS =" http://www.opengis.net/wfs"
layanan =" WFS" Versi =" 1.0.0" outputFormat =" GML2" >
<WFS: Query typename =" g4wd: st99_d00" >
<OGC: PropertyName> NAMA </ OGC: PropertyName>
<OGC: PropertyName> DAERAH </ OGC: PropertyName>
<OGC: PropertyName> PERIMETER </ OGC: PropertyName>
</ WFS: Query>

</ WFS: GetFeature>


Perhatikan bahwa kita harus menambahkan OGC namespace untuk menggunakan unsur-unsur PropertyName. Tempel blok XML ini ke dalam area teks tubuh pada layar Permintaan Demo, dan klik Submit. (Pastikan bahwa bidang URL menunjuk ke layanan WFS.) Atau gunakan cURL. Either way, GML yang dihasilkan harus hanya berisi tiga elemen bernama. Pengupasan bahwa bidang geometri besar (the_geom) mungkin tidak masuk akal dari perspektif pemetaan, tapi jelas membuat hasil query kita lebih mudah dikelola, bukan?



Sekarang kita telah terbatas bidang, mari kita membatasi jumlah record yang dikembalikan juga. Untuk melakukan pilih NAMA, AREA, PERIMETER dari st99_d00 mana NAME = 'Colorado' ;, coba ini:


<WFS: GetFeature xmlns: WFS =" http://www.opengis.net/wfs"
layanan =" WFS" Versi =" 1.0.0" outputFormat =" GML2" >
<WFS: Query typename =" g4wd: st99_d00" >
<OGC: PropertyName> NAMA </ OGC: PropertyName>
<OGC: PropertyName> DAERAH </ OGC: PropertyName>
<OGC: PropertyName> PERIMETER </ OGC: PropertyName>

<OGC: Filter>

<OGC: PropertyIsEqualTo>
<OGC: PropertyName> NAMA </ OGC: PropertyName>
<OGC: Literal> Colorado </ OGC: Literal>

</ OGC: PropertyIsEqualTo>

</ OGC: Filter>
</ WFS: Query>

</ WFS: GetFeature>


Yang GML semakin kecil sepanjang waktu, bukan? Jika Anda melakukan ini dalam Firefox, XML penyaji melakukan pekerjaan yang baik dari indentasi segala sesuatu untuk tujuan tampilan. Tapi jika Anda melakukan View> Source, Anda mungkin akan cukup kecewa. XML dikembalikan sebagai string tunggal tanpa jeda baris. (Bagi Anda menggunakan Curl mungkin sudah melihat ini.) Lain Unix alat standar, Rapi, 8 akan membantu membuat output layak untuk dikonsumsi manusia. Jika Anda menyimpan output untuk sebuah file bernama co.xml, coba berikut ini:



rapi -xml co.xml

Tidak buruk, eh? Kali ini, ketik rapi -xml -i co.xml untuk indent output juga:



$ Rapi -xml -i co.xml
Tidak ada peringatan atau kesalahan yang ditemukan.


<? Xml version =" 1.0" encoding =" utf-8" ?>
<WFS: FeatureCollection xmlns: WFS =" http://www.opengis.net/wfs"
xmlns: g4wd =" http://mapmap.org/g4wd"
XSI: schemaLocation = "http://www.opengis.net/wfs
http: // localhost: 8888 / geoserver / skema / WFS / 1.0.0 / WFS-basic.xsd http://mapmap.org/g4wd
http: // localhost: 8888 / geoserver / WFS / DescribeFeatureType typename = g4wd:? st99_d00" >


<Gml: boundedBy>
<Gml: null> tidak diketahui </ gml: null>
</ Gml: boundedBy>
<Gml: featureMember>
<G4wd: st99_d00 fid =" st99_d00.166" >
<G4wd: AREA> 28,03919812051 </ g4wd: AREA>
<G4wd: PERIMETER> 22,0191923313779 </ g4wd: PERIMETER>
<G4wd: NAMA> Colorado </ g4wd: NAMA>
</ G4wd: st99_d00>
</ Gml: featureMember>
</  WFS: FeatureCollection>

Untuk melengkapi Unix kung fu Anda, Anda selalu bisa pipa hasil Curl langsung ke Tidy:



meringkuk POST --request
-  - header " Content-Type: text / xml"
-  - Data @ gf-criteria.xml
http: // localhost: 8888 / geoserver / WFS | rapi -xml -i

OK, kembali ke filtering. Dalam contoh terakhir kami, kami akan melakukan query spasial. Sering kali Anda hanya ingin hasil kembali dari kotak pembatas yang sewenang-wenang.

(Apa, Anda lupa WMS Anda query sudah) Untuk membatasi hasil kami untuk BBOX tertentu, coba ini:

<WFS: GetFeature xmlns: WFS =" http://www.opengis.net/wfs"
xmlns: OGC =" http://www.opengis.net/ogc" xmlns: gml =" http://www.opengis.net/gml" layanan =" WFS"
Versi =" 1.0.0"
outputFormat =" GML2" >
<WFS: Query typename =" g4wd: st99_d00" >
<OGC: PropertyName> NAMA </ OGC: PropertyName>
<OGC: PropertyName> DAERAH </ OGC: PropertyName>
<OGC: PropertyName> PERIMETER </ OGC: PropertyName>

<OGC: Filter>

<OGC: BBOX>
<OGC: PropertyName> the_geom </ OGC: PropertyName>
<Gml: koordinat> - 109.31,36.72 -101.87,41.03 </ gml: koordinat>
</ Gml: Box>
</ OGC: BBOX>

</ OGC: Filter>

</ WFS: Query>

</ WFS: GetFeature>


Perhatikan namespace ketiga, gml? Kita perlu untuk menentukan kotak sederhana. Hanya jika Anda penasaran, output adalah semua negara sentuhan Colorado. kotak berlari digunakan untuk kriteria adalah sedikit lebih lebar dari minimum bounding rectangle (MBR) dari Colorado.
OK, penyaringan melengkapi tur spelunking kami internal dari WMS dan WFS. Kami sudah tidak berarti menunjukkan setiap contoh yang mungkin dari apa yang dapat Anda lakukan dengan standar yang berbeda, tetapi Anda harus cukup tahu untuk setidaknya merasa nyaman.



Kesimpulan

interface OGC yang besar untuk bekerja dengan; antarmuka tenang mudah digunakan. Mengetahui bahwa semua server OGC memberikan kemampuan dokumen berarti bahwa Anda tidak akan pernah menebak mana lapisan data yang tersedia, apa pilihan styling Anda, atau apa format file dan kode EPSG diperbolehkan. permintaan Sebuah WMS GetMap memungkinkan Anda untuk menentukan setiap detail dari peta selesai. Jika data mentah adalah apa yang Anda cari, WFS DescribeFeatureType dan GetFeature lebih kecepatan Anda. Dan mengetahui bahwa GML berpotensi bisa sangat verbose, memiliki Filter OGC di berarti toolkit Anda bahwa Anda dapat yakin bahwa Anda akan mendapatkan hanya informasi sebanyak yang Anda minta.

Komentar

  1. Nama : Khairunnisa SP
    NIM : 17.01.071.058
    Prodi : Teknik Informatika

    Filter WFS beserta sintaxnya! Kupikir ada bagusnya menambahkan tampilan hasil sintax untuk menarik peminat developmen dalam mencoba nya.

    Meskipun demikian, dalam kesempatan tertentu halaman ini menyajikan seputar penyajian WFS yang baik

    BalasHapus
  2. Nama: Muhammad Aulia ibrahim
    NIM: 17.01.071.072
    Prodi: Teknik Informatika

    Bagus sekali, mantap. materi yang disampaikan tentang Menggunakan OGC Web Services, dan juga dijelaskan fitur2 yang ada pada OGC web service. terimakasih.. semoga bermanfaat untuk masyarakat luas.

    BalasHapus
  3. Nama : MEGA TAZAYYUN
    Nim : 17.01.071.065
    Prodi : TEKNIK INFORMATIKA

    menarik sekali.. good. materi nya tentang OGC, yaitu open layers. dimana open layer berguna sekali untuk mengurangi kesalahan dalam pembuatan peta. dan beberapa keuntungan yang bisa saya ambil dari penggunaan open layers ini adalah Dapat membuat peta dalam baris kode yang jauh lebih sedikit. Juga mendukung banyak penyedia data lain selain OGC, seperti Google Maps, Yahoo Maps, dan lain-lain. Serta sesuai dngan namanya, open layers ini dapat memberikan dukungan yang lebih baik untuk lapisan peta yang diteselasikan.

    BalasHapus
  4. Wahh menarik sekali artikelnya dan bahasanya pun mudah dipahami isi materi nya seperti di blog2 yang ada di google biasanya 👍

    Nama :Khaula syahidah
    Nim :17.01.071.059
    Prodi : informatika

    BalasHapus

Posting Komentar

Postingan populer dari blog ini

Sistem Teknologi dan Informasi

Sistem Teknologi dan Informasi