[CAD-MAP-018]: Aplikasi Topology Analysis di AutoCAD Map untuk Mengambil Nilai Text dalam Polygon (disertai dengan tahapan pembuatan Autolisp)

Referensi : [CAD-MAP-017]: Membuat tabel Microsoft Access dari Hasil Topology Analysis di AutoCAD Map
Platform : Autocad Map
Download : tidak tersedia agar bisa belajar sendiri

Berbeda dengan tulisan sebelumnya di [CAD-MAP-017]: Membuat tabel Microsoft Access dari Hasil Topology Analysis di AutoCAD Map dimana dalam satu bidang terdiri dari dua object text yang akan dibuat tabel baru di Microsoft Access, kali ini ada tiga object text dalam satu bidang.

Penggalan gambar yang saya terima :

image

Tabel yang akan dibuat di Microsoft Access terdiri dari 3 (tiga) kolom/field yang yang terdiri dari:

Kolom Nama Kolom / Field Sumber Data
1 NIB Text Value
2 Berkas Text Value
3 Nama Text Value
3 Area Topology Polygon

Tahapan untuk membuat data source, clean-up dan topology polygon tidak diuraikan lagi dalam tulisan ini. Silakan mengacu ke tulisan saya sebelumnya tentang pembuatan data source, clean-up dan pembuatan topology polygon.

A. Load dan Check Polyogn Topology.

Saat saya menerima gambar yang akan diolah, ternyata sudah ada topology polygonnya bernama [Batas_Persil] tetapi dalam kondisi belum ter-loaded / belum aktif. Cara untuk meng-aktifkan topology tersebut adalah dengan :

1. Click kanan topology [Batas_Persil], pilih [Administration] kemudian [Load Topology]. Jika ditampilkan pesan  “Topology Batas_Persil is correct and complete”, maka topology bisa dipakai untuk proses analisa topology.

image

 

2. Untuk menampilkan geometry polygon dalam topology, click kanan [Batas_Persil], kemudian pilih [Show Geometry] maka akan ditunjukkan geometry polygon beserta dengan pusat poligonnya (centroid polygon). Dari hasil [Show Geometry] tersebut dapat diketahui bahwa polygon [Batas_Persil] menggunakan Object Text yang berisi informasi  NIB sebagai centroid poligon.

3. Untuk mendapatkan informasi luas dari hasil topology ketik pada command:adeeditdata

image

Langkah selanjutnya adalah membuat node topology dari object text Berkas dan Nama.

B. Membuat node topology dari object text Berkas dan Nama.

Agar proses pembuatan node topology lebih cepat terutama saat pemilihan object, maka sebaiknya object text Berkas dan text Nama terdapat pada layer yang berbeda.

Saat saya melakukan pengecekan gambar kedua object text Berkas dan Nama terletak pada satu layer  [tn_lai] sehingga perlu dibuat layer baru untuk memisahkan object text Berkas dengan object text Nama.

B.1. Menggunakan Filter untuk Memisahkan Text Berkas dan Text Nama.

Misalkan text Nama diletakkan di layer [tn_lai] kemudian text Berkas diletakkan di layer [tn_lai_berkas], maka langkah-langkah untuk memisahkan object text tersebut adalah:

1. Buat layer baru dengan nama [tn_lai_berkas] kemudian set warna layer ke warna merah atau warna yang berbeda dengan warna layer [tn_lai]

2. Proses pemilihan text dalam satu layer akan lebih mudah jika ada properties text yang berbeda dari object text Berkas dan text Nama. Misal warna textnya berbeda, tinggi text berbeda atau text style yang berbeda. Pada kasus ini text propertiesnya seperti warna text, tinggi text, text style antara object text Nama dengan object text Berkas adalah sama tetapi untung masih ada perbedaan yang saya temukan yaitu pada object text Berkas selalu ada huruf dash atau “-“.

Fasilitas perintah Filter di autocad dapat digunakan untuk memilih object text dengan kriteria filter : memilih semua Object Text dengan Text Value berisi huruf “-” di layer [tn_lai]. Setelah object text terpilih, maka object tersebut dipindahkan ke layer [tn_lai_berkas]

Lesson learned: Sebaiknya letakkan di layer yang berbeda jika object memiliki  informasi yang berbeda sehingga mempermudah dalam proses analisa

3. Ketik di command:Filter

4. Pilih [Add Selected Object], kemudian pilih salah satu object text Berkas:

image

Pada List Box, hapus object properties selain properties [Object=Text], [Layer=tn_lai] dan [Text Value]. Cara menghapus adalah dengan memilih property yang ada di list box kemudian click Delete.

5. Pilih property [Text Value], kemudian click [Edit Item]

6. Ganti text disamping tulisan X=*-*, kemudian click [Substitute]

image

7. Setelah itu click [Apply] untuk memulai memilih object dengan criteria filter seperti di atas.

8. command: Select objects: all

9. Maka seluruh object text di layer [tn_lai] yang textnya terdapat huruf “-” akan terpilih.

10. Masih dalam kondisi text tepilih, tekan Ctrl+1

11. Pada setting Design Properties, rubah Color : ByLayer kemudian Layer: tn_lai_berkas

image

12. Gambar setelah text berkas dan text nama dipisahkan layernya. Text warna merah adalah object berkas di layer [tn_lai_berkas]

image

B.2. Membuat Node Topology untuk Text Nama dan Text Berkas

Buat topology dengan setting sebagai berikut:

Topology Type Topology Name Select Node on Layer
Node Nama tn_lai
Node Berkas tn_lai_berkas

List topology dalam gambar menjadi:

image

C. Konversi Object Text ke Table Object Data.

Pada [CAD-MAP-017]: Membuat tabel Microsoft Access dari Hasil Topology Analysis di AutoCAD Map saat melakukan overlay, setting untuk attribute di source topology menggunakan property object text autocad .STRING sehingga nilai object text di node topology (nama topology pada contoh sebelumnya : pt_nama) ikut dalam proses overlay.

Setting property .STRING juga diset pada overlay topology (nama topology pada contoh sebelumnya : pol_pbt) akan tetapi pada saat proses overlay dijalankan terjadi kegagalan. Kegagalan ini mungkin terjadi karena ada dua nama field pada satu tabel yaitu STRING dari source topology dan STRING dari overlay topology.

Salah satu cara agar proses overlay berhasil, maka pada cara sebelumnya property object text .STRING diconvert menjadi tabel database access kemudian nama field diganti yang sembelumnya STRING menjadi NIB.

Cara lain agar proses overlay tidak menghasilkan field sama adalah dengan membuat object data table dengan setting nama field yang berbeda. Nama field dan nama tabel yang akan dibuat adalah:

Nama Object Data Tabel Nama Field Field Type Keterangan
OD_NIB NIB Character berisi nilai text NIB dari layer 080201
OD_NAMA NAMA Character berisi nilai text nama dari layer tn_lai
OD_BERKAS BERKAS Character berisi nilai text berkas dari layer tn_lai_berkas

C.1. Membuat Object Data Tabel

Jika menggunakan kotak dialog, cara membuat data object data dengan click icon [Define Object Data] di group [Attribute Data] dari menu [Map Setup]

image

atau dengan mengetik di kotak command: ADEDEFDATA

 

Catatan: “Pada tahapan selanjutnya setting perintah melalui kotak dialog dimatikan sementara sehingga pilihan dan isian dilakukan melalui prompt command:. sehingga urutan perintah dapat dicatat / disalin untuk kemudian dibuatkan program Autolispnya”

1. Mematikan kotak dialog.

Command: CMDDIA

Enter new value for CMDDIA <1>: 0

2. Buat object data tabel OD_NIB, OD_NAMA dan OD_BERKAS

Command: _adedefdata
Table: [?/Delete/Modify/New/Rename/eXit]<eXit>: N
Table name: OD_NIB
Field 1:
Field name: NIB
Field description: <ENTER>
Field type: [Integer/Character/Point/Real]: <Integer>: C
Field default value: <ENTER>
Continue with next field? [Yes/No] <Y>:N
Table: [?/Delete/Modify/New/Rename/eXit]<eXit>: X

Pada tahap di atas object data dengan nama OD_NIB sudah dibuat, untuk membuat object data tabel OD_NAMA dan OD_BERKAS maka perlu diulang langkah di atas dengan memasukkan isian di prompt Table Name dengan nama object table yang diinginkan.

Setting cmddia dan perulangan atau looping untuk membuat object data di atas jika menggunakan program autolisp adalah:

(defun c:atop ()
;;1. MEMBUAT OBJECT DATA
(setq cmddia_old (getvar “cmddia”));simpan setting cmddia sebelumnya(setvar “cmddia” 0);set kotak dialog off
;setting list object data di bawah bisa dirubah sesuai data yang ada

(setq list_od (list “OD_NIB” “OD_BERKAS” “OD_NAMA”));list object data yang akan dibuat
(setq list_fld (list “NIB” “BERKAS” “NAMA”));list nama field atau header

(setq list_type (list “C” “C” “C”)); list object type dari list object di atas

(setq i -1);setting index untuk ambil
(foreach od list_od
(setq i (1+ i))
(command  “adedefdata” “N” od (nth i list_fld) “” (nth i list_type) “” “N” “X”);membuat data table
);end foreach

(setvar “cmddia” cmddia_old)
);end defun

Catatan: Pada tahap selanjut autolisp akan terus diupdate sehinga akan tersusun program autolisp yang merangkup semua tahapan di tutorial ini.

C.2. Mengisi Object data OD_NIB, OD_NAMA dan OD_BERKAS dari Text NIB, NAMA dan BERKAS.

Object data yang telah dibuat kemudian diisi dengan text string dari object NIB, NAMA dan BERKAS yang masing-masing ada di layer yang telah didefiniskan sebelumnya yaitu:

Autocad Object Nama Layer Target Object Data
Text 080201 OD_NIB
Text tn_lai OD_NAMA
Text tn_lai_berkas OD_BERKAS

Tahapan perintah sebelum dibuatkan autolisp:

Command: ADEGENLINK
Linkage type: [Blocks/textObjects/encloseDBlocks/enclosedText]<enclosedText>: o
Create [Objectdata/ASElinks]<ASElinks>: o
Object data table (? for list): od_nib
Use Insertion Point as Label Point: [Yes/No] <N>:y
Text objects to generate from: [Select/All]<All>: s
Select objects: (ssget “x” ‘((0 . “TEXT”) (8 . “080201”)))
<Selection set: 2f>
22 found
Select objects:
22 object(s) to process.
Processing 22…done. 22 links created.

Pada proses select objects di atas, fungsi (ssget “x” ‘((0 . “TEXT”) (8 . “080201”))) adalah untuk memilih semua object autocad dengan kriteria hanya memilih object text (0 . “TEXT”) yang ada di layer 080201 (8 . “080201”). Dengan memahami fungsi filter tersebut, maka untuk membuat link  OD_NAMA dan OD_BERKAS adalah dengan mengulang langkah diatas dengan merubah prompt “object data tablle:” dan “Select objects: sesuai dengan nama layer letak object text tersebut.

Program autolisp setelah dilengkapi dengan perintah link data menjadi:

(defun c:atop ()
(setq cmddia_old (getvar “cmddia”));simpan setting cmddia sebelumnya(setvar “cmddia” 0);set kotak dialog off
;setting list object data di bawah bisa dirubah sesuai data yang ada

(setq list_od (list “OD_NIB” “OD_BERKAS” “OD_NAMA”));list object data yang akan dibuat
(setq list_fld (list “NIB” “BERKAS” “NAMA”));list nama field atau header
(setq list_type (list “C” “C” “C”)); list object type dari list object di atas
(setq list_layer (list “080201” “tn_lai_berkas” “tn_lai”))

(setq i -1);setting index untuk ambil
(foreach od list_od
(setq i (1+ i))
;;1. Membuat object data tabel
(command  “ADEDEFDATA” “N” od (nth i list_fld) “” (nth i list_type) “” “N” “X”)

;;2. linked object data table ke string atau text.
(setq filter (list (cons 0 “TEXT”) (cons 8 (nth i list_layer))));set filter
(command “ADEGENLINK” “O” “O” od “Y” “S” (ssget “X” filter) “”)

);end foreach

(setvar “cmddia” cmddia_old)
);end defun

untuk mengecek apakah object data table sudah link ke text object atau string, click icon [Edit Object Data] di group [Map Edit] pada menu [Tool]

image

atau dengan mengetik di command: ADEEDITDATA

Pilih object text NIB, maka akan ditampilkan isi object data OD_NIB:

image

Pada contoh di atas object text dengan value / isi nib 01992 telah terisi di object data table OD_NIB.

D. Proses Topology Overlay.

Proses ini sebenarnya adalah spasial join menggunakan metode overlay type intersect antara topology titik/node (source topology) dengan topology polygon (overlay topology) . Hasil dari overlay ini adalah berupa topology titik/node topology dan object data tabel baru. Pada obejct data table baru tersebut bisa diberi attribute (field baru) yang berisi obejct data hasil link dari tahapan sebelumnya.

Proses overlay dilakukan dua kali dengan setting sesuai dengan tabel di bawah:

Proses Overlay Source Topology Overlay Topology Hasil Topologi Attribute Source Topology Attribute Overlay Topology Object Data Table Baru
Pertama Berkas Batas_Persil TP_Berkas :BERKAS@OD_BERKAS :NIB@OD_NIB OD_BERKAS_PRSL
Kedua Nama Batas_Persil TP_Nama :NAMA@OD_NAMA :NIB@OD_NIB OD_NAMA_PRSL

Cara overlay dan setting attribute di source dan overlay topology silakan mengacu ke [CAD-MAP-017]: Membuat tabel Microsoft Access dari Hasil Topology Analysis di AutoCAD Map .  Sedangkan tahapan overlay ini akan dilakukan dengan urutan pada printah command:

Sebelum melakukan tahapan dibawah topology Berkas, Nama dan Batas_Persil harus di-Load Topology dulu.

1. Mematikan kotak dialog.

Command: CMDDIA

Enter new value for CMDDIA <1>: 0

2.  Proses Overlay Pertama

Command: MAPOVERLAY
Enter source topology name (? for list) <nama>: BERKAS
Enter type of source data (Object-data/Sql-data): o
Enter table name (? for list) <>: OD_BERKAS
Select all available fields? (Yes/No) <Y>: y
Enter type of source data (Object-data/Sql-data): <Enter>
Enter overlay topology name (? for list) <Batas_Persil>: Batas_Persil
Enter type of overlay data (Object-data/Sql-data): o
Enter table name (? for list) <>: OD_NIB
Select all available fields? (Yes/No) <Y>:y
Enter type of overlay data (Object-data/Sql-data):<Enter>
Enter overlay operation (Intersect/Union/iDentity/Erase/Clip/Paste) <I>:I
Enter result topology name:TP_BERKAS
Enter result topology description:
Enter target layer (? for list) <080201>: 0
Enter result data table (? for list) <>: OD_BERKAS_PRSL
No such data table. Create table? (Yes/No) <Y>: y
Enter table description:

3. Proses Overlay Kedua

Ulangi tahapan seperti di nomer 2 dengan mengganti source topology, source topology table name dan result data table. sehingga akhirnya diapatkan dua (2) object data table yaitu OD_BERKAS_PRSL dan OD_NAMA_PRSL

Program autolisp setelah memasukkan perintah overlay:

(defun c:atop ()
(setq cmddia_old (getvar “cmddia”));simpan setting cmddia sebelumnya(setvar “cmddia” 0);set kotak dialog off
;setting list object data di bawah bisa dirubah sesuai data yang ada

(setq list_od (list “OD_NIB” “OD_BERKAS” “OD_NAMA”));list object data yang akan dibuat
(setq list_fld (list “NIB” “BERKAS” “NAMA”));list nama field atau header
(setq list_type (list “C” “C” “C”)); list object type dari list object di atas
(setq list_layer (list “080201” “tn_lai_berkas” “tn_lai”))

(setq i -1);setting index untuk ambil
(foreach od list_od
(setq i (1+ i))
;;1. Membuat object data tabel
(command  “ADEDEFDATA” “N” od (nth i list_fld) “” (nth i list_type) “” “N” “X”)

;;2. linked object data table ke string atau text.
(setq filter (list (cons 0 “TEXT”) (cons 8 (nth i list_layer))));set filter
(command “ADEGENLINK” “O” “O” od “Y” “S” (ssget “X” filter) “”)

);end foreach

;;3. Proses Overlay

(setq tp_node1 “BERKAS” tp_node2 “NAMA” tp_poly “Batas_Persil”)
(setq od_res1 “OD_BERKAS_PRSL” od_res2 “OD_NAMA_PRSL”)
(setq tp_res1 “TP_BERKAS” tp_res2 “TP_NAMA”)
(setq od_node1 (nth 1 list_od))
(setq od_node2 (nth 2 list_od))
(setq od_poly (nth 0 list_od))

;;overlay pertama
(command “MAPOVERLAY” tp_node1 “o” od_node1 “y” “”)
(command tp_poly “o” od_poly “y” “”)
(command “i” tp_res1 “” “0” od_res1 “y” “”)

;;overlay kedua
(command “MAPOVERLAY” tp_node2 “o” od_node2 “y” “”)
(command tp_poly “o” od_poly “y” “”)
(command “i” tp_res2 “” “0” od_res2 “y” “”)

(setvar “cmddia” cmddia_old)
);end defun

Copy list atau kode autolisp di atas ke text file dengan ekstensi .lsp misal analisa_overlay.lsp

cara penggunaan autolisp tersebut akan dijelaskan pada posting berikutnya.

E. Menyimpan Object Data ke Microsoft Access.

Agar hasil overlay tersebut bisa ditampilkan dalam bentuk table, maka object data table tersebut diexport dalam bentuk Text File (txt file) , Microsoft Excel ataupun Microsoft Acces. Cara export ke Text File dilakukan dengan topology query seperti dalam contoh [CAD-MAP-001]: Menghitung Luas Bidang Tanah dengan Autocadmap sedangkan jika ingin ditampilkan dalam bentuk Microsoft Excel dapat mengikuti cara connect data ke excel di [CAD-MAP-003]: Menghubungkan Excel Database ke Topology di Autocad Map Beserta dengan Query dan Analisanya.

Topology dan object data yang akan ditampilkan dalam microsoft access adalah:

Nama Table Sumber
TPMCNTR_Batas_Persil hasil topology polygon
OD_BERKAS_PRSL hasil overlay nomor berkas dan persil
OD_NAMA_PRSL hasil overlay nama dan persil

Langkah-langkah untuk export data ke access di bawah ini berasumsi bahwa database microsoft access (file *.accdb) telah dibuat:

1. Buat ODBC connection ke database microsoft access seperti di [CAD-MAP-017]: Membuat tabel Microsoft Access dari Hasiil Topology Analysis di AutoCAD Map misal pada contoh di bawah odbc connectionnya bernama odbc_accdb_peta_bidang

2. Hubungkan autocadmap / connect dengan ODBC di atas.

image

3. Ketik di Command:MAPOD2ASE

image

Lakukan setting:

Source Object Data Table : TPMCNTR_Batas_Persil
Target Link Template : Covert object to database
Object Selection : Select Automatically

4. Click tombol [Define]

Pilih Data Source: odbc_accdb_peta_bidang, kemudian click [Connect]

image

Click [OK] untuk menutup kotak dialog [Define Link Template]

5. Click [Proceed]

6. Ulangi langkah di atas untuk object data OD_BERKAS_PRSL dan OD_NAMA_PRSL

7. Hasil tahapan di atas adalah 3 (tiga) link templates. Double click salah satu link template tersebut untuk menampilkan tablenya

image

Tahap berikutnya adalah melakukan pengabungan data atau join table di microsoft access.

F. Join table di Microsoft Access.

Langkah untuk melakukan join table di Microsoft Access :

1. Terlebih dahulu disconnect / putus hungan antara autocadmap dengan odbc: odbc_accdb_peta_bidang.

image

2. Buka file database microsoft access yang terkoneksi ke odbc_accdb_peta_bidang.

Pada microsoft access sudah ditampilkan 3 (tiga) buah table hasil dari proses konversi obejct data table dari autocadmap.

image

2.1. Pada menu [Create], pilih icon [Query Design]

2.2. Pilih table OD_BERKAS_PRSL, OD_NAMA_PRSL dan TPMCNTR_Batas_Persil kemudian click [Add]

2.3. Pada area query design, Pilih field [ID] di table [TPMCNTR_Batas_Persil] kemudian hubungkan ke field [Batas_Persil_ID] di table [OD_BERKAS_PRSL]

2.4. Pilih lagi field [ID] kemudian hubungkan ke field [Batas_Persil_ID] di table [OD_NAMA_PRSL]

Hubungan antar table akan terlihat seperti gambar di bawah:

image

2.5. Jika ingin menampilkan kolom dengan urutan NIB, BERKAS, NAMA dan LUAS

Double click field [Batas_Persil_NIB] di table OD_BERKAS_PRSL –> menampilkan NIB

Double click field [BERKAS_BERKAS] di table OD_BERKAS_PRSL –> menampilkan BERKAS

Double click field [NAMA_NAMA] di table OD_NAMA_PRSL –> menampilkan NAMA

Double click field [AREA] di table [TPMCNTR_Batas_Persil]

2.6 Click icon Run untuk menjalankan query.

image

Hasil run query

image

Simpan query misal dengan nama : InformasiPersil kemudian tutup program microsoft.

Jika diinginkan hasil di microsoft excel, pilih nama query [InformasiPersil], kemudian pada menu [External Data], pilih icon [Export to Excel]

image

G. Menghubungkan Hasil Query Access dengan Object di AutoCAD.

Maksud dari tahapan ini adalah untuk mengecek hasil query di access apakah sesuai dengan letak lokasinya di autocad map.

1. Tutup file access dari tahapan sebelumnya.

2. Pada folder Data Sources, click kanan odbc_accdb_peta_bidang, kemudian click [Connect]

Nama query yang dibuat di microsoft access sudah ditampilkan.

image

Double click query [InformasiPersil], maka ditampilkan tabel hasil query di autocad map:

image

3. Buat Link Template dengan Key Column [NIB]

Saat Data View – InformasiPersil ditampilkan seperti di atas, pada menu [Links] pilih [Define Link Template]

cek Key Batas_Persil_NIB sebagai Key, kemudian click [OK]

image

Simpan / save autocadmap sehingga link template yang baru saja dibuat ditampilkan dalam folder  [Link Templates]

4. Generate Link ke Object NIB atau text NIB.

Lakukan quick select dengan mengetik di command :qselect

Object Type: Text
Properties: Layer
Operator: = Equals
Value: 080201
kemudian click [OK]

click kanan Link Template : [InformasiPersil] kemudian lakukan [Generate Links]

image

5. Double Click link template [InformasiPersil] kemudian lakukan setting Autoselect, Autohighlight dan setting Zoom Level sehingga saat record di data view dipilih, secara otomatis object yang terlinked dengan database otomatis terpilih dan ter-zoom.

Pada gambar di bawah terlihat bahwa record yang terpilih di Data View sudah sama dengan NIB, Nama dan Berkas yang ada di autocadmap:

image

Tutorial berikutnya akan dijelaskan bagaimana cara menggunakan autolisp dalam file analisa_overlay.lsp sehingga proses seperti dijelaskan dalam tutorial ini lebih cepat.

Sekian terimakasih.

Mohon maaf jika tutorialnya kepanjangan.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s