Showing posts with label ArcMap Editing. Show all posts
Showing posts with label ArcMap Editing. Show all posts

Thursday, 2 January 2020

Mendigit Shared Boundary (ArcGIS vs QGIS)


Kadangkala semasa kita melakukan proses pendigitan polygon, kemungkinan kita nak mendigit feature yang bersebelahan dan berkongsi sempadan antara satu sama lain. Contohnya, lihat gambar di bawah ini. Kita ada satu polygon A, kemudian kita nak digit polygon B yang bersebelahan dengan polygon A.



Disebabkan dua polygon ni duduk bersebelahan, kita perlu pastikan semasa mendigit tiada error overlap atau gap antara sempadan yang dikongsi oleh dua polygon tersebut. Dalam kata lain, kita nak pastikan topology dua polygon bersebelahan ni dikekalkan

Shared boundary

Macamana cara yang betul untuk mendigit polygon begini? OK saya akan tunjukkan kaedahnya menggunakan dua software yang berbeza… ArcGIS dan juga QGIS.

Kaedah ArcGIS
Jika anda gunakan ArcMap dalam ArcGIS Desktop, setelah mulakan proses Start Editing, gunakan tool Auto Complete Polygon dalam window Create Features. Kalau window Create Features ni tak muncul, anda cuma perlu klik butang Create Features dalam Editor Toolbar.


Penerangan gambar :-
  1. Klik butang Create Features pada Editor Toolbar
  2. Klik layer yang anda nak digit
  3. Klik Auto Complete Polygon

Kemudian mulakan proses pendigitan seperti contoh di bawah :-


Penerangan gambar :-
  1. Klik lokasi untuk mulakan pendigitan. Pastikan kedudukan yang anda klik snap pada sempadan sedia ada. Jika anda tak on snapping, pastikan sempadan yang akan didigit bersilang dengan sempadan sedia ada. Kemudian mulakan lakaran dengan klik lokasi A, B, dan C.
  2. Tamatkan pendigitan dengan cara ‘double click’ dilokasi yang ditunjukkan. Pastikan lokasi anda ‘double click’ tu snap pada sempadan sedia ada atau bersilang dengan sempadan sedia ada. Anda akan dapati sempadan dua polygon bersebelahan antara titik (1) dan titik (2) dibina secara auto dan tiada error overlap dan juga error gap pada sempadan tersebut.



Kaedah QGIS
Kaedah yang saya tunjukkan ni menggunakan QGIS version 3.1. Mula-mula pastikan anda aktifkan dulu Snapping Toolbar.


Kemudian, mulakan konfigurasi seperti gambar di bawah :-


Penerangan gambar :-
  1. Klik butang Enable Snapping yang gambar magnet tu.
  2. Klik Advanced Configuration dan pilih Open Snapping Options…
  3. Klik layer yang anda nak digit.
  4. Pilih jenis snapping vertex and segment
  5. Pastikan anda klik Avoid overlap.
  6. Klik butang Enable Topological Editing.

Kemudian, mulakan pendigitan seperti gambar di bawah.


Penerangan gambar :-
  1. Klik layer yang hendak didigit dan klik butang Toggle Editing
  2. Klik butang Add Polygon Feature.
  3. Klik titik permulaan untuk mulakan pendigitan. Kemudian lakar sempadan dengan klik lokasi A, B dan C seperti yang dipaparkan.
  4. Klik dan snap pada garis sempadan sedia ada. Kemudian ‘right click’ untuk menamatkan pendigitan.
  5. Dialog Feature Attributes akan dipaparkan secara automatik. Masukkan attribut dan klik OK.

Anda akan dapati polygon baru dibina dan sempadan bersebelahan bebas dari error overlap dan gap.


So, cara mana yang senang? ArcGIS atau QGIS? Masing-masing ada citarasa sendiri… yang penting objektif tercapai… hehe.

ps : Kursus GIS akan dijalankan bulan Februari ni... nak tahu info lebih lanjut, klik link sini.


Tuesday, 9 January 2018

Multipart dan Singlepart Feature

Pernah tak anda dapat situasi macam ni.. bila anda select satu feature dalam sesuatu layer, anda dapati ArcMap bukan hanya highlight satu feature yang anda select tu saja, tapi lebih dari satu feature. Lepas tu bila anda buka pulak table layer tu, anda dapati hanya satu record saja selected, padahal dalam map nampak lebih dari satu feature ArcMap highlight. Contoh macam gambar saya tunjukkan di bawah ni.


Dalam contoh tu, saya select polygon A, tapi polygon B, C, D, E dan F pun ArcMap highlight selected sekali. Bila saya buka pulak table polygon tu, satu record saja selected. Padahal kalau ikut logik, polygon A, B, C, D, E dan F semuanya 6 polygon. Jadi sepatutnya 6 record selected la kan? Memandai pulak ArcMap ni select 1 record je. Kenapa jadi macam tu? Haaa… tipah tertipu… feature macam ni dipanggil multipart feature. Seolah-olah beberapa feature digroupkan jadi satu, dalam contoh ni seolah-olah 6 polygon digroupkan jadi 1 polygon. Kadangkala multipart feature ni berguna juga, contohnya untuk kurangkan jumlah record dalam table sekiranya data anda tu besar sangat saiz. Boleh jadi juga multipart ni untuk anda gabungkan beberapa feature sekiranya mempunyai atribut yang sama, contohnya Pulau Langkawi yang mempunyai pulau-pulau kecil disekeliling, tapi kesemuanya mempunyai atribut DAERAH = Langkawi.


Tapi kadangkala kan, ada sesetengah kes tak sesuai pulak kalau kita gabungkan beberapa feature menjadi satu feature. Contoh katakan anda nak klik setiap polygon tadi dan nak tahu pulak berapa keluasan polygon tu. Kalau anda rujuk balik gambar polygon A, B, C, D, E dan F yang saya tunjukkan kat atas tadi, anda dapati dalam table tu ada maklumat keluasan disimpan dalam field Shape_Area. Tapi keluasan yang ditunjukkan tu mewakili jumlah luas kesemua polygon, sebab semua dah digroupkan jadi satu polygon. Macamana pulak kalau saya nak tahu polygon A luas berapa, polygon B luas berapa?? Dalam kes macam ni, anda kena ungroupkan semula polygon tu menjadi polygon-polygon berasingan. Bila anda dah ungroup, feature polygon ni dipanggil singlepart feature. Itulah maksud multipart dan singlepart.

OK.. macamana nak convert multipart feature jadi singlepart feature. Ada dua cara, bergantung pada keadaan bersesuaian. 

1) Explode Multipart Feature Tool

Cara pertama, guna tool Explode Multipart Feature. Bila masa sesuai guna tool ni? OK sendiri tanya sendiri jawab..kehkeh. Tool ni sesuai anda guna kalau feature yang anda nak ungroup tu tak banyak atau anda dah kenalpasti yang mana satu feature multipart yang anda nak convertkan ke singlepart. Tool ni anda kena guna dalam editing mode, maknanya kena buat proses Start Editing dulu le. Satu lagi, tool ni letak dalam toolbar Advanced Editing. So kena masukkan dulu toolbar tu.

Bila dah start edit, follow step kat bawah ni.

Penerangan gambar :-
  1. Untuk select feature, klik tool Edit Tool pada Editor Toolbar, kemudian klik kat feature yang anda nak tukar ke singlepart.
  2. Setelah feature tu ArcMap highlight, klik tool Explode Multipart Feature.


Anda akan dapati setiap polygon tadi akan menjadi polygon berasingan (tak semestinya polygon je, boleh juga untuk line dan point). Dalam contoh ni, setelah saya klik tool Explode Multipart Feature, saya dapati dalam table polygon tadi dah jadi 6 record bermaksud 6 polygon berasingan dan setiap record tu pulak menunjukkan maklumat keluasan setiap polygon dalam field Shape_Area.



2) Geoprocessing Tool : Multipart To Singlepart

Kalau anda rasa dalam layer anda tu ada banyak multipart feature dan anda sendiri tak pasti di mana lokasi multipat feature tu, cara yang paling mudah, run je tool Multipart To Singlepart dalam ArcToolbox. Cuma bezanya, cari ni akan hasilkan output layer yang baru yang akan mengandungi semua single part feature. Caranya seperti berikut ni.




Penerangan gambar :-
  1. Dalam ArcToolbox, klik Data Management Tools > Features > Multipart To Singlepart
  2. Kat ruangan Input Features, pilih layer yang anda nak convert ke singlepart.
  3. Namakan output layer.
  4. Klik OK.


Itulah dua kaedah nak tukar multipart ke singlepart feature yang saya nak kongsikan. Amacam, dah faham sekarang? Harap topik ni dapat membantu anda. Untuk anda yang berminat nak beli buku tutorial ArcGIS, dapatkan buku SukaGIS Jilid1 dan Jilid2 sementara stok masih ada.. :) 

Jumpa lagi….

Friday, 1 December 2017

Tips : Memapar Simbol Garis Kontur Mengikut Kategori Sela

Untuk baca topik ni, anda kena familiar dengan konsep attribute query dahulu. Kalau tak familiar, saya cadangkan anda baca dulu post saya berkenaan attribute selection atau attribute query di link sini. Untuk yang dah faham berkenaan attribute selection, boleh baca cerita tak berapa seram seterusnya ni..

Cuba perhatikan gambar layer kontur di bawah. Layer kontur ni dipaparkan menggunakan simbol warna yang sama untuk setiap garis kontur. Anda boleh lihat di dalam table kontur tu mengandungi maklumat ketinggian kontur yang disimpan dalam field CLV.


Cuba perhatikan pula gambar layer kontur di bawah ni. Terdapat perbezaan warna simbol mengikut sela kontur. Kontur sela gandaan 100m (100, 200, 300, 400 dll) dipapar guna simbol warna coklat gelap dan lebih tebal berbanding kontur sela 20m yang dipapar guna simbol warna coklat muda.


Perbezaan simbol garis kontur mengikut sela

OK.. kalau anda nak buat simbol kontur mengikut perbezaan sela macam map kat atas ni, macamana caranya? Kalau anda dah baca e-book percuma topik teknik paparan simbol yang ada saya kongsikan sebelum ni, dalam e-book tu saya dah explain beberapa teknik nak simbolkan layer kita. Contoh ada teknik Categories, Quantities, Chart dan lain-lain. Kalau melihat dari contoh atribut dalam table kontur yang saya tunjuk dalam gambar tu, rasanya teknik apa yang sesuai kalau nak simbolkan kontur mengikut perbezaan sela 100m tu?

Sebenarnya takde teknik yang sesuai, sebab atribut dalam table tu tak cukup syarat lagi. Tapi kalau dalam table tu ada satu field yang mewakili satu atribut menunjukkan sela 100m dan satu lagi atribut menunjukkan sela selain 100m, kita boleh gunakan teknik simbol Categories untuk paparkan atribut kategori sela 100m sebagai satu simbol dan atribute kategori sela selain 100m sebagai satu simbol yang lain. Contohnya, kita boleh bina satu field CLASS dalam table tu, kemudian kita setkan semua kontur yang sela 100 sebagai CLASS = MAJOR dan sela selain 100 sebagai CLASS = MINOR seperti gambar di bawah ni.

Kelas kontur mengikut
kategori sela
OK jadi mula-mula kita kena bina field dulu lah dalam table kontur tu. Cara nak bina field senang je, buka je layer tu punya properties dalam Catalog, kemudian taip je nama field baru di ruangan kosong, seperti gambar di bawah ni.

Step terperinci berkenaan dengan membina field dalam table ni ada saya ceritakan dalam buku SukaGIS Jilid2. OK selesai sudah bina field CLASS, sekarang kita nak masukkan pula nilai MAJOR dan MINOR dalam field CLASS tadi.

Tapikan layer kontur ni selalunya kalau kita buka table dia, ada banyak sangat rekod, sebab terlalu banyak garis kontur. Kecualilah kalau project area anda tu keluasan yang kecik, mungkin tak banyak garis kontur. Tapi kalau ada beribu-ribu rekod dalam table kontur, macamana kita nak setkan atribut MAJOR dan MINOR tu? Takkan nak keyin satu-satu kot? Sampai malam tak habis..hehe. Satu cara yang anda boleh buat ialah gunakan teknik Field Calculator untuk calculate nilai sela kontur 100m sebagai MAJOR dan selebihnya sebagai MINOR. Maknanya kena buat attribute query dulu le dalam table tu.

Tapi kan, macamana ye cara nak buat attribute query untuk nilai kontur 100, 200, 300, 400, 500, 600, 700 dan seterusnya tu? Ada ke cara yang mudah? Kalau guna operator OR (CLV = 100 OR CLV = 200 OR CLV = 300 ….. ) jadi berjela-jela le panjang query saya.
              Macamana nak query sela gandaan 100??                   
Lepas saya google2, ada satu forum discussion yang bagi tips macamana nak buat query untuk kes atribut macam ni. Caranya gunakan function MOD semasa query atribut tu. OK saya kongsikan kat sini syntax query tu. Dalam contoh ni, field dalam table saya yang simpan atribut ketinggian kontur tu  field CLV. Jadi untuk query kontur sela 100m, saya taip je syntax ni kat dialog Select by Attributes..

Mod("CLV", 100)=0




Hasil selection query tadi ditunjukkan macam gambar di bawah ni. Nampak tak semua atribut sela kontur gandaan 100m di highlight.

                                      

Next, kita akan setkan semua rekod yang dah select tadi sebagai CLASS = MAJOR. Caranya gunakan kaedah Field Calculator. Follow step berikut :-



Penerangan gambar :-
  1. Right click field CLASS dan pilih Field Calculator…
  2. Taip “MAJOR” kat ruangan yang ditunjukkan
  3. Klik OK.

Hasilnya dapatlah seperti gambar di bawah ni.

                             

Selesai untuk part kontur sela 100m. Next macamana pulak nak setkan CLASS = MINOR untuk semua kontur selain sela 100m tu? Cara yang paling mudah, terbalikkan result selection tadi menggunakan butang Switch Selection kat table, seperti step di bawah.


Penerangan gambar :-
  1. Klik butang Switch Selection kat table. Anda kena pastikan masih dalam mod selection CLASS=MAJOR.
  2. Rekod sela kontur selain dari 100m akan di select.

Seterusnya, ulang saja step Field Calculator tadi, tapi kali ni setkan CLASS sebagai MINOR.
Bila complete semua rekod dah ada atribut MAJOR dan MINOR kontur, barulah kita boleh gunakan teknik simbol Categories untuk paparkan setiap kategori sela kontur tu pada simbol yang berbeza.


Kalau nak tahu macamana step nak buat simbol Categories ni, downloadlah e-book yang kongsikan tu ye kat link ni.


Sekian…selamat mencuba.

Saturday, 30 September 2017

Asas Operasi Penyuntingan Data

Terdapat beberapa tutorial yang saya post sebelum ni yang ada kaitan dengan penyuntingan data atau data editing dalam ArcMap. Contohnya berkaitan tips pendigitan, pembetulan ralat overshoot dan undershoot, spatial adjustment dan lain-lain. Dalam tutorial tu, saya lebih fokuskan terus kepada kaedah penggunaan tool tertentu untuk betulkan ralat-ralat berkaitan. Bagi anda yang dah biasa atau dah ada basic dalam lakukan kerja-kerja editing dalam ArcMap mungkin tiada masalah. Tapi bagi anda yang baru pertama kali nak belajar kaedah editing dalam ArcMap ni, ada beberapa perkara asas yang anda perlu tahu dulu sebelum follow langkah-langkah yang saya tunjukkan dalam tutorial tu.

Ringkasnya, workflow penyuntingan data seperti gambarajah di bawah ni. Klik untuk besarkan gambar kalau tak jelas.



OK, kita go through satu persatu….

1 - Mulakan Sesi Penyuntingan
Sebelum boleh mulakan proses edit, kena mulakan dulu sesi penyuntingan. Macam nak bawak kereta la kan, kalau tak start enjin, camne nak jalan. Alamatnya drive buat bunyi enjin pakai mulut je la…haha. Nak mulakan sesi edit, senang je. Klik je Editor > Start Editing yang terletak dalam Editor Toolbar.



2 - Pilih Workspace
Jika dalam map anda ada layer yang terletak dalam pelbagai source, contohnya dalam folder berbeza atau geodatabase berbeza, anda kena pilih dulu nak edit dari source yang mana satu. Sekiranya ada data dalam source berbeza, ArcMap automatik akan papar dialog seperti di bawah ni lepas anda klik Start Editing.



Anda mempunyai dua pilihan. Nak klik dari senarai layer (A) boleh, nak klik dari source folder/geodatabase (B) pun boleh.

3 - Pilih Layer Dalam Dialog Create Features
Step ni depend. Ada sesetengah operasi edit yang perlukan anda pilih layer dulu dari dalam dialog Create Features ni. Contohnya nak buat pendigitan, kena pilih dulu layer apa nak digit dari dalam dialog Create Features. Ada juga operasi yang tak payah pilih layer dari dialog Create Features ni, contoh nak buat Spatial Adjustment. Bila anda klik je Start Editing, dialog Create Features ni sepatutnya akan automatik buka di posisi kanan ArcMap, berdekatan Catalog Window.

Kedudukan posisi default dialog Create Features


Tapi kalau dialog ni tak keluar lepas klik Start Editing, klik saja button Create Features di Editor Toolbar.




4 - Tentukan Properties dan Option
Sesetengah proses edit yang anda nak buat perlukan anda set beberapa properties untuk memudahkan proses edit tu. Contohnya jika anda nak buat pendigitan dan nak make sure starting point pendigitan anda tu snap dengan existing feature, lebih mudah kalau anda set dulu option snapping sebelum digit. Kalau nak buat topological edit pulak, anda kena set dulu layer apa yang terlibat dalam topology di Map Topology toolbar atau guna Geodatabase Topology Rules. Kalau nak buat Spatial Adjustment pulak, kena set layer apa yang anda nak adjust. Ringkasnya, apa yang anda nak edit akan menentukan apa properties atau option yang anda perlu set. Berbeza kaedah edit, berbeza properties yang mungkin anda kena set.

Antara properties dan option yang boleh anda set


5 - Bina Atau Edit Feature
OK, lepas tu barulah anda mulakan penyuntingan, nak digit ke, nak adjust ke, nak clean data ke atau nak gunakan mana-mana tool penyuntingan yang terdapat dalam ArcMap tu.



6 - Bina Atau Edit Atribut
Kadangkala mungkin anda nak masukkan atribut pulak lepas buat pendigitan, atau mungkin nak ubah atau nak betulkan atribut sedia ada. Caranya, select dulu feature yang anda nak masuk atau ubah atribut, kemudian klik saja butang Attributes di Editor Toolbar.



7 - Save
Haaa… jangan lupa pulak Save kerja-kerja edit anda tu. Kalau tak nanti penat je dah buat banyak-banyak tak save. Tapi jangan pulak tersilap tekan button Save. Jangan klik menu File > Save atau tekan butang gambar disket sebelah butang print tu. Yang tu untuk save fail MXD anda. Untuk save kerja-kerja edit, anda kena klik dekat Editor > Save Edits di Editor Toolbar.



Dan satu lagi, amalkan kerap klik butang Save Edits setiap kali anda rasa dah banyak buat proses edit. Bukan apa, manalah tau tetiba komputer hang ke, power failure ke, at least kerja dah save..sebabnya ArcMap ni bukannya ada fungsi Autosave macam microsoft word, powerpoint or seumpamanya.
Bila semua kerja-kerja edit dah selesai dan dah save, tamatkan proses edit dengan klik Editor > Stop Editing di Editor Toolbar.



OK, selesai satu proses workflow edit.  Harap membantu untuk anda yang baru nak start belajar edit data ni.

Tuesday, 6 June 2017

Membetulkan Kesalahan Arah Line Menggunakan Flip Line : Kajian Kes Sungai

Haii sume. Topik kali ni agak panjang lebar sikit. Untuk sesiapa yang selalu buat keje-keje editing or data processing, sila take note. Kalau baca topik ni lepas buka posa, pi siap2 bancuh kopi dulu. Panjang ni nak bual. Kalau baca time posa, jangan cari pasal..haha. OK.. tahukah anda, bila kita digitize sesuatu line, line tu akan ada arah atau direction, bergantung pada arah mana kita digitize? Tu antara sebab kenapa data tu dipanggil data vektor, macam masa kat sekolah dulu kita belajar subjek math, cikgu kata vector diwakili segmen garisan yang ada arah. Haaa termenung je.. lupa la tu..haha.


Tapi tu tak penting. Yang saya nak story kat sini, direction line dalam data GIS ni kadangkala memberi maksud sesuatu, contohnya arah aliran sungai, electricity flow dan lain-lain. Dan kadangkala, sesetengah analisis yang gunakan layer line ni sebagai data input perlukan kita set direction line yang betul dulu pada  setiap line dalam layer tu. Dalam Arcmap macamana kita nak tgk direction setiap line ni? Caranya, kita boleh gunakan simbol Arrow untuk draw direction setiap line.

Senarai simbol arrow dalam dialog Symbol Selector ArcMap

OK, sekarang kita dah tahu macamana nak tengok direction line dalam ArcMap. Macamana pulak nak betulkan direction line tu kalau arahnya tersilap? Ada dua cara :-

i)               Buat proses Start Editing, kemudian double-click line yang salah direction, lepas tu right click dan pilih Flip. Tapi cara ni kena buat satu-satu manually.



ii)      Guna geoprocessing tools Flip Line. Cara ni boleh ubah direction banyak line serentak based on line yang kita select.



Katakan sekarang ni saya ada satu data layer sungai, dan saya nak check setiap line sungai tu betul tak directionnya. Nak tahu direction line sungai tu betul ke salah, kita kena faham dulu sifat sungai. Sungai akan mengalir dari hulu ke hilir, anak-anak sungai mengalir dari kawasan tinggi ke kawasan rendah seterusnya memasuki sungai-sungai utama yang lebih lebar. Bila dah faham tu barulah kita boleh tentukan yang mana satu direction sungai betul dan yang mana salah based on arrow symbol yang dipaparkan. Lihat contoh gambar di bawah. Sungai dalam bulatan merah menunjukkan arah sungai yang salah, seolah-olah sungai mengalir ke atas.

Kesalahan arah sungai

Dalam kes data sungai ni, dengan melihat pada symbol arrow di atas garisan, kita boleh mengenalpasti yang mana satu sungai arah betul dan yang mana salah. Untuk membetulkan sungai yang salah arah tu, kita boleh guna arahan Flip semasa buat editing atau guna tool Flip Line seperti yang saya mentioned sebelum ni. Tapi kalau data kita ada banyak line, sanggup ke kita nak semak satu persatu arrow kat line tu? Macam dalam kes saya ni, ada 66,088 line sungai yang saya nak semak.

66,088 sungai perlu disemak. Banyak tu...

Fuhh… kerja giler woo kalau nak check satu-satu sampai berpuluh ribu line. Mau kalau lepas buat keje edit nak tido malam tengok siling nampak sungai je..hahahah. Takde ke cara yang paling mudah??

Ada satu cara. Macam saya terangkan tadi, sungai mengalir dari kawasan tinggi turun ke kawasan rendah. Jadi secara logiknya, kalau kita boleh tahu nilai ketinggian Z di setiap hujung garisan sungai, kita boleh buat perbandingan jika nilai Z ending sungai lebih tinggi dari nilai Z starting sungai, maknanya error la tu, mana boleh sungai mendaki bukit.



Perhatikan line direction sungai dalam gambar atas ni. Sungai A didigit dalam arah yang betul, menurun bukit, jadi ketinggian titik mula digit (Z1) lebih tinggi dari titik akhir digit (Z2). Sungai B pulak digit arah salah, mendaki bukit,  jadi nilai Z dah jadi terbalik, Z1 lebih rendah dari Z2. Jadi kat sini kita boleh anggap, direction untuk sesuatu line sungai adalah salah jika Z1 < Z2. Betul tak? Maknanya kalau data sungai kita tu ada atribut Z1 dan Z2, kita boleh buat carian Z1 < Z2 untuk mencari sungai yang salah arah dan lepas tu run tool Flip Line utk betulkan semua line yang salah serentak. Tak perlu le kita cari satu-satu sungai yang salah tu manually.

Teorinya nampak macam senang kan? Hehehehe. Tapi persoalannya macamana nak dapatkan nilai Z kat setiap hujung line sungai tu? Dalam kes saya ni ada 66,088 line sungai ... maknanya kalau satu line sungai ada dua Z (Z1, Z2),  saya kena dapatkan 66,088 x 2 = 132,176 nilai Z. Huhuhu. Wait seminit…don’t panic. Tau tak, dalam ArcGIS Spatial Analyst kan, ada satu tool yang boleh pindahkan nilai Z dari raster DEM kepada layer point. Nama tool tu Extract Values to Points. Cara nak guna tool ni ada saya explain dalam post yang dulu2 kat link sini.  Maksudnya, kalau saya ada data raster DEM dan kalau saya boleh dapatkan point di starting dan ending setiap line sungai, saya dah boleh dapat dah nilai Z1 dan Z2.

Tapi sebelum saya story lebih lanjut lagi tentang point starting ending ni, kita ulangkaji sikit asas data vektor line. Lihat gambar berikut :-



Setiap satu line terbentuk dari beberapa siri point yang dipanggil vertex. Dikedua-dua hujung line tu pulak point tu dipanggil Node atau Start Point/First Vertex atau End Point/Last Vertex, bergantung pada arah line. Saya lebih suka guna istilah Node, sebab masa saya mula-mula belajar GIS dulu, itulah istilah yang cikgu saya guna. Setiap line dia akan ada From Node dan To Node merujuk pada arah line.

Kenapa saya terangkan mende ni? Sebabnya dalam ArcGIS ada satu tool yang dinamakan Feature Vertices to Points. Tool ni boleh convert data line kita kepada beberapa siri point bergantung pada jenis opsyen point macamana yang kita pilih dalam tool tu, samada nak semua vertex ke, first vertex ke, last vertex ke etc. Maksudnya, bila saya run tool ni, saya bolehlah dapat data point di setiap hujung line sungai, seterusnya nanti bolehlah saya gunakan point tu untuk ambil nilai Z dari data raster DEM.

Berbalik pada problem saya tadi, untuk saya kenalpasti arah line sungai yang salah secara serentak, macam ni lah step yang saya kena buat :-

  1. Run tool Feature Vertices to Points untuk dapatkan point di kedua-dua hujung line sungai
  2. Pindahkan nilai Z dari raster DEM kepada layer point tadi
  3. Joinkan table layer point kepada table layer sungai untuk dapatkan atribut Z dari layer point masuk ke dalam layer sungai.
  4. Buat carian pada layer sungai : Z1 < Z2
  5. Run Flip Line untuk betulkan arah 


Banyak kan step tu. Tapi biasa le, dalam GIS ni kadangkala nak dapatkan hasil akhir, kena melalui beberapa step dan prosedur. Sekarang saya akan terangkan satu persatu step tu.

Jana Layer Point
Mula-mula, kita kena dapatkan layer point dulu di kedua-dua hujung line sungai, merujuk kepada point start dan point end. Kita akan hasilkan dua layer point, satu untuk simpan semua point start dan satu layer lagi untuk simpan semua point end. Faham ye maksud start dan end tu? Kalau x sure, rujuk balik gambar yang ada penerangan start, end vertex sebelum ni. Nak hasilkan layer point ni, buat step seperti di bawah ni :-



Penerangan gambar :
  1. Melalui ArcToolbox, run tool Data Management Tools > Features > Feature Vertices to Points
  2. Untuk Input Features, pilih layer line sungai
  3. Namakan output layer. Dalam contoh ni, saya nak create start point dulu pada setiap line sungai. So saya namakan output saya River_L_Start. (Beri nama yang bersesuaian ni penting supaya nanti anda tak pening kepala bila dah banyak layer anda create)
  4. Oleh sebab saya nak create start point, saya pilih opsyen START.
  5. Klik OK.


Ulangi proses yang sama untuk generate point END pula. Bila dah complete step ni, saya akan ada 2 layer point, River_L_Start dan River_L_End.

Jana Nilai Z Pada Layer Point
Next, saya akan pindahkan nilai Z dari raster DEM masuk ke dalam setiap point yang saya jana tadi. Step ni akan hasilkan satu lagi output layer point, cuma bezanya kali ni layer point yang dihasilkan ni ada atribut nilai Z. Oleh sebab anda ada 2 layer point (start point, end point) yang dihasilkan sebelum tadi, anda kena buat step ni 2 kali, untuk setiap layer point. Stepnya seperti berikut :-



Penerangan gambar :-
  1. Melalui ArcToolbox, run tool Spatial Analyst Tools > Extraction > Extract Values to Points.
  2. Untuk Input point features, pilih layer point yang anda baru hasilkan dari step sebelum tadi.
  3. Pilih layer raster DEM
  4. Namakan output layer point yang akan dihasilkan. Dalam contoh ni, untuk input point River_L_Start, output saya namakan River_L_Start_Z.
  5. Klik OK.


Field tambahan RASTERVALU akan dibina dalam output layer point yang akan menyimpan nilai Z. Ingat ye, kena buat step ni dua kali, satu untuk layer start point, dan satu lagi untuk layer end point.

Join Table
Sekarang saya dah ada dua layer point yang masing2 ada nilai Z yang saya namakan River_L_Start_Z dan River_L_End_Z. Next, saya kena joinkan dulu table kedua-dua layer point ni ke table layer sungai. Sebab apa kena join? Sebabnya kita nak buat carian Z pada layer sungai, bukannya pada layer point. Kalau anda tak berapa faham konsep join table, boleh rujuk post saya sebelum ini di link sini.

Join table start point (Z1) dan end point (Z2) kepada table sungai


Untuk join table start point kepada layer sungai, buat step berikut :-




Penerangan gambar :-
  1. Right click layer sungai dalam TOC ArcMap dan pilih Join and Relates > Join…
  2. Pastikan anda pilih option Join attributes from a table
  3. Pilih field OBJECTID kalau anda guna data geodatabase. Kalau data point anda dalam shapefile, pilih field FID.
  4. Pilih nama layer start point yang ada nilai Z tadi.
  5. Pilih field ORIG_FID
  6. Klik OK.


Ulangi step yang sama untuk join table end point pula. Setelah selesai join kedua-dua table, buka table layer sungai tadi. Anda akan nampak hasilnya seperti di bawah ni. Terdapat dua field RASTERVALU, masing-masing merujuk kepada start point Z dan end point Z.



Carian Line Sungai Salah Arah
Next, buat carian sungai yang salah arah melalui kaedah Select by Attributes.



Oleh kerana field RASTERVALU tu kita join ke dalam table sungai, kita akan nampak “nama layer”.RASTERVALU pada senarai field dalam dialog Select by Attributes. Seperti dalam contoh gambar di atas, carian yang saya lakukan ialah "River_L_Start_Z.RASTERVALU" < River_L_End_Z.RASTERVALU
Hasilnya, terdapat 7,860 line sungai yang salah arah seperti dipapar dalam table di bawah ni.

Terdapat 7,860 dari 66,088 sungai salah arah

Perghhh banyak tu. Bayangkan kalau saya nak cari satu-satu manually. OK, persoalannya sekarang, boleh percaya ke result 7,860 tu? Tepatkah cara kaedah ni? Ketepatan result sebenarnya bergantung pada ketepatan data DEM anda dan juga ketepatan lokasi sungai bila anda overlay atas data DEM. Kalau overlay data lari, dah tentu resultnya pun lari.

Betulkan Arah Sungai
Now kita dah select sungai-sungai yang salah arah. Macamana nak betulkan menjadi arah yang betul? Caranya run tool Flip Line dalam ArcToolbox… tapi buat dulu proses Start Editing tau.



Penerangan gambar :-
  1. Melalui ArcToolbox, run tool Editing Tools > Flip Line
  2. Pilih layer sungai sebagai input features
  3. Klik OK.


Selesai sudah. Proses yang panjang ni sebenarnya anda boleh automate kan kalau anda familiar dengan ModelBuilder. Semua step tu anda boleh design dalam ModelBuilder. Fuuhhh…. 2 hari nak prepare tutorial ni. Harap-harap topik yang dikongsi bermanfaat untuk anda.

Selamat mencuba.