Sunday 21 October 2012

ArcGIS Definition Query


Sebelum saya teruskan topik ni, anda semua mesti faham dulu konsep query ataupun carian maklumat di dalam pangkalan data. Kalau rasa-rasa tak sure, rujuk dulu topik query yang saya post sebelum ni di link sini. OK, pernah tak anda hadapi situasi macam ni.... anda nak buat map untuk menunjukkan sesuatu kawasan mukim atau daerah sahaja, tapi data yang anda ada tu menunjukkan keseluruhan negeri.  Nak memudahkan faham apa maksud yang saya cuba sampaikan ni, cuba perhatikan gambar di bawah. Gambar (A) menunjukkan keadaan data saya sekarang.. ada layer mukim, daerah dan sungai untuk keseluruhan Negeri Sembilan.. tapi saya nak cuba buat map macam dalam  gambar (B).. menunjukkan layer mukim, daerah dan sungai di dalam daerah Kuala Pilah sahaja.




Sebenarnya data yang dipaparkan pada gambar (B) adalah data yang sama yang dipaparkan pada gambar (A)..tanpa buat apa-apa proses editing atau analisis overlay.  Mungkin ada yang cakap... "owhh nak buat data jadi macam gambar (B) tu senang je, run saja geoprocessing overlay CLIP atau INTERSECT..."  OK... betul juga.. tapi proses geoprocessing tu akan menghasilkan layer yang baru.. maksudnya anda akan dapat layer baru untuk sungai, daerah dan mukim.
Ada satu lagi cara yang lebih mudah.. tak perlu run geoprocessing, tak perlu editing nak delete polygon or line... iaitu menggunakan kaedah Definition Query... ni yang saya nak share untuk topik kali ini.

Konsep Definition Query

Kalau anda familiar dengan carian maklumat menggunakan Attribute Query di dalam ArcMap, kaedah Definition Query ni sebijik sama macam Attribute Query. Kalau Attribute Query tu, anda buka window Select by Attributes tu, pastu buat query menggunakan SQL statement kan?? Macam contoh gambar bawah ni...



So kalau sebijik sama, apa bezanya?? Bezanya dari segi result query yang dipaparkan. Lihat contoh perbezaan result seperti di bawah.

Perbandingan result Attribute Query dan Definition Query


Dalam gambar (A), saya buat carian daerah Kuala Pilah menggunakan kaedah Attribute Query. Hasilnya, daerah Kuala Pilah di highlight warna outline biru (default color selection ArcMap) di atas peta... tapi daerah-daerah lain masih dipaparkan. Dalam gambar (B) pula, saya buat carian yang sama, tapi menggunakan kaedah Definition Query. Hasilnya hanya polygon daerah Kuala Pilah sahaja dipaparkan... daerah-daerah lain tu hilang.. bukan maksudnya dia delete, cuma dia sorokkan sekejap dan ArcMap cuma paparkan polygon yang saya query sahaja. Tulah bezanya.

Jadi kalau anda lihat penerangan saya tadi, nak buat Definition Query ni, syarat pertama sekali, data anda tu mesti ada attribute yang boleh anda querykan. Contohnya dalam ketiga-tiga layer mukim, daerah dan sungai saya tadi, saya ada attribute nama daerah.  Sebab tu saya boleh buat query daerah Kuala Pilah untuk ketiga-tiga layer tadi. Kalau takda attribute yang boleh dibuat query nak buat macamana?? Kalau macam tu..terpaksalah anda buat geoprocessing overlay, guna CLIP ke, INTERSECT ke...

Cara Nak Buat Definition Query

OK, kalau dah faham konsep dia, macamana nak buat query ni. Mudah saja. Caranya seperti gambarajah di bawah. Kalau gambar tu tak clear, klik kat gambar tu untuk besarkan..



Penerangan gambarajah :-
1. Right click layer yang nak buat Definition Query dalam Table of Content ArcMap pastu dan pilih Properties
2. Bila dapat window Layer Properties, klik tab Definition Query
3. Klik butang Query Builder
4. Buat proses query macam kaedah Attribute Query
5. Hasil query akan dipaparkan dalam ruangan Definition Query. Semak dulu syntax dalam ruangan tu betul ke tak sebelum klik OK.

Dalam contoh tadi, saya buat Definition Query untuk layer daerah. Di dalam query builder tu, saya buat query [DISTRICT] = 'Kuala Pilah'.. hasilnya seperti di bawah ni.



Kalau anda lihat result tu, hanya polygon daerah Kuala Pilah dipaparkan. Tapi mukim dan sungai masih dipapar untuk keseluruhan Negeri Sembilan. Jadi saya perlu ulang proses tadi, cuma kali ini proses Definition Query yang perlu saya buat adalah untuk layer mukim dan sungai pula. Bila saya dah buat query untuk ketiga-tiga layer tu, dapatlah result seperti di bawah ni.



Senang je kan.. tak payah dah buat analisis CLIP, cuma syaratnya macam saya bagitau tadi ler, mesti ada attribute yang boleh kita query.

3 comments:

  1. penghantaran data selalunya dlm format .gdb .Jadi biasanya saya akan buat Definition Query>Export Data>Dissolve>Clip.

    ReplyDelete
  2. en azlan, kalau nak buat query lebih dari satu contohnya kapasiti pelajar sekolah <= 2000 = 2000 or 1340 or 400. begini kah?

    ReplyDelete
    Replies
    1. SQL query mesti bermula dengan field, operator dan value. Maksudnya kapasiti <= 2000 or kapasiti = 1340 or kapasiti = 400. Tapi secara logiknya dari statement tu, kapasiti <= 2000 saja dah cukup sebab 1340 dan 400 adalah nilai yg kurang dari 2000.

      Delete