Sunday 24 March 2013

Clip to Shape : Memapar Data Ikut Pelbagai Bentuk


Kadangkala bila anda nak design map anda dalam ArcMap Data Frame, anda nak supaya data anda tu mengikut sesuatu bentuk atau fokus kepada kawasan kajian anda sahaja. Contohnya macam ni.. saya ada dua layer.. (1) Layer mukim Semenanjung (2) Layer gunatanah daerah Kuantan. Tapi bila saya nak buat map, saya nak paparkan hanya gunatanah dalam mukim Kuala Kuantan sahaja... macam gambar di bawah ni..



Untuk anda yang biasa gunakan geoprocessing overlay analysis, mungkin anda rasa satu cara yang boleh dibuat ialah gunakan Intersect atau Clip analysis. Boleh juga... tapi geoprocessing analysis akan menghasilkan output dataset yang baru.. maksudnya nanti saya akan ada dua layer gunatanah.. satu layer gunatanah daerah Kuantan dan satu lagi layer gunatanah mukim Kuala Kuantan. Takde masalah sebenarnya, tapi kadangkala kalau ada banyak sangat temporary layer nanti, space storage anda makin lama makin bertambah sekiranya anda tak delete data-data yang tak diperlukan lagi. Lagipun anda nak create layer tu  hanya sementara sahaja untuk tujuan buat mapping.

Geoprocessing Clip/Intersect akan
menghasilkan output dataset baru


Satu cara yang mudah dan menjimatkan space ialah gunakan teknik Clip to Shape di dalam Data Frame. Kelebihan teknik ni ialah dia boleh paparkan data dalam ArcMap anda tu ikut pelbagai bentuk tanpa perlu menghasilkan dataset yang baru. Walaupun anda nampak data anda tu diubah dalam pelbagai bentuk, tapi sebenarnya dia tak alter actual data anda. Perubahan bentuk tu hanya untuk tujuan paparan sahaja.   Sekali lagi reminder, sekiranya keperluan anda tu nak create dataset yang baru, jangan gunakan teknik ni..gunakan analysis Intersect atau Clip. Rujuk gambar bawah ni untuk perbezaan teknik Clip to Shape berbanding teknik geoprocessing Clip/Intersect.

Perbezaan geoprocessing Clip/Intersect dan Clip to Shape


OK sekarang saya akan tunjukkan macamana nak buat Clip to Shape ni. Sekali lagi, objektif saya sekarang ialah nak create map gunatanah di dalam mukim Kuala Kuantan sahaja. Tapi data mukim saya sekarang ni menunjukkan mukim keseluruhan Semenanjung. Jadi mula-mula saya kena buat Definition Query dulu pada data mukim saya supaya hanya memaparkan polygon sempadan Kuala Kuantan sahaja. Untuk anda yang kurang faham macamana nak buat Definition Query, rujuk pada post saya tentang Definition Query di link sini. Hasil Definition Query saya akan jadi seperti gambar di bawah.

Hasil Definition Query layer mukim = 'Kuala Kuantan'


Seterusnya saya akan gunakan Clip to Shape untuk "potong" data gunatanah Kuantan saya tu supaya mengikut bentuk (shape) sempadan mukim Kuala Kuantan. Caranya seperti gambar di bawah :-



Penerangan gambar :-
  1. Right click dalam map anda dan pilih Data Frame Properties...
  2. Klik tab Data Frame
  3. Pada ruangan Clip Options, pilih Clip to shape
  4. Klik butang Specify Shape...
  5. Pilih option Outline of Features dan pilih layer yang akan menjadi rujukan shape. Dalam contoh saya ni layer Mukim
  6. Klik OK.


Tadaaa... hasilnya seperti di bawah ni.

Gunatanah di 'clip' mengikut 'shape' mukim


Shape yang anda nak papar tu bukan hanya mengikut bentuk sempadan polygon saja, tapi yang bestnya anda boleh juga buat free sketch untuk define shape tu..contohnya anda boleh gunakan Draw tool untuk lukis grafik atas peta tu, kemudian paparkan data anda mengikut bentuk grafik yang anda lukis. Contoh macam di bawah ni, saya lukis simple grafik di atas peta gunatanah saya.



Kemudian saya gunakan teknik Clip to Shape, tapi kali ni saya gunakan option Outline of Selected Graphic(s).. dan hasilnya seperti di bawah.

Gunatanah di 'clip' mengikut 'shape' grafik


So lepas ni kalau nak buat map untuk hasilkan data-data shape temporary tu, gunakan saja Clip to Shape. Selamat mencuba.


Monday 11 March 2013

Extract Nilai Z Raster DEM Kepada Data Point


Dalam post saya sebelum ini, saya ada terangkan bagaimana nak jana koordinat XY dari data point. Bagaimana pula kalau saya ada data point dan saya nak extract nilai ketinggian Z daripada data DEM? Dalam kata lain, bila saya overlay point di atas data DEM tu, saya nak ambil nilai Z dari data DEM tu dan letakkan ke dalam table data point. Contohnya, cuba lihat gambar di bawah :-

Taburan point sampling di atas data DEM


Data point tu menunjukkan taburan sampling saya dan pada setiap point tu saya ada maklumat ID sampling. Pada masa yang sama, saya ada data raster DEM yang saya overlay bersama data point tu. Di dalam setiap cell raster DEM tu, saya boleh mengetahui nilai ketinggian Z dengan mengklik lokasi yang saya kehendaki menggunakan tool Identify. Nilai ketinggian Z akan ditunjukkan melalui maklumat Pixel value. 

Pixel value menunjukkan ketinggian Z dari data DEM


OK.. sekarang ni macamana saya nak ambil nilai dari Pixel value dari result Identify tu masuk ke dalam setiap data point saya. Kalau nak edit satu persatu point dan masukkan nilai Z, boleh juga.. tapi kalau data point tu sikit bolehlah buat cara tu. Cuba bayangkan kalau ada beratus-ratus point. Pergghh terseliuh gak jari nak key in satu-satu...huhu.

Ada satu cara mudah. Gunakan teknik geoprocessing dalam toolbox. Tool yang akan anda gunakan ialah Extract Values to Points. Tool ni terdapat dalam toolbox Spatial Analyst. Maknanya kalau nak buat analisis ni, kena ada extension Spatial Analyst dulu ler. OK.. macamana nak guna tool ni? Rujuk gambar bawah :-



Penerangan gambar :
  1. Buka ArcToolbox dan klik Spatial Analyst Tools > Extraction > Extract Values to Points
  2. Masukkan input data point anda. Dalam kes saya ni, data point sampling.
  3. Pilih raster yang mewakili data DEM.
  4. Taipkan nama output point layer.
  5. Klik butang OK.


Perhatikan hasilnya pada gambar di bawah (mcm biasa, klik kat gambar kalau tak clear) :

Nilai Z dihasilkan di dalam table point sampling


Cuba anda perhatikan output table tu. Ada field baru di tambah pada table tu (RASTERVALU). Field tu menunjukkan nilai ketinggian Z pada setiap point sampling. Nilai Z ni diambil dari data raster DEM tadi. Mudah je kan? Teknik ni bukan hanya limit kepada extract nilai ketinggian Z sahaja, tapi apa saja nilai yang ada pada data raster anda. Contohnya, kalau raster anda mewakili raster slope, nilai yang ada pada data point tu nanti adalah nilai slope lah. 

Selamat mencuba.