Friday 14 September 2012

Attribute Query vs Spatial Query


Kali ni saya nak tunjukkan salah satu fungsi asas di dalam GIS iaitu Query atau fungsi Carian. Kalau anda belajar definasi asas GIS, tentu anda tahu kan fungsi-fungsi asas GIS adalah :-



Proses Query sebenarnya adalah proses yang anda akan lakukan apabila anda ingin mencari sesuatu maklumat di dalam mana-mana sistem pangkalan data, tidak semestinya di dalam aplikasi GIS. Contohnya katalah saya menggunakan RDBMS SQL Server, saya boleh menaip arahan SELECT seperti di bawah untuk menyenaraikan atribut yang terdapat di dalam table LOT.

Contoh query menggunakan SELECT statement di dalam MS SQL Server



So, nampaknya kalau macam contoh kat atas ni, mungkin ada yang tertanya, kalau nak buat query, tak payah guna GIS pun boleh buat. Tapi apa kelebihan kalau proses query ni di buat dalam GIS? Haaa.. kalau macam contoh di atas tu, memanglah kita boleh buat query dan dapatkan hasil, tapi dia tak dapat tunjukkan di mana lokasi terdapatnya maklumat tersebut. Itulah salah satu kelebihan dalam GIS, selain kita boleh buat query untuk listkan maklumat, GIS juga boleh menunjukkan dimanakah lokasi hasil query tersebut. Dengan itu, ia boleh membantu kita di dalam membuat keputusan, melihat pola taburan dan hubung kaitan dengan maklumat-maklumat lain di atas peta.

OK stop cerita intro pasal query. Sekarang saya akan fokuskan pada dua jenis query dalam GIS iaitu :-
- Attribute Query (yang ni tak pakai GIS pun boleh buat)
- Spatial Query (haaa yang ni special... software GIS je boleh buat)

Cuba lihat dulu sample data di bawah ni :-




Data tu menunjukkan taburan sungai dan point-point kampung di dalam Lembangan Sungai Langat. Secara ringkas, atribut yang terdapat di dalam kedua-dua layer tu adalah :-
i) Sungai : nama-nama sungai
ii) Kampung : nama-nama kampung

Daripada maklumat yang diberikan tu, bermakna saya boleh mencari dimanakah nama sungai tertentu yang saya kehendaki untuk layer sungai. Untuk layer kampung pula, saya boleh cari nama-nama kampung yang saya nak. OK katakan saya nak buat query senario berikut :-

"Tunjukkan pada saya nama-nama kampung yang di dalam lingkungan 1km dari Sungai Langat"

Hmmm, macamana nak buat tu? Sungai Langat mungkin saya boleh query sebab dalam layer sungai ada atribut nama-nama sungai. Nama kampung pula saya boleh cari kalau saya tahu apa nama kampung yang saya nak. Tapi dalam kes ni, saya tak tahu pun jarak setiap kampung dari sungai kerana dalam layer kampung saya, hanya ada atribut nama-nama kampung je, tak ada pun maklumat jarak.




Haa, kat sinilah powernya analisis Spatial Query dalam GIS. OK sekarang saya akan tunjukkan step macamana nak buat query dari senario tadi. Di sini saya nak bagi tip, untuk memudahkan kerja,  kita kena fahamkan betul-betul dulu objektif senario tadi. Cari dulu keyword dalam senario analisis tu. Macam dalam contoh tadi : "Tunjukkan pada saya nama-nama kampung yang di dalam lingkungan 1km dari Sungai Langat". Keywordnya adalah :-
i) Nama-nama kampung
ii) Jarak lingkungan 1KM
iii) Jarak tu hanya dari Sungai Langat

Mula-mula kita kena cari dulu kat mana Sungai Langat dari dalam layer sungai tu. Cara mudah nak buat ni, gunakan saja Attribute Query sebab dalam layer sungai dah memang ada senarai nama-nama sungai.

Attribute Query
Untuk step nak buat Attribute Query, rujuk pada gambar di bawah ni.



Penerangan gambar di atas :
1) Klik pada menu Selection > Select by Attributes dalam ArcMap.
2) Pilih layer sungai
3) Klik field mana dalam layer sungai tu yang menyimpan maklumat nama-nama sungai
4) Double-clik butang Get Unique Value untuk mendapatkan senarai nama-nama sungai
5) Apabila nama sungai dah dipaparkan, double-click nama Sungai Langat.
6) Klik OK.

Hasil query yang ditunjukkan pada data saya adalah seperti di bawah. Garisan warna biru cerah tu menunjukkan Sungai Langat.

Hasil query : Sg Langat



Selesai satu problem. Sekarang macamana pula nak cari kampung dalam lingkungan 1KM dari Sungai Langat tadi. Yang ni kita tak boleh guna Attribue Query sebab maklumat jarak 1KM tu takda dalam table kampung. Penyelesaiannya gunakan kaedah Spatial Query.

Spatial Query
Untuk step nak buat Spatial Query, rujuk pada gambar di bawah ni.



Penerangan gambar di atas :
1) Klik pada menu Selection > Select by Location dalam ArcMap.
2) Pilih layer Kampung dalam ruangan Target Layer.
3) Pilih layer Sungai dalam ruangan Source Layer.
4) Pastikan anda klik check-box Use selected features. Dengan cara ni analisis akan fokus pada selected sungai sahaja (dalam kes ni, Sungai Langat)
5) Pilih Target layer(s) features are within the Source layer feature. Ini merujuk pada analisis jarak lingkungan. Ada banyak lagi senarai kalau anda klik dropdown box kat ruangan Spatial selection method tu.
6) Taipkan jarak dan unit. (1 kilometer)
7) Klik butang OK.

Tadaaa... hasilnya seperti di bawah. Nampak tak dot-dot biru cerah sepanjang Sungai Langat tu? Itulah kampung-kampung yang terlibat.

Hasil query: Taburan kampung 1KM dari Sg Langat


Kalau saya nak lihat senarai nama-nama kampung yang terlibat, saya buka saja table untuk layer kampung tu dan lihat pada ruangan Selected.

Hasil query : Senarai kampung 1KM dari Sg Langat


OK. Harap anda faham sekarang bila kes-kes yang sesuai nak gunakan Attribute Query dan bila masa sesuai nak guna Spatial Query. Selamat mencuba.