Tuesday 12 November 2013

Menjana Data Centerline

Pernah tak anda berhadapan situasi di mana anda ada data line kiri kanan tapi anda nak generate centerline dari line kiri kanan tu? Contohnya anda dapat data yang menunjukkan tebing sungai (river casing) dan anda nak generate sungai centerline dari data tebing sungai tu. Ataupun mungkin anda ada data bahu jalan (road casing) dan anda nak generate centerline jalan dari data road casing tu. Cuba lihat contoh data river casing dan road casing seperti di bawah.



Sekiranya anda nak digit centerline tu secara manual, anda boleh gunakan sketch tool Midpoint dalam ArcMap Editor toolbar. Satu cara mudah yang boleh anda lakukan secara automated adalah dengan menggunakan geoprocessing tool Collapse Dual Lines to Centerline di dalam ArcToolbox. Cara ni tak memerlukan anda digit secara manual, jadi kaedah ni lebih cepat dan mudah. OK untuk tutorial kali ni saya akan tunjukkan macamana nak generate road centerline dari data road casing saya seperti gambar di bawah :-



Mudah saja caranya, lakukan step seperti di bawah ni :-



Penerangan gambar :-
  1. Buka ArcToolbox dan klik Cartography Tools > Generalization > Collapse Dual Lines to Centerline
  2. Masukkan input features, dalam contoh ni layer road casing saya.
  3. Namakan output layer yang akan menyimpan data centerline tu.
  4. Setkan Maximum Width iaitu lebar maksimum jalan yang anda benarkan untuk generate centerline tu.
  5. Klik OK.


Cuba lihat hasilnya seperti gambar di bawah. Road centerline terhasil dari data road casing tadi. 

Road centerline terhasil dari data road casing


Tapi tool ni ada juga kelemahannya sebab kalau shape road casing kita terlalu complicated, kemungkinan centerline yang dihasilkan tak berapa tepat, contohnya kalau road casing yang ada roundabout atau curve line di persimpangan yang terlalu rapat. Contohnya cuba lihat centerline yang dihasilkan dari data road casing saya seperti di bawah ni..




Perhatikan line merah zig zag zig zag tu. Anda perlu betulkan problem line tu melalui proses manual editing.




Tapi still kira ok ler compare kalau anda nak buat manual digitizing keseluruhan centerline. Jadi kesimpulannya tool ni bergantung pada how complicated data line anda. Kalau shape casing tu simple, tool ni boleh generate fully automated centerline,.. tapi kalau shape yang agak complicated macam contoh data atas ni, tool ni jadi semi automated ler, maksudnya anda kena combine dengan proses manual editing juga.


Saturday 9 November 2013

Membetulkan Kesalahan Undershoot Secara Automatik

Untuk anda yang selalu buat kerja-kerja editing data, kadangkala pening gak kan bila tengok data-data yang ada macam-macam error. Contohnya error overlap, duplicate, overshoot, undershoot dan lain-lain. Setiap jenis error ni ada kaedah berbeza bagaimana nak betulkan error tu.  Untuk topik kali ni, saya akan tunjukkan contoh bagaimana nak betulkan kesalahan undershoot.

Untuk anda yang tak familiar istilah undershoot, maksud error ni ialah line yang tak snap pada segmen line di hadapannya. Contoh macam gambar di bawah..

Error Undershoot


Kalau anda lihat dalam gambar tu, line yang di dalam circle merah menunjukkan kesalahan undershoot sebab tak snap, kemungkinan disebabkan kesalahan semasa mendigit. Dalam senario sebenar, kemungkinan gap ni terlalu kecil sehingga sukar untuk anda lihat dengan mata kasar, tapi untuk contoh tutorial ni, saja saya gapkan besar sikit supaya senang anda nak nampak. Kalau error macam ni setakat 2, 3 je dalam data anda, mungkin takde masalah nak betulkan satu persatu. Tapi bayangkan kalau error macam ni ada berpuluh-puluh, beratus.. jenuh tu nak klik satu-satu suruh snap (..ermm tau tak nak snap manual satu-satu?? kalau tak tau nantilah saya post dalam topik lain).

OK kali ni saya tunjukkan kaedah auto macamana nak betulkan error macam ni. Mula-mula kita kena dapatkan dulu purata anggaran jarak untuk undershoot tu. Caranya kita boleh gunakan tool Measure untuk ukur jarak gap antara line yang tak snap tu. Caranya seperti di bawah :-

Ukur dulu gap undershoot untuk mendapatkan tolerance
snapping yang sesuai


Penerangan gambar :-
  1. Klik button Measure
  2. Klik pada End Vertex line yang undershoot
  3. Double klik pada segment line dihadapannya
  4. Perhatikan jarak gap dan unit jarak.


Dalam contoh di atas, jarak yang dipaparkan lebih kurang 1.9 meter. Maksudnya sekiranya saya setkan tolerance snapping lebih dari 1.9 meter, line tu akan snap kepada segment line dihadapannya. OK sekarang macamana kita nak snapkan line tu secara automatik? Gunakan tool Extend Line di dalam ArcToolbox. Sebelum kita run tool Extend Line ni, cadangan saya kita run tool ni dalam Editing mode. Maksudnya kena buat proses Start Editing dulu ler. Tujuannya sekiranya kita tersilap extend, kita ada option untuk Undo balik edit. Kalau kita run tool Extend Line ni diluar dari Editing mode, bahaya juga, takut tersilap masuk tolerance snapping, habis data kita snap pada line yang tak sepatutnya.

OK... sekarang, assuming kita dalam Editing mode, buat step seperti di bawah :-

Tool Entend Line


Penerangan gambar :-
  1. Buka ArcToolbox dan klik pada Editing Tools > Extend Line.
  2. Pilih layer yang anda nak betulkan kesalahan undershoot. Kalau ada selected line dalam layer tu, tool ni akan fokus betulkan error pada line yang anda select sahaja.
  3. Masukkan jarak tolerance snapping. Dalam contoh sebelum ni, jarak gap line yang saya ukur ialah 1.9 meter. So saya masukkan anggaran jarak 2.5 disini, bermaksud mana-mana line undershoot yang jarak kurang dari 2.5 meter, dia akan auto snap.
  4. Pastikan unit ukuran adalah sama dengan unit jarak yang anda ukur menggunakan tool Measure sebelum ni.
  5. Klik OK.

Hasilnya seperti di bawah. Lihat semula line di dalam circle merah tu. Semuanya dah snap ke line segment di depannya secara automatik.

Error undershoot yang dah clean


Selamat mencuba.