OK..kali ni kita sentuh sedikit
tentang konsep Relational Database dan penggunaannya di dalam ArcGIS. Anda yang
dah biasa gunakan data-data spatial seperti shapefile atau geodatabase
featureclass tentu tahu kan, setiap featureclass akan ada table masing-masing
yang dipanggil Feature Attribute Table (FAT). Setiap feature ni mempunyai ID
unik di dalam FAT tersebut yang dipanggil Feature Identifier (FID). FID ni bertujuan untuk menghubungkan setiap
feature point, line, polygon pada rekod di dalam table. Sebab tu dalam GIS,
bila anda query table, feature akan dihighlight di atas peta, dan kalau anda
select feature di atas peta pulak, rekod di dalam FAT tu pun akan dihighlight.
Semua tu berlaku sebab adanya FID ni.
Maklumat dalam table FAT tu anda
boleh juga link ke table-table yang lain. Cuba bayangkan di jabatan anda dah
ada sistem pangkalan data yang menyimpan maklumat terperinci sesuatu lot tanah,
contohnya nama pemilik tanah, maklumat cukai, kategori tanah, hakmilik dan
lain-lain. Sekiranya anda dah ada layer lot, semua maklumat ni boleh dilink ke
table FAT layer lot anda supaya analisis lebih terperinci boleh dibuat kat
layer lot anda tu.
Di dalam ArcGIS, maklumat dari
satu table boleh dilink ke table yang lain kerana data model di dalam ArcGIS adalah
berasaskan kepada konsep Relational Database. Dalam kata lain, maklumat dari
satu table boleh dikaitkan(relate) dengan table yang lain asalkan dalam
kedua-dua table yang nak di link tu ada column yang menyimpan maklumat attribut
yang sama. Contohnya katalah layer lot anda ada maklumat nombor lot yang unik,
table pemilik lot pun ada nombor lot yang unik, so bolehlah anda linkkan layer
lot tu ke table pemilik lot menggunakan column nombor lot.
Di dalam ArcMap ada dua kaedah
untuk anda linkkan table ni iaitu kaedah Join dan kaedah Relate. Bezanya, Join
akan merge table yang anda link menjadi satu table.
|
Join akan merge dua table menjadi satu table |
Relate pula tak akan merge table
anda, sebaliknya table anda still maintain table yang berasingan, tetapi ArcGIS
tahu ada connection antara table yang anda link tu dan bagaimana nak panggil related
record tu.
|
Relate akan maintain table berasingan tetapi match record akan dilinkkan. |
Jenis Relationship
Jadi...macamana nak tahu bila
masa nak pakai Join dan bila masa nak pakai Relate? Jawapannya anda kena tahu
dulu jenis relationship antara table yang anda nak linkkan. Untuk nak faham
jenis relationship ni, anda kena faham dulu maksud berikut :-
- Origin table
- Destination table
- Primary Key
- Foreign Key
Sekarang perhatikan gambar A,B,C dan D di bawah :-
|
Jenis relationship |
Di dalam konsep Relational Database, terdapat 4 jenis relationship
yang asas iaitu :-
- one-to-one (1-1)
- one-to-many (1-*)
- many-to-one (*-1)
- many-to-many (*-*)
Alamak, banyaknya jenis
relationship. Macamana kita nak tahu jenis relationship antara table yang kita
nak link tu yang mana satu dari 4 kategori tu. Jawapannya anda kena tahu dulu
table mana yang anda anggap sebagai Origin dan table mana yang anda anggap
sebagai Destination. Kita ambil semula
contoh gambar di atas. Katakan anda nak link table pemilik ke table layer lot.
Dalam kes ni lot akan menjadi Origin dan table pemilik akan jadi Destination. Field/column
dari table lot yang akan anda gunakan untuk link dipanggil Primary Key manakala
field/column dari table pemilik yang akan dilink dipanggil Foreign Key.
Cara bacaan jenis relationship
pula adalah dari Origin Table ke Destination Table. Maksudnya relationship
rajah A ialah one-to-one, rajah B one-to-many, rajah C many-to-one dan rajah D
many-to-many.
Kenapa perlu faham dulu jenis
relationship ni? Sebabnya jenis relationship ni akan menentukan kaedah mana
yang sesuai anda gunakan untuk link table dalam ArcMap, samada kaedah Join atau
kaedah Relate. Join digunakan sekiranya relationship anda many-to-one atau
one-to-one. Relate pula sekiranya data anda one-to-many atau many-to-many.
Kaedah Join
Sekarang kita lihat kembali contoh di bawah.
|
Contoh many-to-one |
Saya ada layer landuse tapi dalam table landuse saya hanya menyimpan
maklumat landusecode. Kalau saya nak design peta landuse untuk cetakan, takkan
kat Map Legend tu saya nak letak kod betul tak. Nanti orang baca peta saya pun
tak faham, apa maksud kod 1, kod 2, kod 12 etc. Kebetulan saya ada satu table
berasingan yang menyimpan penerangan untuk setiap landusecode tersebut. Jadi
saya boleh linkkan kedua-dua table ni untuk mendapatkan penerangan jenis
gunatanah, seterusnya saya boleh gunakan maklumat jenis gunatanah tu sebagai
Map Legend di atas peta saya.
Kalau lihat dari Origin dan Destination tu, apa jenis relationship
dia? Many-to-one kan? So kalau many-to-one kita guna kaedah apa? Jawapannya
Join. Untuk Join, rujuk step gambar di bawah :-
Penerangan gambar :-
- Right click kat layer Origin dan pilih Join and Relates > Join...
- Pastikan anda pilih Join attributes from a table
- Pilih field Primary Key dari Origin Table. Dalam contoh ni field dari
layer Landuse.
- Pilih nama Destination Table yang anda nak linkkan.
- Pilih field Foreign Key dari Destination Table.
- Klik OK.
Lepas anda join kedua-dua table tu, bolehlah anda gunakan maklumat
penerangan kod landuse tu untuk buat analisis dan mapping.
Kaedah Relate
Untuk contoh berikutnya, saya ada layer stesen kualiti sungai yang
mengandungi ID unik stesen. Seterusnya di jabatan saya ada satu table yang
menyimpan maklumat cerapan kualiti sungai setiap bulan mengikut stesen. Katakan
saya ingin melihat berapakah bacaan kualiti sungai di setiap stesen pada bulan
Januari, Februari sehinggalah Disember pada tahun-tahun tertentu. Ini adalah
satu contoh one-to-many kerana satu stesen ada banyak bacaan kualiti sungai
(Jan, Feb, Mac.... Dis). Disebabkan jenis relationship adalah one-to-many, saya
akan gunakan kaedah Relate untuk link maklumat kedua-dua table ni.
Rujuk gambar di bawah untuk steps kaedah Relate :-
Penerangan gambar :-
- Right click kat layer Origin dan pilih Join and Relates >
Relate...
- Pilih field Primary Key dari Origin Table. Dalam contoh ni field dari
layer Station.
- Pilih nama Destination Table yang anda nak linkkan.
- Pilih field Foreign Key dari Destination Table.
- Namakan Relate anda.
- Klik OK.
Bila kedua-dua table tu dah relate, macamana anda nak lihat
result dari relate tu? Ada dua cara.. kalau anda guna kaedah Identify, maklumat
related record tu akan dipapar di Identify Window. Rujuk gambar di bawah :-
Penerangan gambar :-
- Klik tool Identify
- Klik station yang anda nak paparkan maklumat di peta.
- Maklumat dari Origin Table akan dipaparkan. Klik pada
Primary Key.
- Nama Destination Table dipapar. Klik pada nama Destination
Table.
- Senarai record yang match akan dipaparkan. Klik pada setiap
rekod.
- Detail maklumat setiap rekod dari Destination Table akan
dipaparkan.
Tu kalau anda nak lihat maklumat Destination Table guna
kaedah Identify. Kalau anda guna kaedah Query, record dari Destination Table yang
match akan dipapar kalau anda klik button Related Table dari Origin Table.
Contoh seperti gambar di bawah:-
Ok..sekarang dah faham bila nak guna Join atau Relate?
Senang je kan. Secara ringkasnya :-
one-to-one : Join
many-to-one : Join
one-to-many : Relate
many-to-many : Relate