4/28/2020

SIG - Menggunakan Layanan Web OGC


USING OCG WEB SERVICES


A. WFS GetFeature

Untuk mendapatkan data aktual, lakukan permintaan GetFeature. (Ingat itu di WMS itu adalah permintaan GetMap.)

http://localhost:8888/geoserver/wfs?service=WFS&
version=1.0.0&
request=GetFeature&
typeName=g4wd:st99_d00

Ini mengembalikan seluruh FeatureType sebagai Tanda Geografis yang terbentuk dengan baik dokumen Language (GML). Berita baiknya adalah GML adalah stan-dard. Kabar buruknya adalah sangat bertele-tele. Untungnya kamu bisa tambahkan outputFormat=GML2-GZIP ke akhir permintaan GetFeature Anda agar server gzip output dengan cepat. (outputFormat=GML2 adalah tipe output default.)

<wfs:FeatureCollection xmlns:wfs="http://www.opengis.net/wfs"
xmlns:g4wd="http://mapmap.org/g4wd"
xmlns:gml="http://www.opengis.net/gml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.opengis.net/wfs
http://localhost:8888/geoserver/schemas/wfs/1.0.0/WFS-basic.xsd
http://mapmap.org/g4wd
http://localhost:8888/geoserver/wfs/DescribeFeatureType?typeName=g4wd:st99_d00">
<gml:boundedBy>
<gml:Box srsName="http://www.opengis.net/gml/srs/epsg.xml#4326">
<gml:coordinates xmlns:gml="http://www.opengis.net/gml"
decimal="." cs="," ts=" ">
-179.14734,17.884813 179.77847,71.35256064
</gml:coordinates>
</gml:Box>
</gml:boundedBy>
<gml:featureMember>
<g4wd:st99_d00 fid="st99_d00.1">
<g4wd:the_geom>
<gml:MultiPolygon
srsName="http://www.opengis.net/gml/srs/epsg.xml#4326">
<gml:polygonMember>
<gml:Polygon>
<gml:outerBoundaryIs>
<gml:LinearRing>
<gml:coordinates xmlns:gml="http://www.opengis.net/gml"
decimal="." cs="," ts=" ">
-147.78711088,70.24536349 -147.765104,70.219806 ...
</gml:coordinates>
</gml:LinearRing>
</gml:outerBoundaryIs>
</gml:Polygon>
</gml:polygonMember>
</gml:MultiPolygon>
</g4wd:the_geom>
<g4wd:AREA>271.254383622068</g4wd:AREA>
<g4wd:PERIMETER>227.171421517178</g4wd:PERIMETER>
<g4wd:ST99_D00_>2</g4wd:ST99_D00_>
<g4wd:ST99_D00_I>1</g4wd:ST99_D00_I>
<g4wd:STATE>02</g4wd:STATE>
<g4wd:NAME>Alaska</g4wd:NAME>
<g4wd:LSAD>01</g4wd:LSAD>
<g4wd:REGION>4</g4wd:REGION>
<g4wd:DIVISION>9</g4wd:DIVISION>
<g4wd:LSAD_TRANS></g4wd:LSAD_TRANS>
</g4wd:st99_d00>
</gml:featureMember>
<gml:featureMember>...</gml:featureMember>
<gml:featureMember>...</gml:featureMember>
...
</wfs:FeatureCollection>


Bunyinya seperti Shakespeare, ini adalah versi singkatnya, tidak kurang, karena apa yang saya tunjukkan di sini hanya salah satu dari 273 catatan. Dan juga memotong longsoran pasangan lat / long digml: elemen koordinat . Old Will tidak akan terlalu senang jika dia pernah melakukannya menemukan tentang kebebasan yang saya ambil dengan GML-nya. Mendorong sejumlah besar data melintasi kabel, bahkan jika itu ada di lokal LAN, dapat menghadirkan tantangan logistik. Format file biner mengambil sebagian kecil dari jejak GML, tetapi mereka tidak menawarkan transparansi teks biasa. Ini diakui sebagai trade-off — ukuran dan kecepatan untuk kesederhanaan. Mari kita lihat cara-cara yang dapat kita potong output GML ini menjadi lebih gigitan-potongan berukuran.


B. Filtering WFS GetFeature Request

Menggunakan kriteria untuk mewarnai negara bagian secara berbeda berdasarkan nilai bidang populasi. Kami tidak memikirkannya diwaktu, tetapi Filter ini adalah spesifikasi OGC yang terdefinisi dengan baik juga. PropertyIsBetween, PropertyIsLessThan, and PropertyIsGreaterThan adalah semua contoh Filter OGC. Melihat kembali pada WFS GetCapabilities dokumen, bagian Filter_Capabilities memberi Anda gambaran yang bagus sintaks Filter.

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 dikirim ke kami. Sebagai contoh, katakanlah kita inginkan untuk melihat hanya poligon negara bagian Colorado. Berikut ini sintaksis Filternya:

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

Anda sudah tahu seperti apa tampilan GetFeature. Jika Anda globFilter itu di akhir permintaan GetFeature menggunakan filter=parameter, GML yang Anda dapatkan kembali harus dibatasi pada satu poli-gon:

http://localhost:8888/geoserver/wfs?service=WFS&
version=1.0.0&
request=GetFeature&
typeName=g4wd:st99_d00&
filter=<ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">
<ogc:PropertyIsEqualTo><ogc:PropertyName>NAME</ogc:PropertyName>
<ogc:Literal>Colorado</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter>

Pertama menunjukkan bahwa memasukkan XML ke dalam QueryString adalah kejahatan terhadap kemanusiaan. Untuk memperburuk keadaan, secara teknis string filter harus URL disandikan (%3Cogc:Filter%3E), yang mengubah benar-benar menjijikkan. Itu suara permintaan HTTP GET yang melampaui kemampuannya. Industri praktik terbaik menyarankan agar Anda membatasi panjang permintaan GET Anda hingga 255 karakter atau kurang. Apakah itu berarti kita kurang beruntung? Kenakan topi pengembang web Anda sejenak — apakah ada HTTP lain metode yang umumnya digunakan untuk pengiriman yang lebih lama, lebih kompleks ke server web? Melihat kembali dokumen WFS GetCapabilities di Capabilities bagian, Anda akan melihat bahwa GetFeature mendukung HTTP GET dan POS. Saya menggunakan GET untuk permintaan sederhana, tetapi terkadang POSTING Anda permintaan ke server WFS adalah satu-satunya cara untuk pergi. Syukurlah, GeoServermembuat permintaan sampel POST hampir semudah menempelkan GET permintaan ke baris alamat browser Anda.

Kotak kombo permintaan memberi Anda banyak sampel menarik. Itu entri yang diakhiri dengan .url adalah HTTP GET. Yang diakhiri dengan .xml adalah HTTP POST. Pilih WMS_getCapabilities.url, dan klik Ubah. Baris URL akan diperbarui sesuai. Klik Kirim, dan Anda akan melihat dokumen yang sudah dikenal kembali. Sekarang pilih WFS_getCapabilities.xml, dan klik Ubah. Kamu tidak hanyadapatkan URL baru, tetapi isi tubuhnya juga. Klik Kirim sekali lagiuntuk melakukan permintaan.



ini membuat saya merindukan keanggunan sederhana HTTP GET. Semua hal skema jahat membuat permintaan ini lebih sesuai lebih baik dari yang seharusnya. Karena kita tidak menggunakan elemen apa pun dari ituruang nama, kita dapat mempersingkatnya sedikit:

<GetCapabilities service="WFS"/>

Tapi deklarasi namespacesial itu akan datang nanti dengan balas dendam. Ini hanya penangguhan hukuman sementara. Sementara kita masih dalam tahap awal bermain-main dengan POST, itu layak menyebutkan alat baris perintah yang Anda ingin kenal dengan: cURL. cURL hadir standar pada kotak Mac dan Linux. Anda bisa pergi ke situs web cURL untuk mengunduh binari Windows. Permintaan XML untuk WFS akan menjadi rumit dengan tergesa-gesa. Kamu harus terbiasa menyimpan XML ke file teks dan menggunakan cURL untuk mengirimkan POST. Misalnya, simpan GetCapabilities XML ke nama file getcapabilities.xml . Ketik yang berikut di prompt perintah di direktori yang sama dengan file yang baru saja Anda buat. (Abaikan saja jeda baris—semua ini harus berada pada jalur yang sama agar bisa berfungsi.)

curl --request POST
--header "Content-Type: text/xml"
--data @getcapabilities.xml
http://localhost:8888/geoserver/wfs

Dokumen GetCapabilities seharusnya muncul di konsol. Jika kamu ingin menyimpan hasil ke file, tambahkan --output somefile.txt ke command. Oke, mari kita kembali ke tugas yang ada. Kami ingin memfilter GetRequest kami. Beginilah tampilan GetRequest dalam XML:

<wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs"
service="WFS"
version="1.0.0"
outputFormat="GML2">
<wfs:Query typeName="g4wd:st99_d00" />
</wfs:GetFeature>

Saya dapat mencocokkan XML ini dengan QueryString di pikiran saya. Sejak kita akan mulai memfilter output, saya suka berpikir tentang hal ini SQL juga. Permintaan yang baru saja kita lakukan akan ditulis dalam SQL sebagai select*from st99_d00;. Pemfilteran pertama yang akan kami lakukan adalah membatasi jumlah bidang yang dikembalikan GML. Dalam SQL saya akan menulis select NAME, AREA, PERIMETER dari st99_d00;.

Menggunakan Filter XML, tampilannya seperti ini:

<wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs"
xmlns:ogc="http://www.opengis.net/ogc"
service="WFS"
version="1.0.0"
outputFormat="GML2">
<wfs:Query typeName="g4wd:st99_d00">
<ogc:PropertyName>NAME</ogc:PropertyName>
<ogc:PropertyName>AREA</ogc:PropertyName>
<ogc:PropertyName>PERIMETER</ogc:PropertyName>
</wfs:Query>
</wfs:GetFeature>

Perhatikan bahwa kami harus menambahkan namespace OGC untuk menggunakan Elemen PropertyName. Tempel blok XML ini ke area teks tubuh pada layar Permintaan Demo, dan klik Kirim. (Pastikan bahwa Bidang URL mengarah ke layanan WFS.) Atau gunakan cURL. Bagaimanapun juga, GML yang dihasilkan hanya boleh mengandung ketiga elemen yang disebutkan. Melucuti bidang geometri masif (the_geom) mungkin tidak berhasil banyak yang masuk akal dari perspektif pemetaan, tapi itu pasti membuat kueri kami hasilnya lebih mudah dikelola. Sekarang kita telah membatasi bidang, mari kita batasi jumlah catatan kembali juga. Untuk melakukan select NAMA, AREA, PERIMETER dari st99_d00 di manaNAME = 'Colorado';, coba ini:

<wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs"
xmlns:ogc="http://www.opengis.net/ogc"
service="WFS"
version="1.0.0"
outputFormat="GML2">
<wfs:Query typeName="g4wd:st99_d00">
<ogc:PropertyName>NAME</ogc:PropertyName>
<ogc:PropertyName>AREA</ogc:PropertyName>
<ogc:PropertyName>PERIMETER</ogc:PropertyName>
<ogc:Filter>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>NAME</ogc:PropertyName>
<ogc:Literal>Colorado</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Filter>
</wfs:Query>
</wfs:GetFeature>

GML itu semakin kecil setiap saat, jika Anda melakukan ini di Firefox, renderer XML melakukan pekerjaan yang bagus untuk membuat indentasi segalanya untuk keperluan tampilan. Tetapi jika Anda melakukan View> Source, Anda mungkin akan cukup kecewa. XML dikembalikan sebagai string tunggal tanpajeda baris. (Kalian yang menggunakan cURL mungkin sudah memperhatikan ini.) Alat standar Unix lain, Tidy, 8 akan membantu membuat keluaran sesuai konsumsi manusia. Jika Anda menyimpan output Anda ke file bernama co.xml ,coba yang berikut ini:

tidy -xml co.xml

Tidak buruk, kan? Kali ini, ketik rapi -xml -i co.xml untuk membuat indent sebagai baik:

$ tidy -xml -i co.xml
No warnings or errors were found.
<?xml version="1.0" encoding="utf-8"?>
<wfs:FeatureCollection xmlns:wfs="http://www.opengis.net/wfs"
xmlns:g4wd="http://mapmap.org/g4wd"
xmlns:gml="http://www.opengis.net/gml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.opengis.net/wfs
http://localhost:8888/geoserver/schemas/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>unknown</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:NAME>Colorado</g4wd:NAME>
</g4wd:st99_d00>
</gml:featureMember>
</wfs:FeatureCollection>

Untuk menyelesaikan kung fu Unix Anda, Anda selalu bisa menyalurkan hasil cURL langsung ke Tidy:

curl --request POST
--header "Content-Type: text/xml"
--data @gf-criteria.xml
http://localhost:8888/geoserver/wfs
| tidy -xml -i

Oke, kembali ke pemfilteran. Dalam contoh terakhir kami, kami akan melakukan kueri spasial. Seringkali Anda hanya ingin hasil kembali dari kotak terikat sewenang-wenang. (Apa, Anda sudah lupa dengan pertanyaan WMS Anda?) Untuk membatasi hasil kamike 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"
service="WFS"
version="1.0.0"
outputFormat="GML2">
<wfs:Query typeName="g4wd:st99_d00">
<ogc:PropertyName>NAME</ogc:PropertyName>
<ogc:PropertyName>AREA</ogc:PropertyName>
<ogc:PropertyName>PERIMETER</ogc:PropertyName>
<ogc:Filter>
<ogc:BBOX>
<ogc:PropertyName>the_geom</ogc:PropertyName>
<gml:Box srsName="http://www.opengis.net/gml/srs/epsg.xml">
<gml:coordinates>-109.31,36.72 -101.87,41.03</gml:coordinates>
</gml:Box>
</ogc:BBOX>
</ogc:Filter>
</wfs:Query>
</wfs:GetFeature>

Perhatikan namespace ketiga, gml? Kami membutuhkannya untuk mendefinisikan kotak sederhana.Kalau-kalau Anda ingin tahu, output adalah semua negara yang menyentuh Colorado Kotak pembatas yang digunakan untuk kriteria sedikit lebih lebar daripersegi panjang pembatas minimum (MBR) dari Colorado.OK, pemfilteran melengkapi tur spelunking kami di internal WMSdan WFS. Kami sama sekali tidak menunjukkan setiap contoh yang mungkin dariapa yang dapat Anda lakukan dengan standar yang berbeda ini, tetapi Anda harus tahu cukup untuk setidaknya merasa nyaman.


C. Conclusion

Antarmuka OGC bagus untuk digunakan; antarmuka yang tenang itu mudahmenggunakan. Mengetahui bahwa semua server OGC menyediakan dokumen kemampuanberarti Anda tidak perlu menebak lapisan data mana yang tersedia,apa pilihan gaya Anda, atau format file apa dan kode EPSGdiijinkan. Permintaan WMS GetMap memungkinkan Anda menentukan yang terakhirdetail dari peta yang sudah selesai. Jika data mentah adalah yang Anda cari,WFS DescribeFeatureType dan GetFeature adalah kecepatan Anda. Danmengetahui bahwa GML berpotensi menjadi sangat bertele-tele, memiliki Filter OGCdalam toolkit Anda berarti Anda dapat yakin bahwa Anda hanya akan mendapatkan sebanyak ituinformasi yang Anda minta.

Sekarang mari kita naik kembali ke tumpukan. Bab selanjutnya membahas tigaaplikasi level yang semuanya grok dengan standar OGC. Mapbuilder adalah seorangKerangka kerja web OGC Ajax. OpenLayers adalah kerangka kerja Ajax laindengan twist: itu tidak hanya berbicara dengan lancar, tetapi juga berbicara milikdialek pemetaan etary seperti Google Maps API juga. uDig adalah Aplikasi desktop GUI yang memiliki dukungan OGC yang luar biasa.



Nama: Muhammad Hudzaifah Asy Syidiq
NIM: 17.01.071.073
Prodi: Teknik Informatika

www.uts.ac.id

3 komentar:

  1. bagus sekali materinya..
    menggunakan layanan WFS getfeature, filtering, dan WFS GetFeature Request, WFS DescribeFeatureType. semoga berguna dan dapat diaplikasikan dalam penerapan nya ketika menggunakan layanan web OGC

    by: Miftahul Haq
    nim: 17.01.071.067

    BalasHapus
  2. Assalamualaikum warahmatullahi wabarakatuh
    Saya Bima (17.01.071.019)

    Isi materi sudah baik dan mudah dipahami, tapi alangkah lebih baik agar ditingkatkan lagi dari segi penulisan dan bahasa yang digunakan

    BalasHapus
  3. Sig - Menggunakan Layanan Web Ogc ~ Cyber X Virtual >>>>> Download Now

    >>>>> Download Full

    Sig - Menggunakan Layanan Web Ogc ~ Cyber X Virtual >>>>> Download LINK

    >>>>> Download Now

    Sig - Menggunakan Layanan Web Ogc ~ Cyber X Virtual >>>>> Download Full

    >>>>> Download LINK

    BalasHapus