Tuesday, 9 May 2017

Pelbagai Kaedah Selection

Cuba anda perhatikan kat menu ArcMap Selection > Interactive Selection Method. Ada empat pilihat kaedah selection :-

  1. Create New Selection
  2. Add to Current Celection
  3. Remove From Current Selection
  4. Select From Current Selection




Klik pulak kat menu ArcMap Selection > Select by Attributes. Dalam dialog Select by Attributes pun ada empat pilihat kaedah selection yang sama.



Tau tak apa maksud 4 pilihan selection tu? Bila masa-masa yang sesuai nak guna keempat-empat kaedah tu? OK… saya story sikit apa maksud keempat-empat kaedah selection ni. Mula-mula yang anda perlu tahu, kalau anda setkan 4 kaedah ni melalui Interactive Selection Method, setting ni hanya effect kalau anda buat selection cara interactive. Tau tak cara interactive tu macamana? Style selection interactive ni maksudnya anda klik tool Select Features kemudian anda klik-klik atau drag box di atas map untuk buat selection.



Kalau anda setkan 4 kaedah selection ni melalui Select by Attributes pulak, setting ni hanya effect untuk hasil selection yang anda buat melalui dialog Select by Attributes.
OK, sekarang kita tengok contoh-contoh untuk 4 kaedah selection ni.

Create New Selection

Ni adalah default setting untuk selection method dalam ArcMap. Bila anda set kepada kaedah ni, setiap selection pada data yang anda buat dalam Arcmap dikira sebagai selection yang baru. Maksudnya, setiap kali anda buat selection, selection sedia ada akan dihapuskan dan selection baru akan dihasilkan. Perhatikan gambar di bawah. Polygon outline biru adalah hasil selection secara interactive yang saya buat secara interactive melalui kaedah drag box mengikut lakaran kotak garisan merah.



Setiap kali selection yang saya buat melalui kaedah drag box ni, selection lama akan dihapuskan dan selection polygon baru akan dihasilkan.

Add to Current Selection

OK, sekarang katakan selection polygon saya seperti dipaparkan di bawah ni (polygon outline biru).



Kemudian baru saya perasan, alamak… polygon A, B, C tu tertinggal pulak dari selection, patutnya saya nak include sekali. So macamana cara yang senang nak buat? Kalau guna kaedah Create New Selection, kalau saya klik polygon A, B, C tu, nanti selection sedia ada akan hilang, sebab Create New Selection akan sentiasa menghasilkan result selection yang baru. Dalam kes saya ni, saya taknak hilangkan selection sedia ada tu, saya cuma nak tambah 3 lagi polygon masuk ke dalam hasil selection.
Jadi, cara yang senang, kita setkan kaedah selection kepada Add to Current Selection. Oleh sebab saya nak select polygon A, B, C tu dengan cara klik di atas map, jadi saya kena setkan dalam menu Interactive Selection Method,.. seperti di bawah ni.



Kemudian bolehlah saya klik ketiga-tiga polygon A, B, C tu, resultnya jadilah seperti di bawah.



Remove From Current Selection

OK, dalam contoh data saya ni, disebabkan data ni dalam format geodatabase, setiap polygon ada info keluasan yang disimpan dalam field Shape_Area. Next, katakan dari hasil selection sebelum tadi, saya taknak ambil kira polygon yang berkeluasan kurang dari 2000 meter square. Semua polygon yang berkeluasan kurang dari 2000 meter square mesti dibuang dari result selection sedia ada. Cara mudah, setkan kepada kaedah Remove From Current Selection. Cara senang nak cari polygon keluasan kurang dari 2000 meter square ialah gunakan kaedah Select by Attributes kan?? Sebab info keluasan tu dah ada dalam attribute table melalui field Shape_Area. So, setting Remove From Current Selection ni kena buat dalam dialog Select by Attributes le, jangan buat kat Interactive Selection Method pulak.



Seterusnya, selepas saya buat query Shape_Area < 2000, dapatlah result selection seperti di bawah. Kalau anda nak belajar macamana nak buat query guna dialog Select By Attributes ni, boleh rujuk post saya tahun 2012  sebelum ni di link sini.

Polygon berkeluasan kurang dari 2000 m square dibuang
dari result selection sedia ada (bulatan merah)


Select From Current Selection

Data yang saya gunakan dalam contoh ni adalah data gunatanah, so warna-warna polygon yang anda nampak tu ada info status gunatanah, Kediaman, Pertanian, Industri etc. Next, katakan dari senarai selection tadi, saya hanya berminat nak tahu info polygon yang berstatus atribut Kediaman sahaja. Sebelum tu, terlupa plak nak cerita.. macamana anda nak tahu ada berapa jumlah rekod hasil dari selection yang anda buat? Atau dalam kata lain, ada berapa jumlah polygon yang anda dah select tu? Cara senang, buka je atribut table, kat bawah table tu ada dinyatakan berapa jumlah selected. Macam dalam gambar di bawah ni, dinyatakan ada 68 rekod/polygon result selection daripada jumlah keseluruhan 1424 rekod/polygon.



Berbalik pada cerita tadi, kalau saya nak tahu ada berapa banyak polygon status Kediaman dari selection sedia ada, cara mudah saya setkan dulu method Select From Current Selection dari dialog Select by Attributes.



Kemudian saya buat query LUTYPE = ‘Kediaman’ (sebab dalam data saya ni, atribut ‘Kediaman’ disimpan dalam field LUTYPE). Dapatlah result seperti di bawah. Bila saya buka table, ada 17 record selected berbanding 68 record sebelum ini.



OK dah faham dah maksud keempat-empat kaedah selection tu? Jadi, gunakan ikut situasi yang sesuai kerana ia mungkin boleh menjimatkan masa anda.


Selamat mencuba.

p/s : dapatkan segera buku SukaGIS sementara stok masih ada. Untuk info lanjut, klik link ini.

Sunday, 30 April 2017

Menyelesaikan Masalah "Broken Data Link"

Pernah tak anda dapat masalah macam gambar kat bawah ni? Bila buka je fail MXD ArcMap, data tak keluar.. yang keluar tanda-tanda seruan merah kat Table of Content ArcMap tu. Istilah yang digunakan untuk problem macam ni ialah “broken data link”.



Bila dapat problem “broken data link” ni jangan panik… jangan pulak jadi “broken heart”..hihi. Selalunya problem ni jadi sebab lokasi folder (path) data telah berubah, samada anda dah rename nama folder kepada nama yang lain, atau kedudukan data dah pindah ke drive lain, contoh asal data dalam drive C:\ tapi dah pindah ke drive D:\. Problem ni boleh juga berlaku bila anda rename nama layer tu sendiri kepada nama layer yang baru. Contoh, nama asal River.shp, kemudian anda rename kepada nama Sungai.shp. Dan kebiasaannya problem ni jadi bila anda pindahkan data dan fail MXD anda dari satu komputer ke komputer yang lain. Bila jadi macam tu selalunya macamana anda solve problem tu? Di sini saya kongsikan beberapa kaedah macamana nak selesaikan.

Sebagai persediaan, perkara mula-mula kena buat.., anda kena tau dulu layer tu sekarang duduk kat folder atau drive atau dalam geodatabase mana. Anda kena tau jugak nama sebenar layer tu sebab dalam Table of Content ArcMap, kadangkala nama tu anda dah rename kepada nama yang ringkas dan sesuai. Contoh macam gambar kat atas tadi, ada nama layer River. Anda kena tahu dulu nama sebenar yang disimpan dalam folder untuk layer River tadi, kalau format shapefile, mungkin river.shp, mungkin jugak sungai.shp. Kalau format geodatabase, mungkin nama lain pulak.

Contoh perbandingan nama layer dalam Table Of Contents ArcMap
dan nama layer asal dalam geodatabase.

In case kalau anda nak tau nama asal dan kedudukan asal layer yang bermasalah tu, anda boleh buat step di bawah ni  :-




Penerangan gambar :-
  1. Dalam TOC ArcMap, buka Properties untuk layer yang anda nak semak.
  2. Klik tab Source kat dialog Layer Properties.
  3. Kalau data anda dalam geodatabase, semak kat ruangan Feature Class: untuk nama layer. Kalau data shapefile, semak kat ruangan Shapefile: untuk nama shapefile.


OK.. bila dah semak dan confirm, bolehlah anda buat beberapa cara seperti berikut ni.

1)  Set Data Source dalam ArcMap

Cara pertama yang anda boleh buat ialah dalam ArcMap, set kembali layer yang tak keluar tu kepada lokasi baru. Caranya seperti berikut :-




Penerangan gambar :-
  1. Right click kat data bermasalah dan pilih Data > Repair Data Source…
  2. Dalam ruangan Look in :, masuk dalam kedudukan folder atau geodatabase yang baru. Dalam contoh saya ni, data saya dalam feature dataset HH_Inland_Water di dalam geodatabase, jadi saya masuk ke dalam feature dataset tersebut. Kalau data anda shapefile, anda hanya perlu masuk ke dalam folder yang sebenar.
  3. Pilih layer yang sepatutnya dalam kedudukan folder atau geodatabase yang baru tadi.
  4. Klik butang Add.


OK selesai sudah. Kalau kesemua data yang bermasalah tu terletak dalam kedudukan folder atau geodatabase yang sama, ArcMap akan automatik repair kesemua data tadi, jadi tak perlulah anda repair data source satu-persatu. Tapi kalau data anda berterabur dalam folder-folder atau geodatabase berlainan, anda kena ulang proses tadi satu-persatu layer.

2)  Set Data Source dalam ArcCatalog atau Catalog Window.

Satu lagi cara yang anda boleh guna ialah betulkan lokasi data source tu dalam ArcCatalog atau Catalog Window dalam ArcMap. Satu kelebihan guna cara ni ialah kalau dalam fail MXD anda tu ada group of data dalam lokasi-lokasi folder atau geodatabase berbeza-beza, anda boleh guna kaedah Select dan Replace dalam dialog yang dipaparkan. Select lokasi lama, dan Replace kepada lokasi baru. Caranya seperti berikut :-





Penerangan gambar :-
  1. Dalam ArcCatalog atau Catalog Window, right click fail MXD yang nak dibetulkan dan pilih Set Data Source(s)…
  2. Cara ni akan create fail MXD yang baru. Namakan fail MXD baru anda.
  3. Select layer yang nak dibetulkan dalam senarai.
  4. Klik butang Replace... Kalau anda nak ubah kesemua layer sekaligus, klik butang Replace All...
  5. Di ruangan Replace with:, taipkan nama kedudukan folder atau kedudukan geodatabase yang baru.
  6. Klik butang Replace.
  7. Klik OK.


Bila dah selesai, buka fail MXD yang baru tu, sepatutnya semua layer boleh dipaparkan.

Tips Untuk Mengelakkan Kejadian Yang Sama Berulang.

OK.. untuk mengelakkan problem broken data link ni berlaku, amalkan perkara berikut bila menyediakan data dalam fail MXD.
Amalkan penyediaan folder data di kedudukan folder yang sama di mana fail MXD disimpan. Contoh, jika anda save fail MXD dalam folder \Projek,  sebaiknya data-data anda pun disimpan dalam folder \Projek tersebut.

MXD data folder data terkumpul di
dalam folder yang sama (Projek)


Cara ni juga memudahkan anda nak pindah data dan mxd ke komputer yang lain sebab semuanya dah terkumpul dalam satu folder.

Amalkan menggunakan setting Relative Pathnames sebelum save fail MXD. Dengan menggunakan setting Relative Pathnames, layer anda tak bermasalah untuk dipaparkan walaupun lokasi data berpindah ke drive yang berbeza atau ke folder yang berbeza. Cara nak set Relative Pathnames seperti di bawah ni :-



Penerangan gambar :-
  1. Pada menu ArcMap, klik File > Map Document Properties…
  2. Pada ruangan Pathnames :, pastikan anda klik checkbox Store relative pathnames to data sources
  3. Klik OK.


Tapi kalau anda dah pening kepala sangat nak pindahkan data dan fail MXD ke komputer lain sebab data anda berterabur dalam folder-folder berbeza, cara senang anda guna je lah style Map Package. Cara ni ada saya explain dalam post saya tahun 2012 di link sini.

Selamat mencuba.


p/s : Dapatkan buku SukaGIS Jilid 1 yang telah berada di pasaran. Info boleh klik di link sini.

Saturday, 22 April 2017

Terima Kasih Menyokong Buku SukaGIS

Terima kasih saya ucapkan untuk anda yang telah membeli buku SukaGIS Jilid 1. Dari feedback yang saya terima, ramai yang suka dengan buku ni, terutama yang dah lama mencari buku GIS dalam versi BM. Setakat ni sudah 400 lebih naskah terjual. Untuk student-student yang nak buat projek guna ArcGIS pun sesuai guna buku ni. Banyak tutorial berguna yang boleh dijadikan panduan untuk buat tugasan.

Untuk yang masih berminat nak buat tempahan, bolehlah hubungi saya di 019 351 3770. Harga RM50 Semenanjung dan RM52 Sabah/Sarawak (harga dah termasuk postage).


Taburan pembeli buku SukaGIS Semenanjung


Taburan pembeli buku SukaGIS Sabah Sarawak


Buku GIS di UTM Skudai

Buku SukaGIS di Dewan Bandaraya
Kota Kinabalu

25 naskah buku SukaGIS di Jab Alam Sekitar

5 naskah buku SukaGIS di SPR

Buku SukaGIS di UMP

Buku SukaGIS di EOC UKM

Buku SukaGIS di IRDA Johor

Buku SukaGIS di Jab Perhutanan Semenanjung Malaysia

Di lab UTM

Bersama Pengarah MaCGDI Pn Norizam. 16 naskah
di MaCGDI.

5 naskah buku SukaGIS di Jabatan Pertanian

46 naskah buku SukaGIS di JUPEM Sabah


Buku SukaGIS di Jab Mineral dan Geosains Kelantan

5 naskah buku SukaGIS di seksyen fotogrametri Jupem HQ


4 naskah buku SukaGIS di JPS Ampang

Buku SukaGIS sesat di kota London... :)



Monday, 17 April 2017

Membina Atribut dari Teks Annotation Fail AutoCAD


Topik kali ni agak menarik. Sepanjang lebih kurang 20 tahun pengalaman saya involve dalam GIS data processing, ni antara isu yang kerap dihadapi oleh user-user GIS. Berkenaan dengan isu conversion data AutoCAD kepada data GIS. Kebiasaannya, banyak company seperti company land surveyor atau consultant yang menyediakan plan dalam format AutoCAD untuk serahan kepada klien. Kadangkala timbul isu dimana klien tu dah ada sistem GIS dan dia nak integrate pulak plan AutoCAD tu kepada sistem GIS. Sebelum nak buat proses convertion data AutoCAD, anda kena faham betul-betul dulu struktur data AutoCAD dan macamana nak relatekan struktur data tu dengan struktur data GIS. Cuba perhatikan struktur fail AutoCAD seperti di bawah ni.
Struktur fail AutoCAD
Dalam 1 fail AutoCad, akan terdapat pecahan entiti Annotation, Multipatch, Point, Polygon dan Polyline. Setiap entiti tu pulak ada pecahan lagi kepada Drawing Layers. Contohnya entiti Polyline mungkin akan mengandungi Drawing Layer lot, jalanraya, kontur dan lain-lain. Maksudnya ada banyak layer wujud dalam 1 fail CAD yang sama. Walaupun kita nampak layernya asing-asing dalam Drawing Layers AutoCAD tu, tapi semua layer tu wujud dalam 1 fail CAD yang sama. Ini berbeza plak dengan konsep layer GIS sebab dalam GIS, kalau layer tu Polyline, kita selalunya akan maintain 1 featureclass sahaja, contoh lot dalam 1 layer polyline, jalanraya plak dalam 1 layer polyline yang lain dan macam tu lah seterusnya.

Apa yang saya cuba nak story kat sini, bila anda nak convert data AutoCAD ke layer GIS, anda kena study dulu nama-nama Drawing Layers dalam fail AutoCAD tu untuk tentukan layer mana yang anda nak ambil untuk convert.
Kenalpasti nama Drawing Layer sebelum buat convertion
Ok itu just selingan sikit intro struktur data CAD. Sekarang kita cite skit tentang bab convertion. Memang kebanyakan software GIS ada tools untuk convert data CAD kepada GIS, seperti tool yang anda boleh dapati dalam ArctoolBox ArcGIS Desktop. Contoh macam tool CAD to Geodatabase, atau anda boleh export layer CAD dalam Table of Contents ArcMap menjadi layer GIS. Step convert guna kaedah export ni ada saya terangkan dalam post sebelum ni, anda boleh rujuk link topik Convert CAD data ke GIS. Tapi tool-tool ni akan convert one-to-one, point CAD jadi point GIS, polyline CAD jadi polyline GIS, polygon CAD jadi polygon GIS, teks annotation CAD jadi annotation Geodatabase atau point GIS.
On-to-One convertion

Tapi kadangkala convertion tu bukanlah straight forward, contoh…, anda nak convert lot dalam fail AutoCAD jadi layer lot dalam GIS, tapi senario data anda seperti berikut :-
Fail CAD : layer lot dalam polyline, nombor lot dalam annotation
Layer GIS : layer lot dalam polygon, nombor lot nak letak dalam table polygon.


Nombor lot dan sempadan lot dalam entiti berlainan di dalam
fail AutoCAD (annotation / polyline)

Anda nak bina lot polygon dari polyline CAD, tapi nombor  lot
datang dari Annotation CAD, so camana caranya???

Kebiasannya memang teks atribut dalam fail AutoCAD ni diletakkan sebagai teks annotation. Kalau anda convert direct polyline Drawing Layer lot dari fail CAD tu kepada layer polygon GIS, bila anda klik info setiap lot nanti, tak akan ada info nombor lot, seperti yang dipaparkan dalam gambar di bawah ni.




 
Sebab apa jadi macam tu?? Sebabnya dalam CAD, nombor lot tu duduk dalam annotation, lot pulak anda convert dari polyline. Kalau anda nak buat analisis carian lot dalam GIS, memang tak boleh lah sebab nombor lot tak wujud dalam polygon.
So macamana cara yang sepatutnya nak convert kalau ada kes data macam ni? Kat sini saya kongsi sikit teknik macamana nak buat.  Kaedahnya macam ni :-
  1. Convert CAD annotation kepada geodatabase annotation
  2. Convert geodatabase annotation kepada layer point
  3. Convert polyline lot dari AutoCad kepada layer lot polygon dan import atribut point layer ke dalam polygon

Convert CAD Annotation kepada Geodatabase Annotation

Mula-mula convert dulu teks annotation dari fail AutoCAD menjadi geodatabase annotation. Follow step berikut :-

 

Penerangan gambar :-

  1. Dalam ArctoolBox, klik tool Conversion Tools > To Geodatabase > Import CAD Annotation
  2. Masukkan annotation dari fail AutoCAD ke ruangan Input Features
  3. Namakan output geodatabase annotation feature class.
  4. Masukkan nilai Reference Scale. Nilai skala ini akan digunakan untuk menentukan saiz teks annotation semasa zoom in dan zoom out ArcMap. Oleh kerana tujuan saya convert annotation ni hanya untuk jadikan sebagai layer point, saya masuk je apa-apa nilai di ruangan ni.
  5. Klik OK.


Convert Geodatabase Annotation kepada Layer Point

Step ni akan menghasilkan layer point yang mengandungi atribut dari annotation. Maksudnya nombor lot dan lain-lain atribut dari annotation akan disimpan dalam layer point yang dihasilkan nanti. Mungkin ada yang akan tanya, kenapa perlu convert dulu kepada geodatabase annotation then baru convert ke point? Tak boleh ke convert terus je dari CAD annotation menjadi point tanpa perlu convert jadi geodatabase annotation dulu? Haaa… lepas saya buat testing testing, ada beza rupanya result dua kaedah tu. Cuba perhatikan perbezaan result di bawah ni.

 
Kalau kita convert CAD annotation terus kepada point, nampak macam lari sikit kedudukan point. Ada pulak sesetengah lot tu ada 2 point dalam 1 lot. Oleh sebab dalam point tu ada atribut nombor lot, jadi kelirulah kalau dalam 1 lot ada 2 point, nak ambil atribut nombor lot dari point yang mana satu?? Nampak macam point tu lari sikit offset ke kiri sebenarnya. Sebab tu point dari lot bersebelahan dah termasuk ke dalam lot jiran di sebelah. Tapi kalau kita lihat point yang dihasilkan dari geodatabase annotation, kedudukan pointnya cantik saja ditengah-tengah lot.
OK, dalam step sebelum tadi kita dah dapat layer geodatabase annotation. Nak convert geodatabase annotation ni kepada layer point, buat step di bawah ni. Anda perlukan license ArcGIS Desktop Advanced untuk run tool ni.

 

 
Penerangan gambar :-
  1. Dalam ArcToolbox, klik tool Data Management Tools > Features > Feature to Point
  2. Masukkan geodatabase annotation dalam ruangan Input Features.
  3. Namakan output point layer.
  4. Pastikan uncheck kotak Inside (optional)
  5. Klik OK.

 
Convert Polyline kepada Polygon dan Import Atribut Point

OK, sekarang kita dah ada layer point yang dah ada atribut nombor lot. Next kita import atribut dari layer point ni masuk ke dalam polygon lot. Maknanya kena create dulu le layer lot polygon dari polyline AutoCAD tadi.  Nak buat step ni perlukan license ArcGIS Desktop Advanced gak. Follow step berikut :-

 

Penerangan gambar :-
  1. Dalam ArcToolbox, klik tool Data Management Tools > Features > Feature to Polygon
  2. Masukkan polyline dari fail AutoCAD ke ruangan Input Features
  3. Namakan output polygon lot.
  4. Dalam ruangan Label Features, pilih layer point yang anda dah hasilkan sebelum tadi untuk import atribut point masuk ke dalam polygon.
  5. Klik OK.

OK selesai sudah proses. Bila anda klik info dalam setiap lot, anda akan dapati ada atribut nombor lot dalam polygon lot tu. Bila buka atribut table polygon pun anda akan nampak senarai nombor lot dah dimasukkan dalam table.

Harap post ni dapat membantu anda bila nak import atribut teks annotation AutoCAD selepas ni.


p/s : Buku SukaGIS - Seronoknya Belajar ArcGIS (Jilid 1) telahpun berada di pasaran. Padat dengan kompilasi tutorial2. Hubungi 0193513770 untuk tempahan :)