BAB 3 DESAIN DAN IMPLEMENTASI ANALISIS PENCARIAN JALUR JALAN DALAM BASIS DATA SPASIAL 3D Bab ini akan menjelaskan tahapan-tahapan desain dan implementasi sistem basis basis data jalur jalan 3D. Tahapan-tahapan tersebut antara lain perancangan basis data (pada subbab 3.1), tahapan struktur jaringan jalur jalan 3D (pada subbab 3.2), tahapan desain dan implementasi Pgrouting untuk basis data spasial 3D jalur jalan (pada subbab 3.3), tahapan implementasi dan uji coba (pada subbab 3.4).
3.1 Perancangan Basis Data Jalur Jalan Kampus ITB Perancangan basis data merupakan tahap awal pembuatan basis data, termasuk didalamnya penentuan struktur basis data, hubungan antar tabel, isi, dan aplikasi apa saja yang akan dijalankan. Perancangan basis data dalam sistem mempunyai tujuan untuk mempermudah hubungan-hubungan antar tabel satu dengan tabel lainnya. Basis data mempunyai fungsi untuk mencatat, menyimpan, memanipulasi dan menampilkan hasil. Secara garis besar, tahapan pembangunan basis data ini meliputi tahapan eksternal, tahapan konseptual, dan tahap implementasi. 3.1.1
Tahapan eksternal
Pada tahapan eksternal ini, dilakukan identifikasi kebutuhan pengguna (user requirement) yang berhubungan dengan perancangan basis data jalur jalan kampus ITB. Dalam mengidentifikasi kebutuhan pengguna ini, dilakukan studi literatur dan pengamatan lapangan mengenai struktur jalur yang berada di dalam kampus ITB.
Hasil dari analisis kebutuhan pengguna dalam tahap eksternal ini kemudian diklarifikasi serta disusun secara sistematik untuk mendapatkan entitas-entitas untuk membangun sistem basis data. Entitas merupakan individu yang mewakili sesuatu yang nyata (eksistensinya) dan dapat dibedakan dari sesuatu lainnya
28
[Fatahansyah, 1999]. Tiap entitas memiliki informasi yang mendeskripsikan karateristik dari entitas yang disebut sebagai atribut. Bentuk dan struktur 3D saja belum cukup untuk dapat melakukan analisis pencarian
jalur jalan, karena kurangnya informasi mengenai hubungan antar
objek di lapangan. Dengan pemodelan graf hal tersebut dapat dilakukan. Pemodelan graf digunakan untuk merepresentasikan bentuk geometri suatu objek, misalkan bentuk bangunan. Bentuk bangunan dapat direpresentasikan dengan garis (edge) dan titik (node), di dalam gedung terdapat ruangan yang dapat direpresentasikan sebagai titik, dan koridor yang dapat direpresentasikan sebagai garis. Dalam membangun struktur graf terdapat beberapa aturan seperti: Bagian akhir dari jalur selalu node. Jalur penghubung antar objek selalu edge Pertemuan antara jalur penghubung selalu node Prakteknya dalam dunia nyata, jalur merupakan tempat untuk melakukan pergerakan dari satu tempat ke tempat lainnya. Pergerakan tersebut bisa dilakukan dengan berjalan kaki maupun dengan menggunakan kendaraan seperti mobil maupun motor, sehingga jalur tersebut digambarkan sebagai garis. Sedangkan bagian tempat akhir dari suatu jalur digambarkan sebagai titik dari centroid suatu tempat. Entitas dalam pembentukan basis data jalur jalan kampus ITB dibagi menjadi dua bagian yaitu titik (node) dan garis (edge). Adapun entitas jalur jalan diperlihatkan pada tabel 3.1 dan tabel 3.2. Node merupakan awal atau terminasi dari suatu jalur. Node diasumsikan merupakan tempat tujuan akhir dari suatu jalur. Dan edge merupakan aksesibilitas jalur dari tempat-tempat yang direpresentasikan oleh node. Tabel 3.1 Daftar Entitas Titik No.
Entitas
Jenis
Parkiran
Titik
Taman
Titik
29
Gedung
Titik
Ruang
Titik
Lantai
Titik
Lapangan
Titik
Tabel 3.2 Daftar Entitas Garis No.
Entitas Jalan
Jenis kendaraan Garis
bermotor
3.1.2
Jalan Setapak
Garis
Koridor
garis
Jalur Lift
garis
Tangga
garis
Tahap Konseptual
Setelah pemilihan entitas yang akan dimasukkan ke dalam basis data, relasi antara data tersebut harus dibuat terlebih dahulu. Dalam perancangan desain konseptual ini, dilakukan pengidentifikasian terhadap entitas basis data jalur jalan kampus ITB. Pada tahap ini juga dilakukan perancangan model relasi antar entitas. Hasil dari tahap konseptual ini sering disebut sebagai model konseptual dan pada umumnya direpresentasikan dengan menggunakan model data Entity Relationship (ER).
Hubungan satu entitas dengan entitas lainnya merupakan formulasi dari enterprise rule, yaitu suatu aturan yang terjadi pada keterkaitan antara satu entitas dengan entitas lainnya pada struktur organisasi data. Adapun entitas dan atribut yang digunakan dalam kajian ini dapat dilihat pada tabel 3.3 berikut:
30
Tabel 3.3 Tabel entitas-entitas basis data jalur jalan kampus ITB beserta atributnya No. 1.
Entitas Node Kampus
2.
Parkiran
Atribut a. ID Node Kampus a. ID parkiran
Objek Primitif Titik Poligon
b. keterangan 3.
Taman
a. ID taman
Poligon
b. keterangan 4.
Gedung
a. ID bangunan
Poligon
b. nama bangunan 5.
Ruang
a. ID ruang
Poligon
b. nama ruang 6.
Lapangan
a. ID lapangan
Poligon
b. keterangan 7.
Lantai
a. ID lantai
Poligon
b. nama lantai 8.
Net Kampus
a. ID edge
Garis
b. source (from node) c. target (to node) 9.
Jalan
a. ID jalan
Poligon
b. nama jalan 10.
Jalan Setapak
a. ID jalan setapak
Poligon
b. keterangan 11.
Koridor
a. ID koridor
Poligon
b. keterangan 12.
Jalur Lift
a. ID jalur lift
Poligon
b. keterangan 13.
Tangga
a. ID tangga
Poligon
b. keterangan
31
3.1.2.1 Entity Relationship 1. Hubungan entitas node kampus dan entitas net kampus Hubungan antara entitas node kampus dan entitas net kampus termasuk kedalam jenis graf sederhana berarah dan merepresentasikan graf Matriks Bersisian (incidency matrix) karena pada hubungan ini, terdapat informasi yang menyatakan arah tujuan (from node dan to node) dan informasi hubungan garis dengan titik. a. Enterprise Rules Untuk relasi from i. Setiap segmen net kampus pasti memiliki satu titik dari (from) node kampus. ii. Satu titik pada node kampus pasti dapat memiliki lebih dari satu segmen net kampus. iii. Hubungan kedua entitas tersebut adalah banyak ke satu dan keduanya berkelas obligatori. Untuk relasi to i. Setiap segmen net kampus pasti memiliki satu titik menuju (to) node kampus. ii. Satu titik pada node kampus pasti dapat memiliki lebih dari satu segmen net kampus. iii. Hubungan kedua entitas tersebut adalah banyak ke satu dan keduanya berkelas obligatori. b. Diagram ER from m
1
Net kampus
Node kampus
m
1 to
32
c. Tabel Skeleton i. node_kampus (#gid) ii. net_kampus (#gid, id_edge, source, target) 2. Hubungan entitas parkiran dan entitas node kampus a. Enterprise Rules i. Satu wilayah parkiran hanya memiliki satu centroid (node kampus). ii. Satu centroid (node kampus) hanya bisa memiliki satu wilayah parkiran. iii. Hubungan kedua entitas tersebut adalah satu ke satu dan berkelas non obligatori dan obligatori. b. Diagram ER 1 parkiran
1 memiliki
Node kampus
c. Tabel Skeleton i. node_kampus (#gid, id_node) ii. parkiran (#id_parkiran, keterangan) 3. Hubungan entitas taman dan entitas node kampus a. Enterprise Rules i. Satu wilayah taman hanya memiliki satu ke satu centroid (node kampus). ii. Satu centroid (node kampus) hanya bisa memiliki satu wilayah taman. iii. Hubungan kedua entitas tersebut adalah satu ke satu dan berkelas non obligatori dan obligatori. b. Diagram ER 1 taman
1 memiliki
Node kampus
33
c. Tabel Skeleton i. node_kampus (#gid, id_node) ii. taman (#id_taman, keterangan) 4. Hubungan entitas gedung dan entitas node kampus a. Enterprise Rules i. Satu gedung hanya memiliki satu centroid (node kampus). ii. Satu centroid (node kampus) hanya bisa memiliki satu gedung. iii. Hubungan kedua entitas tersebut adalah satu ke satu dan berkelas non obligatori dan obligatori b. Diagram ER 1 gedung
1 memiliki
Node kampus
c. Tabel Skeleton i. node_kampus (#gid, id_node) ii. gedung (#id_gedung, nm_gedung) 5. Hubungan entitas ruang dan entitas node kampus a. Enterprise Rules i. Satu ruang hanya memiliki satu centroid (node kampus). ii. Satu centroid (node kampus) hanya bisa memiliki satu ruang. iii. Hubungan kedua entitas tersebut adalah satu ke satu dan berkelas non obligatori dan obligatori. b. Diagram ER 1 ruang
1 memiliki
Node kampus
c. Tabel Skeleton i. node_kampus (#gid, id_node) ii. ruang (#id_ruang, nm_ruang)
34
6. Hubungan entitas lantai dan entitas node kampus a. Enterprise Rules i. Satu lantai hanya memiliki satu centroid (node kampus). ii. Satu centroid (node kampus) hanya bisa memiliki satu lantai. iii. Hubungan kedua entitas tersebut adalah satu ke satu dan berkelas non obligatori dan obligatori. b. Diagram ER 1
1
lantai
memiliki
Node kampus
c. Tabel Skeleton iii. node_kampus (#gid, id_node) iv. lantai (#id_lantai, nm_lantai) 7. Hubungan entitas jalan dan entitas net kampus a. Enterprise Rules i. Satu segmen jalan hanya memiliki satu segmen net kampus. ii. Satu segmen net kampus hanya bisa memiliki satu segmen jalan. iii. Hubungan kedua entitas tersebut adalah satu ke satu dan berkelas non obligatori dan obligatori. b. Diagram ER 1 jalan
1 memiliki
net kampus
c. Tabel Skeleton i. net_kampus (#gid, id_edge) ii. jalan (#id_jalan, nm_jalan) 8. Hubungan entitas jalan setapak dan entitas net kampus a. Enterprise Rules i. Satu segmen jalan setapak hanya memiliki satu segmen net kampus.
35
ii. Satu segmen net kampus hanya bisa memiliki satu segmen jalan setapak. iii. Hubungan kedua entitas tersebut adalah satu ke satu dan berkelas non obligatori dan obligatori. b. Diagram ER 1 jalan setapak
1 memiliki
net kampus
c. Tabel Skeleton i. net_kampus (#gid, id_edge) ii. jalan_setapak (#id_jalan_setapak, keterangan) 9. Hubungan entitas koridor dan entitas net kampus a. Enterprise Rules i. Satu segmen koridor hanya memiliki satu segmen net kampus. ii. Satu segmen net kampus hanya bisa memiliki satu segmen koridor. iii. Hubungan kedua entitas tersebut adalah satu ke satu dan berkelas non obligatori dan obligatori. b. Diagram ER 1 koridor
1 memiliki
net kampus
c. Tabel Skeleton iii. net_kampus (#gid, id_edge) iv. koridor (#id_koridor, keterangan) 10. Hubungan entitas jalur lift dan entitas net kampus a. Enterprise Rules i. Satu segmen jalur lift hanya memiliki satu segmen net kampus. ii. Satu segmen net kampus hanya bisa memiliki satu segmen jalur lift.
36
iii. Hubungan kedua entitas tersebut adalah satu ke satu dan berkelas non obligatori dan obligatori. b. Diagram ER 1 jalur lift
1 memiliki
net kampus
c. Tabel Skeleton i. net_kampus (#gid, id_edge) ii. jalur lift (#id_jalur_lift, keterangan) 11. Hubungan entitas tangga dan entitas net kampus 1. Enterprise Rules i. Satu segmen tangga hanya memiliki satu segmen net kampus. ii. Satu segmen net kampus hanya bisa memiliki satu segmen tangga. iii. Hubungan kedua entitas tersebut adalah satu ke satu dan berkelas non obligatori dan obligatori 2. Diagram ER 1 tangga
1 memiliki
net kampus
3. Tabel Skeleton i. net_kampus (#gid, id_edge) ii. tangga (#id_tangga, keterangan) 12. Hubungan entitas gedung dan entitas lantai 1. Enterprise Rules i. Satu gedung pasti memiliki lebih dari satu lantai. ii. Satu lantai pasti memiiki satu gedung. iii. Hubungan kedua entitas tersebut adalah satu ke banyak dan berkelas obligatori dan obligatori.
37
2. Diagram ER gedung
1
memiliki
m
lantai
3. Tabel Skeleton i. gedung (#id_gedung, nm_gedung) ii. lantai (#id_lantai, id_gedung) 13. Hubungan entitas lantai dan entitas ruang 1. Enterprise Rules i. Satu lantai pasti memiliki lebih dari satu ruang. ii. Satu ruang pasti memiliki satu lantai. iii. Hubungan kedua entitas tersebut adalah satu ke banyak dan berkelas obligatori dan obligatori 2. Diagram ER lantai
1
memiliki
m
ruang
3. Tabel Skeleton i. lantai (#id_lantai, id_gedung, nm_lantai) ii. ruang (#id_ruang, id_lantai) keterangan : = non obligatori
= Obligatori Diagram ER dari basis data batas secara keseluruhan akan diperlihatkan dalam gambar 3.1.
38
3.1.2.2 Tabel Skeleton Berikut ini adalah tabel-tabel skeletonnya secara keseluruhan: 1. node_kampus (#id_node, id_node) 2. parkiran (#id_parkiran, keterangan) 3. taman (#id_taman, keterangan) 4. gedung (#id_gedung, nm_gedung) 5. ruang (#id_ruang, id_lantai, nm_ruang) 6. lantai (#id_lantai, id_gedung, nm_lantai) 7. lapangan (#id_lapangan, keterangan) 8. net_kampus (#gid, id_edge) 9. jalan (#id_jalan, nm_jalan, keterangan) 10. jalan_setapak (#id_setapak, keterangan) 11. koridor (#id_koridor, keterangan) 12. jalur lift (#id_jalur_lift, keterangan) 13. tangga (#id_tangga, keterangan)
parkiran
taman
1
1 1 1
1
m node kampus 1
lapangan
1
m
1 jalan
1 1
1
1
1 net kampus 1
1
1 1
1
jalan setapak
1 koridor 1 1
gedung
jalur lift
1
1 1
m lantai
tangga
1 1 m ruang
Gambar 3.1 Relasi antara Entitas-entitas
39
3.1.3
Tahap Implementasi
Tahap implementasi merupakan tahapan untuk membuat perancangan fisik bagaimana menerapkan data dan model basis data sesuai dengan perangkat lunak yang digunakan. Tahap implementasi ini mengacu kepada tahapan eksternal dan tahapan konseptual yang dikerjakan sebelumnya. 3.1.3.1 Perangkat Pembangun Dalam tugas akhir ini, perangkat lunak yang digunakan untuk membangun aplikasi adalah sebagai berikut: a. Autodesk Land Desktop 2004 b. ArcGIS 9.2 c. ArcScene 9.2 d. Postgresql versi 8.1.5 e. postgis-pg81 versi 1.2.1-1 f. pgRouting versi 1.0.1 win32 Sedangkan perangkat keras yang digunakan untuk membangun aplikasi ini adalah sebagai berikut: a. Processor
: Intel(R) Pentium(R) 2.4 GHz
b. Hardisk
: 80 Gb
c. Monitor
: GIC 15"
d. RAM
: 768 Mb
e. VGA Card
: 128 Mb
3.1.3.2 Pembuatan Basis Data Pembuatan basis data dilakukan dengan menggunakan perangkat lunak PostgreSQL 8.2.7 ditambah dengan fungsi PostGIS. Pembuatan basis data dilakukan dengan perintah : CREATE DATABASE "kampus_3D" WITH OWNER = "ginziro" TEMPLATE = "template_postgis";
40
3.1.3.3 Pembuatan Tabel-tabel Pembuatan tabel-tabel dapat dilakukan dengan menggunakan command prompt atau dengan menggunakan aplikasi 3rd party (EMS SQL Manager for Postgresql) pendukung postgresql. Perintah dalam command prompt : psql –U ginziro kampus_3D
proses pembuatan tabel dan penyusunan hubungan antar tabel dilakukan dengan menggunakan bahasa SQL data definition Language (DDL). Daftr DDL dapat dilihat pada lampiran A. CREATE TABLE "public"."net_kampus" ( "gid" SERIAL, "the_geom" "public"."geometry", "id_edge" INTEGER, "source" INTEGER, "target" INTEGER, "length" DOUBLE PRECISION, "x1" DOUBLE PRECISION, "y1" DOUBLE PRECISION, "z1" DOUBLE PRECISION, "x2" DOUBLE PRECISION, "y2" DOUBLE PRECISION, "z2" DOUBLE PRECISION, CONSTRAINT "enforce_dims_the_geom" CHECK (ndims(the_geom) = 3), CONSTRAINT "enforce_geotype_the_geom" CHECK ((geometrytype(the_geom) = 'MULTILINESTRING'::text) OR (the_geom IS NULL)), CONSTRAINT "enforce_srid_the_geom" CHECK (srid(the_geom) = -1) ) WITH OIDS;
3.2 Pengolahan Data 3.2.1
Pengumpulan data
Data
awal
yang
digunakan
berupa
basis
data
peta
kampus
ITB
(http://petakampus.itb.ac.id) dan data kontur Kampus ITB dalam format *.DWG yang masing-masing mempunyai sistem koordinat proyeksi UTM zona 48S dengan ellipsoid WGS84. Dari basis data peta kampus ITB, dilakukan query sesuai dengan entitas-entitas yang ada pada tahapan konseptual yang kemudian dilakukan konversi dari format *.SQL ke format *.SHP dengan menggunakan aplikasi Qgis (Quantum GIS 0.10.0), sedangkan untuk data kontur dilakukan konversi di Autocad kemudian dikonversi menjadi format TIN dengan
41
menggunakan aplikasi ArcScene (ArcGIS 9.2). Dengan menggunakan aplikasi ArcScene ini pula, dilakukan proses pembuatan 3D shapefile dari flie-file hasil konversi (*.SHP) dari basis data peta kampus dan TIN. Data 3D shapefile ini kemudian di konversi kedalam format *.DWG yang kemudian akan dilakukan pendijitasian jalur jalan dengan menggunakan aplikasi Autocad Land Desktop 2004. Hasil dijitasi jalur jalan ini kemudian di rubah ke dalam format *.DFX dan kemudian di konversi ke dalam format *.SQL untuk dimasukan kedalam basis data. Untuk lebih jelasnya dapat dilihat pada gambar 3.2 skematik langkah pengumpulan data.
Quantum GIS
Yes
Koordinat base Bangunan dan jalan
Kontur
Basis Data Peta Kampus
Titik-titik ketinggian (*.shp)
Query Entitas (sql) ArcScene
No TIN
Konversi *.SQL ke *.SHP Pembuatan 3D shapefile Konversi 3d shapefile ke *.DWG
ArcScene
Dijitasi jalur jalan
AutoCad
Konversi *.DXF ke *.SQL
DXF converter
Data Base 3D
Gambar 3.2 Skematik Pengumpulan dan Pengolahan Data
42
1. Konversi basis data (*.sql) ke shapefile (*.shp) Tahapan ini adalah proses untuk mengambil data entitas beserta atributnya yang ada pada basis data peta kampus ITB. Proses yang dilakukan menggunakan aplikasi Quantum GIS dibantu dengan bahasa SQL (Structure Query Language). Untuk dapat terhubung dengan server basis data peta kampus ITB, terlebih dahulu mengisikan data seperti user, password, dan alamat host. Gambar 3.3 untuk melakukan hubungan dengan basis data peta kampus ITB, dan gambar 3.4 hasil query dari basis data peta kampus ITB.
Gambar 3.3 Koneksi dengan Server Basis Data Peta Kampus ITB (http://petakampus.itb.ac.id)
43
Gambar 3.4 Hasil Query pada Aplikasi Quantum GIS Proses selanjutnya adalah melakukan query terhadap data yang ada di basis data peta kampus ITB. Query yang dilakukan berdasarkan entitas-entitas yang ada pada tahapan konseptual, yaitu parkiran, taman, gedung, ruang, lantai, jalan, dan koridor. Untuk entitas-entitas yang tidak terdapat pada server basis data kampus ITB sepert node kampus, net kampus, jalan setapak, jalur lift dan tangga, dilakukan pendijitasian yang dilakukan di aplikasi AutoCad Land Desktop 2004.
Setelah mendapatkan query yang diinginkan, dengan aplikasi Quantum GIS ini, akan dilakukan juga konversi ke format shapefile (*.shp). Konversi ke format shapefile dilakukan berdasarkan query entitas yang dilakukan, sehingga nanti akan didapat file-file entitas yang berformat shapefile. 2. Pembuatan TIN (Triangulated Irregular Network) Tahapan ini adalah tahapan untuk mendapatkan data TIN dengan melakukan intersection antara kontur ITB dengan bangunan dan jalan proses ini menggunakan aplikasi Autocad Land Desktop 2004. Kemudian data hasil intersection tersebut, diekstrak berupa titik setiap 2 meter. Hal ini dilakukan untuk mendapatkan titik-titik ketinggian. Titik-titik ketinggian tersebut kemudian di konversi ke dalam format shapefile. Kemudian format shapefile tersebut di
44
konversi menjasi format TIN dengan cara diinterpolasi proses ini menggunakan aplikasi ArcScene. Gambar 3.5 merupakan representasi titik-titik tinggi dalam format shapefile, dan gambar 3.6 adalah TIN dalam aplikasi ArcScene
Gambar 3.5 Titik-titik Tinggi dalam Format Shapefile
Gambar 3.6 TIN Kampus ITB 3. Pembuatan 3D shapefile Pada tahapan ini akan dilakukan pembuatan objek 3D yang berasal dari 2D shapefile (x,y) yang kemudian digabungkan dengan data TIN untuk mendapatkan data ketinggian (z). Pada pembuatan objek 3D ini, dilakukan proses interpolasi pencarian nilai ketinggian (z) data 2D shapefile (x,y) terhadap TIN yang mempuyai informasi ketinggian (z), sehingga akan didapatkan 3D shapefile yang mempunyai format (x,y,z). Gambar 3.7 merupakan betuk 3D shapefile jalan dan TIN. 45
Gambar 3.7 Overlay Layer data Jalan dan TIN 4. Konversi 3D shapefile ke autocad Tahap ini adalah tahapan untuk melakukan konversi dari 3D shapefile ke format AutoCad (*.DWG). Tahapan ini menggunakan aplikasi toolbox yang berada pada ArcScene. 3.2.2
Dijitasi jalur jalan
Tahapan ini adalah tahapan untuk mendapatkan data jalur jalan yang berasal dari data-data Autocad (*.dwg) hasil konversi. Pembuatan jalur jalan ini harus sesuai dengan tahapan konseptual yang telah dibuat, yaitu hanya berupa objek node(tititk) dan garis (edge). Pendijitasian dilakukan terhadap as (tengah) jalur jalan dan gedung (Gambar 3.8 dan gambar 3.9). Dalam melakukan pendijitasian, terdapat beberapa aturan seperti: Bagian akhir dari jalur selalu node Jalur penghubung antar objek selalu edge Pertemuan antara jalur penghubung selalu node
46
Gambar 3.8 Pendijitasian Jalur Jalan di Autocad
Gambar 3.9 Hasil Pendijitasian Jalur pada Gedung Labtek IXC
47
3.2.3
Konversi *.dxf ke format *.sql
Tahap ini adalah tahapan untuk melakukan konversi dari format Autocad (*.dxf) ke basis data (*.sql). Tahapan ini menggunakan dxf converter yang dibuat dengan menggunakan bahasa pemograman Visual Basic. Langkah yang digunakan aplikasi koverter ini adalah membaca file *.dxf dari awal sampai akhir dengan mengenali beberapa kata kunci seperti POLYLINE, VERTEX, TEXT, dan ENDSEC. Kata-kata kunci ini mengandung informasi-informasi mengenai bentuk geometri dari suatu objek. Setelah dibaca, kemudian ditulis kembali dalam format SQL. Format SQL inilah nanti yang akan menjadi data untuk basis data yang sedang dibangun. Gambar 3.10 Aplikasi Konverter dengan menggunakan Visual Basic. Contoh Input masukan data *.dxf data jalan VERTEX 5 94 8 JALAN 10 788240.42017730419 20 9238219.4996079318 30 756.436279296875 0
Gambar 3.10 Aplikasi Koverter dengan Menggunakan Visual Basic
48
Contoh output hasil dalam format *.sql INSERT INTO jalan (the_geom) VALUES (GeomFromEWKT('SRID=1;POLYGON((788235.3142944054 9238211.3602182511 756.436279296875))'));
3.3 Implementasi PgRouting dalam basis data 3D 3.3.1
Aplikasi PgRouting
Pgrouting merupakan fungsi untuk melakukan pencarian lintasan terpendek dalam postgis/postgresql. Pgrouting merupakan bagian dari postlib, dimana postlib merupakan inti aplikasi untuk Location Based Services (LBS) yang bersifat Open Source Software (OSS). Pgrouting mempunyai beberapa algoritma dalam memecahkan masalah mengenai pencarian jalur jalan, diantaranya: 1. Shortest Path Search a) Dijkstra b) A* c) Shooting* Pgrouting menggunakan fungsi yang dibangun dengan menggunakan bahasa C++, yang kemudian di-compile menjadi library khusus yang akan dibaca oleh Postgresql untuk melakukan query. Untuk lebih jelasnya ada pada gambar 3.11
Gambar 3.11 Cara kerja Pgrouting (http://pgrouting.postlbs.org/wiki/WorkshopFOSS4G2007) Fungsi-fungsi yang terdapat dalam Pgrouting telah menjadi satu kesatuan dalam format library (librouting.dll) yang disimpan di tempat peng-installan postgresql. Dalam tugas akhir ini disimpan di “C : \Program Files\PostgreSQL \8.2 \lib
49
\librouting.dll”. Di dalam library ini disimpan algoritma-algoritma pencarian lintasan terpendek antara lain : a. shortest_path fungsi utama pencarian lintasan terpendek dengan menggunakan algoritma Dijkstra. b. shortest_path_astar fungsi utama pencarian lintasan terpendek dengan menggunakan algoritma A*. c. shortest_path_shooting_star fungsi utama pencarian terpendek dengan menggunakan algoritma Shooting*. Di dalam library ini pula, terdapat fungsi untuk pembuatan topologi jaringan yaitu fungsi assign_vertex_id. Fungsi assign_vertex_id ini membuat dua tabel, yaitu tabel kumpulan edge dan tabel kumpulan node. Proses yang dilakukan oleh fungsi assign_vertex_id ini adalah melakukan inisialisasi terhadap semua edge dalam tabel jaringan, yaitu menginisialisasi from node dan to node dengan toleransi tertentu. Toleransi ini berfungsi untuk mengetahui apakah edge tersebut berhubungan atau tidak, apabila dua edge tersebut mempunyai jarak kurang dari toleransi, maka kedua edge tersebut berhubungan, sebaliknya apabila melebihi nilai toleransi, maka kedua edge tersebut tidak mempunyai hubungan. 3.3.2
Memodifikasi fungsi-fungsi Pgrouting
Tahap ini adalah tahapan memodifikasi fungsi pgrouting yang sudah ada untuk dapat membaca data 3D yang telah dibuat. Tahapan-tahapan tersebut adalah (daftar DDL berada pada lampiran A) : 1. Memodifikasi fungsi “assign_vertex_id” Fungsi ini bertujuan untuk pembuatan topologi jaringan yang nantinya dipakai sebagai data inti dalam melakukan query spasial analisis jalur (routing). Adapun scripts yang dirubah adalah EXECUTE 'SELECT addGeometryColumn(''vertices_tmp'', ''the_geom'', '||srid||', ''POINT'', 2)';
Menjadi EXECUTE 'SELECT addGeometryColumn(''vertices_tmp'', ''the_geom'', '||srid||', ''POINT'', 3)';
50
Perubahan yang dilakukan adalah dengan merubah dimensi yang pada awalnya 2D hanya untuk memproses data koordinat XY menjadi 3D untuk koordinat XYZ. 2. Pembuatan fungsi “distance3d” Fungsi ini bertujuan untuk mencari jarak antara dua titik dalam 3D. Fungsi ini sebagai penghitungan jarak untuk pembuatan topologi. Berikut ini scripts perhitungan jarak antara dua titik dalam 3D. DECLARE x1 DOUBLE PRECISION; y1 DOUBLE PRECISION; z1 DOUBLE PRECISION; x2 DOUBLE PRECISION; y2 DOUBLE PRECISION; z2 DOUBLE PRECISION; dist3d DOUBLE PRECISION; BEGIN x1 := x(pnt1); y1 := y(pnt1); z1 := z(pnt1); x2 := x(pnt2); y2 := y(pnt2); z2 := z(pnt2); dist3d := sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1) + (z2-z1)*(z2z1)); RETURN dist3d; END;
3. Modifikasi fungsi “point_to_id” Fungsi ini bertujuan untuk mencari hubungan antar node-node. Apakah node-node saling berhubungan atau tidak sesuai dengan toleransi yang diberikan. distance(the_geom, point) < tolerance;
menjadi distance3d(the_geom, point) < tolerance;
perubahan yang dilakukan adalah dengan merubah fungsi pembacaan jarak (distance) yang asalnya untuk 2D menjadi 3D. 3.3.3
Uji coba perbandingan algoritma
Uji coba perbandingan ketiga algoritma (Dijkstra, A*, dan Shooting*) dilakukan terhadap data yang mempunyai 23216 edge dan 7857 node. Uji coba ini dilakukan untuk mengetahui perbandingan ketiga algoritma tersebut dari banyaknya node terhadap waktu untuk melakukan query.
Dari hasil uji coba tersebut didapat, untuk algoritma Dijkstra dan A*, perbandingan banyaknya node pencarian terhadap waktu hampir sama. Untuk
51
algoritma Shooting* merupakan algoritma yang paling lama dibandingkan dengan algoritma yang lain. Untuk lebih jelasnya ada pada gambar 3.12. 2000 A*
1500
Dijkstra
mili sec
1000
Shooting*
500 0 10
20
30
40
50
60
70
80
97
Node
Gambar 3.12 Perbandingan Algoritma Dijkstra, A*, dan Shooting* 3.3.4
Pembuatan topologi
Tahapan ini menggunakan fungsi-fungsi pgrouting yang sudah dimodifikasi untuk dapat membuat topologi jalur jalan. Adapun langkahnya adalah sebagao berikut : 1. Menambahkan tabel Tabel-tabel tersebut adalah source, target, dan length. Tabel source berisi data point titik awal segmen (from node), tabel target berisikan data point akhir segmen (to node), dan length berisikan data jarak segmen tersebut. Adapun scripts tersebut adalah ALTER TABLE as_kampus ADD COLUMN source integer; ALTER TABLE as_kampus ADD COLUMN target integer; ALTER TABLE as_kampus ADD COLUMN length double precision;
2. Proses topologi jaringan jalur jalan Proses tersebut dengan menggunakan fungsi “assign_vertex_id”. Dalam proses ini tabel-tabel yang dibuat dalam langkah (1) akan terisi. SELECT assign_vertex_id('net_kampus', 0.001, 'the_geom', 'gid'); UPDATE as_kampus SET length = length(the_geom);
3. Membuat index untuk tabel source, target, dan the_geom Tahapan ini bertujuan untuk mempercepat proses dalam melakukan analisis jalur jalan dan proses query lainnya. CREATE INDEX source_idx ON as_kampus(source); CREATE INDEX target_idx ON as_kampus(target);
52
CREATE INDEX geom_idx ON as_kampus USING GIST(the_geom GIST_GEOMETRY_OPS);
4. Menjalankan fungsi “short_path” Dijkstra query Scritpts fungsi short path adalah SELECT * FROM shortest_path('SELECT gid as id, source::integer, target::integer, length::double precision as cost FROM net_kampus', 735,660, false, false);
Hasil query ada pada gambar 3.13.
Gambar 3.13 Hasil Query Shortest Path
3.4 Uji coba desain dan implementasi PgRouting untuk analisis pencarian jalur jalan 3D 3.4.1
Query deskripsi
Tahapan ini bertujuan untuk mendapatkan hasil query yang diinginkan. Untuk tugas akhir ini, query tersebut diharapkan dapat memberikan informasi deskriptif mengenai hasil analisis jalur yang dihasilkan. Seperti jarak antar segmen dan arah belok (kiri atau kanan). Untuk mendapatkan hasil deskriptif tersebut, dilakukan pembuatan fungsi dengan menggunakan bahasa pgsql. Pada gambar 3.14 merupakan diagram alur penentuan deskripsi arah.
53
awal
3300 ≤ X < 300
Fungsi short_path
30 ≤ X < 60 0
0
60 ≤ X < 120
Awal ke akhir
Yes
No
Lurus Kiri Depan
0
Samping Kiri
0
0
Kiri Belakang
0
0
Belakang
120 ≤ X < 150 150 ≤ X < 210
2100 ≤ X < 2400
Kanan Belakang
2400 ≤ X < 3000
Samping Kanan
0
300 ≤ X < 330
0
Kanan Lurus
X=sdt_jur1 – sdt_jur2 Sdt_jur1 = sudut jurusan sebelum akhir
Sdt_jur2 = sudut jurusan tujuan
Gambar 3.14 Diagram Alur Penentuan Deskripsi Arah Dari fungsi short_path didapat query analisis jalur berupa id_vertex, edge_id, dan cost. Hasil query tersebut kemudian akan menjadi variable untuk mendapatkan atribut sudut jurusan masing node awal dan node akhir dari tabel net_kampus. Untuk mendapatkan informasi deskripsi horisontal dari setiap node, dihitung dengan mengambil selisih antara sudut jurusan pada node sebelum dikurangi dengan sudut jurusan pada node tujuan. Besar selisih antara kedua sudut jurusan tersebut akan menjadi variabel untuk menentukan deskripsi arah (belok kiri atau belok kanan) terhadap node tujuan. Pada gambar 3.15 merupakan gambar besaran sudut dan deskripsi arah.
Untuk mendapatkan informasi deskripsi vertikal dari setiap node, dihitung dari perhitungan sudut secara vertikal di setiap node. Sudut vertikal tersebut di dapat dari perhitugan:
, dimana delta H = selisih tinggi antara node akhir – node awal jarak = jarak antara dua node dalam 3D.
54
Besar sudut tersebut akan menjadi variabel untuk menentukan deskripsi arah (menaik atau menurun) terhadap node tujuan. Pada gambar 3.16 merupakan besaran sudut terhadap arah vertikal.
00 3300 Lurus
Kanan Depan
3000
300
Kiri Depan
Samping Kanan
2700
2400
600
Samping Kiri
Kanan Belakang
Kiri Belakang
900
1200
Belakang 210
0
1500 1800
Gambar 3.15 Besaran Selisih Sudut dan Deskripsi Arah
Curam menaik / Curam menurun
Menaik/ menurun
600 - 900 300 - 600 Mendatar
00 - 300
Gambar 3.16 Besaran Arah Vertikal
55
3.4.2
Query dengan menggunakan fungsi shortest path
Query dilakukan untuk mendapatkan seluruh informasi mengenai analisis penelusuran jalur. Informasi-informasi tersebut berupa informasi grafis (koordinat XYZ) dan informasi deskriptif (deskriptif arah tujuan). Secara lengkap informasi yang dihasilkan adalah vertex_id, gid, the_geom, jarak, a_jur, arah, dan deskripsi. Query dilakukan berdasarkan (daftar SQL ada pada lampiran B): 1. Query antar gedung a. dari gedung Labtex IX C ke Labtex III b. dari gedung Labtex III ke Labtex IX C c. dari ruang tamu lantai dasar gedung Labtex III ke Ruang seminar lantai 6 gedung Labtex IX C d. dari ruang laboratorium lantai 4 gedung labtex IX C ke dapur lantai 4 gedung Labtex III e. dari gerbang depan ITB ke ruang sistech lantai 3 gedung Labtex IX C 2. Query dalam gedung a. dari Perpustakaan lantai 6 ke ruang 3105 lantai 1 gedung Labtex IX C b. dari ruang dosen lantai 2 ke Labkom lantai 4 gedung Labtex III 3. Query jarak dekat a. dari Tugu Soekarno ke Plaza Widya b. dari parkiran Aula Timur ke Tugu Soekarno 4. Query jarak jauh a. dari parkiran Aula Timur ke gedung Labtex III b. dari parkiran Aula Barat ke gerbang belakang ITB Gambar 3.17 merupakan contoh untuk analisis pencarian jalur jalan dari gedung Labtek III ke gedung Labtek IXC dengan mempergunakan aplikasi ArcScene dalam menampilkan hasil analisisnya. Kemudian gambar 3.18 merupakan suatu deskripsi dalam bentuk tabel mengenai informasi-informasi hasil analisis jalur terpendek dari gedung Labtek III ke gedung Labtek IXC. Daftar grafis dan deskripsi ada pada lampiran C.
56
Gambar 3.17 Contoh Hasil Pencarian Jalur Jalan (Labtex III ke Labtex IX C)
Gambar 3.18 Contoh Hasil Atribut Pencarian Jalur (Labtex III ke Labtex IX C)
57