bab 3 desain dan implementasi analisis pencarian jalur ... · b. diagram er net kampus node kampus...
TRANSCRIPT
28
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
29
[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
30
Gedung Titik
Ruang Titik
Lantai Titik
Lapangan Titik
Tabel 3.2 Daftar Entitas Garis
No. Entitas Jenis
Jalan kendaraan
bermotor
Garis
Jalan Setapak Garis
Koridor garis
Jalur Lift garis
Tangga garis
3.1.2 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:
31
Tabel 3.3 Tabel entitas-entitas basis data jalur jalan kampus ITB beserta
atributnya
No. Entitas Atribut Objek Primitif
1. Node Kampus a. ID Node Kampus Titik
2. Parkiran a. ID parkiran
b. keterangan
Poligon
3. Taman a. ID taman
b. keterangan
Poligon
4. Gedung a. ID bangunan
b. nama bangunan
Poligon
5. Ruang a. ID ruang
b. nama ruang
Poligon
6. Lapangan a. ID lapangan
b. keterangan
Poligon
7. Lantai a. ID lantai
b. nama lantai
Poligon
8. Net Kampus a. ID edge
b. source (from node)
c. target (to node)
Garis
9. Jalan a. ID jalan
b. nama jalan
Poligon
10. Jalan Setapak a. ID jalan setapak
b. keterangan
Poligon
11. Koridor a. ID koridor
b. keterangan
Poligon
12. Jalur Lift a. ID jalur lift
b. keterangan
Poligon
13. Tangga a. ID tangga
b. keterangan
Poligon
32
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
Node kampusNet kampus
to
from
m
m 1
1
33
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
memiliki Node kampusparkiran
11
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
memiliki Node kampustaman
11
34
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
memiliki Node kampusgedung
11
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
memiliki Node kampusruang
11
c. Tabel Skeleton
i. node_kampus (#gid, id_node)
ii. ruang (#id_ruang, nm_ruang)
35
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
memiliki Node kampuslantai
11
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
net kampusmemilikijalan
11
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.
36
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
net kampusmemilikijalan setapak
11
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
net kampusmemilikikoridor
11
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.
37
iii. Hubungan kedua entitas tersebut adalah satu ke satu dan
berkelas non obligatori dan obligatori.
b. Diagram ER
net kampusmemilikijalur lift
11
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
net kampusmemilikitangga
11
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.
38
2. Diagram ER
lantaigedung memiliki1 m
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
ruanglantai memiliki1 m
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.
39
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)
node kampus
parkiran
taman
gedung
ruang
lantai
lapangan
net kampus jalan
jalan setapak
koridor
jalur lift
tangga
1m
m 1
11
1
1
1
1
1 1 1
1
1
1 1 1
1
1
1
1
1
1
1
m
m
1
1
1
Gambar 3.1 Relasi antara Entitas-entitas
40
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";
41
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
42
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.
Basis Data
Peta Kampus
Titik-titik
ketinggian
(*.shp)
TIN
Query Entitas
(sql)
Konversi *.SQL ke
*.SHP
Pembuatan 3D
shapefile
Konversi 3d
shapefile ke
*.DWG
No
Yes
Dijitasi jalur
jalan
Konversi *.DXF ke
*.SQL
Data Base
3D
KonturKoordinat base
Bangunan dan jalan
Quantum GIS
ArcScene
ArcScene
AutoCad
DXF converter
Gambar 3.2 Skematik Pengumpulan dan Pengolahan Data
43
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)
44
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
45
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.
46
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
47
Gambar 3.8 Pendijitasian Jalur Jalan di Autocad
Gambar 3.9 Hasil Pendijitasian Jalur pada Gedung Labtek IXC
48
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
49
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
50
\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)';
51
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)*(z2-
z1));
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
52
algoritma Shooting* merupakan algoritma yang paling lama dibandingkan dengan
algoritma yang lain. Untuk lebih jelasnya ada pada gambar 3.12.
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);
0
500
1000
1500
2000
10 20 30 40 50 60 70 80 97
A*
Dijkstra
Shooting*
Node
mili
sec
53
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.
54
awal
akhir
Fungsi
short_path
Awal ke
akhir
3300 ≤ X < 300
Sdt_jur1 = sudut jurusan sebelum
Sdt_jur2 = sudut jurusan tujuan
30 ≤ X < 600
600 ≤ X < 1200
3000 ≤ X < 3300
1200 ≤ X < 1500
1500 ≤ X < 2100
2100 ≤ X < 2400
2400 ≤ X < 3000
Lurus
Kiri Depan
Samping Kiri
Kanan Lurus
Kiri Belakang
Belakang
Kanan Belakang
Samping Kanan
Yes
No
X=sdt_jur1 – sdt_jur2
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.
55
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.
Lurus
Samping
Kiri
Samping
Kanan
Belakang
Kiri
Belakang
Kanan
Belakang
Kiri DepanKanan
Depan
00
900
1800
2700
300
2100
2400
3000 60
0
1500
1200
3300
Gambar 3.15 Besaran Selisih Sudut dan Deskripsi Arah
00 - 30
0
300 - 60
0
600 - 90
0
Mendatar
Menaik/
menurun
Curam menaik /
Curam menurun
Gambar 3.16 Besaran Arah Vertikal
56
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.
57
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)