APLIKASI WEB PENCARIAN RUTE ANGKUTAN UMUM
YANG OPTIMAL DI KOTA BANDUNG
IRFAN ARROFI KUSMARA
DEPARTEMEN ILMU KOMPUTER
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM INSTITUT PERTANIAN BOGOR
BOGOR 2016
PERNYATAAN MENGENAI SKRIPSI DAN
SUMBER INFORMASI SERTA PELIMPAHAN HAK CIPTA
Dengan ini saya menyatakan bahwa skripsi berjudul Aplikasi Berbasis Web Pencarian Rute Angkutan Umum yang Optimal di Kota Bandung adalah benar karya saya dengan arahan dari komisi pembimbing dan belum diajukan dalam bentuk apa pun kepada perguruan tinggi mana pun. Sumber informasi yang berasal atau dikutip dari karya yang diterbitkan maupun tidak diterbitkan dari penulis lain telah disebutkan dalam teks dan dicantumkan dalam Daftar Pustaka di bagian akhir skripsi ini.
Dengan ini saya melimpahkan hak cipta dari karya tulis saya kepada Institut Pertanian Bogor.
Bogor, Agustus 2016
Irfan Arrofi Kusmara
ABSTRAK
IRFAN ARROFI KUSMARA. Aplikasi Web Pencarian Rute Angkutan Umum yang Optimal di Kota Bandung. Dibimbing oleh AURIZA RAHMAD AKBAR.
Angkot merupakan moda transportasi yang banyak dimanfaatkan masyarakat dalam memenuhi kebutuhan mobilitasnya sehari-hari. Kota Bandung memiliki banyak angkot dengan rute yang berbeda, karena itu sulit untuk memilih angkot bagi seseorang yang tidak mengenal rute angkot di kota Bandung. Penelitian ini bertujuan untuk membangun aplikasi web angkutan kota Bandung dengan menggunakan algoritme Dijkstra untuk pencarian rute terpendeknya. Data yang digunakan merupakan informasi umum angkot resmi yang terdaftar di DLLAJ kota Bandung. Pembuatan sistem informasi geografis ini dengan menggunakan bahasa pemrograman PHP, PgRouting dan PostgresSQL untuk merancang sistem database sebagai penyimpanan data aplikasi. Hasil dari pengembangan aplikasi web ini menampilkan rute angkot berdasarkan tempat asal dan tujuan yang dimasukkan pengguna.
Kata kunci: angkot, Bandung, Dijkstra, pgRouting
ABSTRACT
IRFAN ARROFI KUSMARA. Web Application for Optimal Public Transportation Route in Bandung. Supervised by AURIZA RAHMAD AKBAR.
Angkot is a type of transportation that many people used for their everyday community needs. Bandung city has many angkot with different route. Therefore, it’s difficult to choose an angkot for someone who does not know the angkot route in Bandung. The purpose of this research was to develop a web-based angkot application in Bandung using Dijkstra algorithm to find the shortest route. This research used the official angkot data obtained from DLLAJ Bandung. This geographic information system was developed using PHP programming language, PgRouting, and PostgresSQL. This web application can show the angkot route based on the starting point and the destination point of user input.
Skripsi
sebagai salah satu syarat untuk memperoleh gelar Sarjana Komputer
pada
Departemen Ilmu Komputer
APLIKASI WEB PENCARIAN RUTE ANGKUTAN UMUM
YANG OPTIMAL DI KOTA BANDUNG
DEPARTEMEN ILMU KOMPUTER
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM INSTITUT PERTANIAN BOGOR
BOGOR 2016
Penguji:
1 Dr Ir Sri Wahjuni, MT
Judul Skripsi : Aplikasi Web Pencarian Rute Angkutan Umum yang Optimal di Kota Bandung
Nama : Irfan Arrofi Kusmara NIM : G64120016
Disetujui oleh
Auriza Rahmad Akbar, SKomp MKom Pembimbing
Diketahui oleh
Dr Ir Agus Buono, MSi MKom Ketua Departemen
PRAKATA
Puji dan syukur penulis panjatkan kepada Allah subhanahu wa ta’ala atas segala karunia-Nya sehingga karya ilmiah ini berhasil diselesaikan. Tema yang dipilih dalam penelitian yang dilaksanakan sejak bulan Desember 2015 ini ialah sistem informasi dengan judul Aplikasi Web Pencarian Rute Angkutan Umum yang Optimal di Kota Bandung.
Penulis menyadari bahwa dalam menyelesaikan skripsi ini banyak kendala yang dihadapi. Oleh Karena itu, penulis ingin mengucapkan terima kasih kepada Bapak Agus Budiman selaku ayah dan Ibu Nina Marlina selaku ibu serta seluruh keluarga yang telah memberikan dukungan, doa, perhatian, kasih sayang selama penulis menyelesaikan skripsi ini. Terima kasih penulis ucapkan kepada Bapak Auriza Rahmad Akbar, SKomp MKom selaku pembimbing yang telah banyak memberi saran dan bimbingan serta meluangkan waktu untuk membantu penulis dalam penelitian dan penulisan skripsi serta kepada Ibu Dr Ir Sri Wahjuni, MT dan Ibu Dr Imas Sukaesih Sitanggang, SSi MKom selaku dosen penguji atas masukan dan arahannya dalam penyempurnaan karya ilmiah ini. Ucapan terima kasih juga penulis sampaikan kepada teman-teman terdekat saya yang telah memberikan semangat, menemani, dan membantu selama penyelesaian skripsi ini. Terima kasih tak lupa penulis sampaikan kepada seluruh teman-teman Ilmu Komputer IPB angkatan 49 yang telah bersama-sama menjalani perkuliahan selama 3 tahun. Semoga karya ilmiah ini bermanfaat.
Bogor, Agustus 2016
DAFTAR ISI
DAFTAR TABEL vii
DAFTAR GAMBAR vii
DAFTAR LAMPIRAN vii
PENDAHULUAN 1
Latar Belakang 1
Perumusan Masalah 2
Tujuan Penelitian 2
Manfaat Penelitian 2
Ruang Lingkup Penelitian 2
TINJAUAN PUSTAKA 2 Algoritme Dijkstra 3 pgRouting 3 OpenLayers 3 GeoJSON 4 METODE PENELITIAN 4
Penentuan Wilayah Penelitian 5
Pengumpulan Data 5
Pembangunan Topologi Rute Jalan 5
Pencarian Rute Terpendek 5
Visualisasi Rute Terpendek 6
Peralatan Penelitian 6
HASIL DAN PEMBAHASAN 6
Penentuan Wilayah Penelitian 6
Pengumpulan Data 7
Pembangunan Topologi Rute Jalan 9
Pencarian Rute Terpendek 10
Visualisasi Rute Terpendek 11
SIMPULAN DAN SARAN 11
Simpulan 13
DAFTAR PUSTAKA 13
LAMPIRAN 15
DAFTAR TABEL
1 Atribut tabel tempat 9
2 Atribut tabel rutebandung 9
3 Atribut tabel rutebandung_vertices_pgr 9
4 Rute dari tempat id 132 ke 43 10
DAFTAR GAMBAR
1 Tahapan penelitian 4
2 Peta Kota Bandung 7
3 Peta jalan Kota Bandung 7
4 Peta rute angkot 8
5 Point of interest 8
6 Visualisasi pada web dengan menggunakan library OpenLayers 13
DAFTAR LAMPIRAN
1 Trayek angkutan kota yang ada di kota Bandung 15
PENDAHULUAN
Latar Belakang
Angkutan umum merupakan sarana angkutan untuk masyarakat kecil dan menengah supaya dapat melaksanakan kegiatannya sesuai dengan tugas dan fungsinya dalam masyarakat. Warpani (1990), menyatakan bahwa angkutan umum penumpang adalah angkutan penumpang yang dilakukan dengan sistem sewa atau membayar. Masalah yang ada pada area publik di Asia dan di negara berkembang lainnya adalah bagaimana menangani permintaan yang terus meningkat untuk transportasi publik (Munawar 2007).
Kota Bandung merupakan ibukota sekaligus kota metropolitan terbesar di Provinsi Jawa Barat. Namun dengan banyaknya predikat tersebut, informasi akan sarana transportasi yang ada di Kota Bandung masih terbatas. Hal ini pun menjadi kendala, khususnya bagi warga Bandung atau pendatang yang tidak memiliki kendaraan pribadi tetapi ingin menuju ke lokasi tertentu tanpa mengetahui rute transportasi umum seperti angkutan kota.
Saat ini pencarian jalur transportasi suatu lokasi dilakukan dengan cara berselancar di internet, yaitu membuka Google Maps, memasukkan lokasi asal, kemudian memasukkan lokasi tujuan. Google Maps telah menyediakan alternatif menuju lokasi pencarian menggunakan mobil, bus, berjalan kaki, dan menggunakan sepeda, tetapi untuk kondisi pengguna yang menggunakan transportasi umum seperti angkot, Google Maps belum dapat menampilkan jawaban dari kebutuhan pengguna tersebut karena hanya menampilkan lokasi halte angkot. Permasalahan ini seharusnya dapat diatasi agar waktu yang diperlukan pengguna dalam melakukan pencarian posisi serta rute angkutan Kota Bandung dapat lebih efisien.
Berdasarkan latar belakang di atas, pada tugas akhir ini dibuat sebuah aplikasi berbasis web untuk memberikan solusi yaitu pencarian rute angkutan umum. Dengan demikian aplikasi berbasis web ini akan menampilkan semua rute angkutan kota di Bandung. Pengguna juga dapat menvisualisasi dan menganalis suatu area studi berdasarkan lokasi-lokasi geografis tertentu, misalnya dalam menentukan lokasi rute angkutan kota dan menentukan angkutan kota apa yang harus mereka naiki. Lokasi ini dapat dianalis dengan memperhatikan dan memperhitungkan posisi rute angkutan kota yang berada di Bandung.
Perumusan Masalah
Permasalahan yang timbul pada pembuatan tugas akhir ini dirumuskan sebagai berikut:
1 Bagaimana membangun aplikasi yang berbasis web berdasarkan data yang di dapat sehingga dapat memberikan informasi mengenai rute angkutan kota, khususnya di Kota Bandung.
2 Bagaimana pengguna dapat memilih angkutan kota yang tepat untuk sampai ke tujuan
3 Bagaimana mencari rute angkutan kota berdasarkan posisi awal dan tujuan si pengguna.
4 Bagaimana menampilkan rute angkutan kota terpendek berdasarkan jarak yang telah ditempuh.
2
Tujuan Penelitian
Adapun tujuan dari proyek akhir ini berdasarkan rumusan masalah yang telah dijabarkan:
1 Memberikan informasi rute angkutan kota Bandung dari trayek awal menuju trayek akhir dengan bantuan peta visual OpenLayers
2 Memberikan informasi rute angkutan kota Bandung yang akan dinaiki pengguna untuk sampai ke tujuan berdasarkan bobot jarak yang ditempuh dari posisi awal hingga posisi akhir.
Manfaat Penelitian
Hasil dari penelitian berupa aplikasi berbasis web ini dapat dikembangkan dan dimanfaatkan secara lebih lanjut oleh berbagai pihak untuk diterapkan di kota lainnya. Dari sisi pengguna diharapkan dapat memudahkan pengguna untuk melakukan perjalanan menuju ke tempat tujuan dengan menaiki angkutan kota yang tepat terutama pendatang atau wisatawan.
Ruang Lingkup Penelitian
Adapun batasan masalah dalam proyek akhir ini di antaranya adalah: Daerah yang menjadi objek pembuatan tugas akhir ini adalah Kota Bandung. Jenis angkutan yang digunakan adalah angkutan umum meliputi angkutan kota
dan tempat tujuan dibatasi hanya pada hotel, tempat belanja, terminal, bandara, dan rumah makan.
Data angkutan kota yang dipakai adalah angkutan kota yang terdaftar di DLLAJ kota Bandung dan diasumsikan semua rute dua arah.
Pembobotan yang dipakai hanya jarak dan pgRouting dipakai untuk implementasi algoritme Dijkstra.
TINJAUAN PUSTAKA
Algoritme Dijkstra
Algoritme Dijkstra merupakan salah satu varian dari algoritme greedy, yaitu salah satu algoritme yang popular dalam pemecahan permasalahan yang terkait dengan optimasi. Algoritme greedy sendiri memiliki prinsip mengambil apa saja yang bisa diambil saat ini dan keputusan yang telah diambil pada setiap langkah tidak akan bisa diulang kembali. Intinya algoritme greedy berupaya untuk mengambil pilihan nilai optimum lokal pada setiap langkah dan berharap agar nilai optimum lokal ini dapat membantu mendapatkan nilai optimum global (Cormen et al. 2009). Penggunaan strategi greedy pada algoritme Dijkstra terjadi pada setiap langkah, yaitu dengan cara memilih biaya paling minimum dari sebuah node awal atau node berlabel permanen ke node berlabel sementara. Ide dasar dari algoritma Dijkstra adalah fakta jika R adalah sebuah node yang
3 termasuk pada path terpendek dari node P menuju node Q, fakta tersebut juga berlaku untuk path terpendek dari node P menuju node R, terdapat sebuah node yang termasuk pada path terpendek dari node P menuju node R, fakta tersebut berlanjut sampai node yang terhubung langsung dengan node P. Sehingga solusi untuk pencarian path terpendek dari node P menuju node Q adalah menyambungkan node P dengan node-node lain menggunakan path yang terpendek dengan tujuan menambah jangkauan sampai terjangkaunya node Q (Dijkstra 1959). Berikut adalah algoritme Dijkstra dalam bentuk pseudocode (Cormen et al. 2009).
function Dijkstra(Graph, source): dist[source] := 0
for each vertex v in Graph: if v ≠ source dist[v] := infinity previous[v] := undefined end if add v to Q end for
while Q is not empty:
u := vertex in Q with min dist[u] for each neighbor v of u:
alt := dist[u] + length(u, v) if alt < dist[v]: dist[v] := alt previous[v] := u end if end for end while
return dist[], previous[] end function
pgRouting
pgRouting merupakan proyek open source dari PostLBS untuk menambahkan fungsi routing (perhitungan jarak terpendek dari data polyline) pada PostGIS berdasarkan bahasa prosedural PL/PGSQL. PostLBS memperkuat pgRouting ini dengan metode Dijkstra, A*, traveling salesman problem (TSP) dan
driving distance calculation (DDC) untuk membedakan jalur yang dapat ditempuh
oleh kendaraan maupun jalan kaki, sama seperti opsi yang terdapat pada routing Google Maps/Earth (Takubo et al. 2011).
OpenLayers
OpenLayers adalah library JavaScript untuk menampilkan data peta di berbagai web browser tanpa server side dependencies. Library yang ada memberikan integrasi data dari sumber dari beraneka ragam sumber dan menyediakan API yang friendly dengan hasil yang baik dan responsif. OpenLayers mengimplementasikan JavaScript API untuk membangun aplikasi geografis berbasis web yang mirip dengan Google Maps. OpenLayers bersifat free
4
GeoJSON
GeoJSON adalah format untuk encoding berbagai struktur data geografis. Sebuah objek GeoJSON mungkin merupakan geometri, fitur, atau koleksi fitur. GeoJSON mendukung jenis geometri berikut: Point, LineString, Polygon, MultiPoint, MultiLineString, MultiPolygon, dan GeometryCollection. Fitur di GeoJSON berisi objek geometri dan sifat tambahan, dan koleksi fitur mewakili daftar fitur (Butler et al. 2008).
METODE PENELITIAN
Metode yang digunakan diadopsi dari metode penelitian yang digunakan Aditama (2014) dalam pengimplementasian algoritme Dijkstra untuk menentukan jalur terpendek. Pada penelitian ini akan dilakukan penerapan algoritme Dijkstra untuk menentukan rute yang optimal berdasarkan total jarak tempuh terpendek dari berbagai lokasi yang mengaksesnya. Tahapan penelitian ini disajikan pada Gambar 1.
Gambar 1 Tahapan penelitian
Mulai Penentuan wilayah penelitian
Pengumpulan data
Pembangunan topologi rute jalan
Pencarian rute terpendek
Visualisasi rute terpendek
5
Penentuan Wilayah Penelitian
Wilayah penelitian merupakan area yang akan dijadikan untuk mengimplementasikan algoritme Dijkstra. Wilayah penelitian dipilih dengan pertimbangan seberapa besar hasil penelitian ini dapat dimanfaatkan. Dengan mempertimbangkan banyaknya angkutan kota di kota Bandung dan seringnya dikunjungi oleh wisatawan, maka wilayah penelotian dipilih di kota Bandung.
Pengumpulan Data
Jenis data jaringan jalan yang digunakan dalam penelitian ini berupa data sekunder. Data sekunder adalah data yang diperoleh melalui data yang telah diteliti dan dikumpulkan oleh pihak lain yang berkaitan dengan permasalahan penelitian. Data pada penelitian ini didapat dari OpenStreetMaps. Data berupa tempat dan jalur yang menghubungkan antar-titik yang terdapat di wilayah penelitian yang disediakan OpenStreetMaps dalam bentuk peta.
Pengumpulan data pada penelitian ini diambil dari OpenStreetMaps. Data yang diambil berupa tempat, jalur, dan panjang setiap jalur yang menghubungkan satu tempat ke tempat lain. Data panjang setiap jalur akan dijadikan sebagai bobot pada arc dengan menginisialisasi nilai panjang ke setiap arc di graf. Pengumpulan data tidak memperhitungkan waktu tempuh yang diperlukan untuk menempuh satu jalur. Data angkutan kota yang dipakai adalah angkot yang terdaftar di DLLAJ kota Bandung. Sedangkan data rute angkutan kota menggunakan data primer.
Pembangunan Topologi Rute Jalan
Proses pembangunan topologi rute jalan dilakukan dengan beberapa langkah untuk membangun topologi jaringan. Topologi jaringan yang dibangun berdasarkan informasi geometri digunakan fungsi pgr_createtopology dan untuk menghubungkan suatu edge dilakukan penentuan node awal dan node akhir. Informasi jarak dari node awal ke node akhir dilakukan dengan menambahkan kolom bobot (cost). Proses selanjutnya menentukan point of interest vertex terdekat sebagai titik utama terdekat dari sebuah tempat sebelum menentukan tujuan rute jalan.
Pencarian Rute Terpendek
Pencarian rute terpendek ini menggunakan algoritme Dijkstra dengan fungsi pgr_dijkstra. Pencarian rute terpendek dilakukan dengan menentukan node awal dan node akhir yang bobot jumlah nilai jarak tempuhnya memiliki nilai paling kecil. Setiap node akhir akan memiliki nilai jarak tempuh dalam satuan meter dari semua node awal.
6
Visualisasi Rute Terpendek
Pada tahap ini dilakukan implementasi hasil penelitian yang berupa fungsi rute terpendek. Tujuan dari tahapan ini adalah menghasilkan sistem yang dapat digunakan untuk memanfaatkan hasil penelitian. Implementasi sistem dilakukan dalam lingkungan pengembangan aplikasi menggunakan bahasa pemrograman PHP, format data GeoJSON, dan library OpenLayers.
Sistem yang dikembangkan berbentuk aplikasi web yang menyediakan peta wilayah penelitian dan fungsi untuk menentukan rute terpendek. Pengguna aplikasi dapat menentukan lokasi kandidat dan lokasi akses pada peta, kemudian sistem akan menentukan rute terpendek.
Peralatan Penelitian
Perangkat keras yang digunakan untuk mengembangkan sistem ini yaitu laptop dengan spesifikasi:
Processor Intel Core i5 RAM 4 GB
Hardisk 400 GB
Perangkat lunak yang digunakan yaitu: Sistem operasi Windows 10
PostgreSQL sebagai tempat penyimpanan data geografis Library pgRouting untuk mencari rute terpendek pada graf
Bahasa pemrograman PHP menggunakan framework CodeIgniter Sublime sebagai text editor
XAMPP QuantumGIS
HASIL DAN PEMBAHASAN
Penentuan Wilayah Penelitian
Wilayah yang ditentukan adalah Kota Bandung sebagai penerapan algoritme dijkstra. Wilayah penelitian dipilih pada level pemerintahan daerah tingkat 2 dan dapat dimanfaatkan dan dikembangkan untuk wilayah lainnya. Penentuan wilayah bisa dilihat pada Gambar 2.
7
Gambar 2 Peta Kota Bandung (sumber: OpenStreetMap)
Gambar 3 Peta jalan Kota Bandung (sumber: OpenStreetMap) Pengumpulan Data
Pengambilan data merupakan data primer dan sekunder. Data primer berupa trayek angkutan umum yang diambil secara langsung dengan menaiki angkutan kota satu per satu dan menanyakan rute yang dilewati kepada supir angkutan kota yang bersangkutan. Angkutan kota di Kota Bandung terdapat 35 trayek angkutan kota seperti dapat dilihat pada Lampiran 1. Sedangkan data sekunder berupa peta semua rute Kota Bandung yang diambil dari OpenStreetMap seperti terlihat pada Gambar 3. Setelah data peta didapat dari OpenStreetMap lalu dilakukan praproses data di QuantumGIS dengan menghapus rute yang tidak dilewati angkot sehingga data peta hanya menampilkan rute yang dilewati oleh angkot, bias dilihat pada Gambar 4. Untuk pengambilan data tempat-tempat yang berada di Kota Bandung seperti tempat makan, tempat berbelanja, rumah sakit, tempat bersejarah, dan lain-lain, didapat dari OpenStreetMap pada point of interest seperti pada Gambar 5 .
Batas kota Bandung
8
Gambar 4 Peta rute angkot
Gambar 5 Point of interest
Data peta rute angkot pada Gambar 4 yang didapat disimpan ke tabel rutebandung . Data point of interest pada Gambar 5 Kota Bandung disimpan ke tabel tempat yang berisi atribut gid, name, type, geom, dan id_vertex. Atribut tabel tempat bisa dilihat pada Tabel 1. Pada tabel rutebandung terdapat atribut gid, name, angkot, geom, source, target, dan cost. Untuk atribut angkot pada tabel rutebandung ditambahkan secara manual. Atribut rutebandung bisa dilihat pada Tabel 2.
Tabel 1 Atribut tabel tempat
Field Tipe data Keterangan
Gid Serial Id tempat
Name Character varying(80) Nama tempat Type Character varying(80) Jenis tempat Geom
Id_vertex
Geometry(POINT,4326) Integer
Geometri tempat
Titik jalan terdekat dari ruas jalan (foreign key dari rutebandung_vertices_pgr.id) Batas kota Bandung
9 Tabel 2 Atribut tabel rutebandung
Field Tipe data Keterangan
Gid Serial Id jalan
Name Character varying(80) Nama jalan Angkot Character varying(80) Nomor angkot
Geom Geometry Geometri jalan
Source Integer Titik asal
Target Integer Titik tujuan
Cost Double precision Jarak titik asal ke titik tujuan
Tabel 3 Atribut tabel rutebandung_vertices_pgr
Field Tipe data Keterangan
Id Bigserial Id vertex jalan
The_geom Geometry Geometri vertex jalan
Pembangunan Topologi Rute Jalan
Dengan menggunakan fungsi routing geospasial pada tabel rutebandung dibuat node awal dan node akhir. Fungsi node awal dan node akhir sebagai penghubung edge. Setelah itu membuat topologi jaringan berdasarkan informasi geometri dengan menggunakan fungsi pgr_createtopology. Node awal, node akhir, dan topologi pada tabel rutebandung di PostgresSQL dibuat dengan menggunakan query SQL berikut.
ALTER TABLE rutebandung ADD COLUMN source INTEGER; ALTER TABLE rutebandung ADD COLUMN target INTEGER;
SELECT pgr_createtopology(‘rutebandung', 0.000001, 'geom', 'gid');
Node awal (source) dan node akhir (target) telah ditambahkan pada tabel
rutebandung. Kemudian, hasil dari pembuatan topologi jaringan jalan disimpan ke sebuah tabel baru yang bernama rutebandung_vertices_pgr yang bisa dilihat pada Tabel 3. Tahap selanjutnya menambahkan kolom bobot (cost) yaitu jarak dari node awal ke node akhir. Fungsi ST_Length digunakan untuk menghitung panjang jalan. Agar panjang yang dihasilkan memiliki satuan meter, sistem referensi geografis diubah dari WGS 84 menjadi UTM zona 48S dengan fungsi ST_Transform. Berikut query SQL untuk menambahkan kolom bobot dan memperbarui bobot di PostgreSQL.
ALTER TABLE rutebandung ADD COLUMN cost DOUBLE PRECISION;
UPDATE rutebandung SET cost = ST_Length(ST_Transform(geom,32748)); Pada tabel tempat ditambahkan kolom id_vertex yang berisi id node jalan terdekat dari tabel rutebandung_vertices_pgr. Kolom id_vertex merupakan titik jalan terdekat dari id tempat. Pada saat pengguna memasukan titik asal, maka pencarian rute dimulai dari titik awal/akhir jalan yang terdekat dengan titik asal tersebut. Berikut adalah query SQL untuk menambahkan kolom id_vertex yang mencari titik ruas jalan terdekat dari titik tabel tempat.
10
UPDATE tempat SET id_vertex = (
SELECT id FROM tempat as t, rutebandung_vertices_pgr as r
WHERE t.gid = tempat.gid
ORDER BY st_distance_sphere(p.geom, r.the_geom) LIMIT 1
);
Pencarian Rute Terpendek
Setelah topologi jaringan jalan terbentuk, barulah bisa diterapkan fungsi Dijkstra untuk mencari rute terpendek. Pencarian rute terpendek ini menggunakan fungsi pgr_dijkstra dari pgRouting. Fungsi pgr_dijkstra memiliki 3 parameter, yaitu SQL untuk tabel edge, id titik awal, dan dan id titik akhir. Berikut contoh
query SQL untuk mencari rute terpendek dari tempat id 132 ke 43. Di sini
ditampilkan juga jarak dan nomor angkot yang melewati setiap ruas rute jalan. SELECT seq, id2 as id, name, rutebandung.cost as dist_m, angkot FROM pgr_dijkstra(
'SELECT gid AS id, source, target, cost FROM rutebandung', (SELECT id_vertex FROM tempat WHERE gid = 132),
(SELECT id_vertex FROM tempat WHERE gid = 43) ) LEFT JOIN rutebandung ON gid = id2;
Hasil pencarian di atas ditampilkan pada Tabel 4. Kolom id merupakan id ruas jalan yang akan dilewati untuk sampai ke node akhir. Kolom dist_m merupakan jarak ruas jalan dalam satuan meter. Kolom angkot merupakan angkutan kota apa saja yang melewati ruas jalan tersebut. Jika sudah sampai tujuan, maka id ruas jalan bernilai -1.
Tabel 4 Rute dari tempat id 132 ke 43
Seq Nama Id Dist_m Angkot
0 Jalan Aceh 1164 245 11 1 Jalan Lombok 1166 298 11,24 2 Jalan Belitung 1071 91 13,28 3 Jalan Belitung 1045 155 27,28 4 Jalan Belitung 671 196 5,7,27,28 5 Jalan Belitung 593 159 5,7,9,27,28 6 Jalan Sumatra 1040 25 5,9 7 Jalan Sumatra 592 252 5,9,27 8 Jalan Sumatra 568 384 5,9,27 9 Jalan Tamblong 562 39 5,9 10 Jalan Tamblong 566 12 5,9 11 Jalan Tamblong 12 391 5,9,20
12 Jalan Lengkong Besar 572 144 5,9,20
13 Jalan Dalem Kaum 570 349 3,12
14 Jalan Dalem Kaum 510 29 3,12
15 Jalan Dalem Kaum 1313 93 3,12
16 Jalan Kapatihan 245 156 7
11 Visualisasi Rute Terpendek
Rute hasil query divisualisasikan pada web dengan menggunakan library OpenLayers dengan format masukan GeoJSON. OpenLayers berfungsi untuk menampilkan peta Kota Bandung pada web, bisa dilihat pada Lampiran 2 kode PHP OpenLayers. Sebuah objek GeoJSON dengan tipe FeatureCollection memiliki satu anggota yaitu features yang mempunyai dua parameter properties dan geometry. Sebuah objek GeoJSON dengan tipe GeometryCollection merupakan objek geometri yang berfungsi menyimpan objek-objek geometri berupa sebuah array. Berikut adalah request GeoJSON yang digunakan untuk menampilkan hasil GeoJSON dari 90 Gourmet (id: 132) menuju Alun-alun (id: 43).
http://localhost/angkot/geojson.php?from=132&to=43
Untuk melayani request data GeoJSON seperti di atas, pada server dibuat skrip PHP dengan nama geojson.php. Skrip ini bertugas memanggil query
database PostgreSQL yang berisi rute terpendek dari parameter id tempat asal
(from) dan tujuan (to) yang diberikan. Hasil query dikembalikan dalam format GeoJSON dengan bantuan fungsi ST_AsGeoJSON dari PostGIS. Namun, format tersebut belum lengkap, sehingga harus ditambah header dan footer agar menjadi
file GeoJSON yang valid. Untuk menguji kevalidan file GeoJSON yang
dihasilkan, digunakan aplikasi web GeoJSONLint. Kode PHP untuk skrip ini dapat dilihat sebagai berikut.
$result = pg_query(
"SELECT ST_AsGeoJSON(geom, 15, 0) FROM pgr_dijkstra(
'SELECT gid AS id, source, target, cost FROM rutebandung',
(SELECT id_vertex FROM ujicoba WHERE gid = '".$_GET['from']."'), (SELECT id_vertex FROM ujicoba WHERE gid = '".$_GET['to']."') ) LEFT JOIN rutebandung ON gid = id2;");
echo '{ "type": "FeatureCollection", "features": [ {"geometry": { "type": "GeometryCollection", "geometries": ['; $row = pg_fetch_array($result); if ($row[0]) echo $row[0];
while ($row = pg_fetch_array($result)) if ($row[0]) echo ",\n" . $row[0]; echo '] }, "type": "Feature", "properties": {}} ] }' ?>
12
Hasil request berupa file dalam format GeoJSON berupa objek FeatureCollection yang terdiri atas rangkaian rute ruas jalan dengan tipe data MultiLineString. Berikut adalah hasil rute terpendek dari 90 Gourmet (id: 132) menuju Alun-alun (id: 43) dalam format GeoJSON.
{ "type": "FeatureCollection", "features": [ { "geometry": { "type": "GeometryCollection", "geometries": [ { "type": "MultiLineString", "coordinates": [[[107.6190307,6.9088786], [107.6209519,-6.9093262], [107.6210714,-6.9093075], [107.6211611,-6.9092182]]]}, { "type": "MultiLineString", "coordinates":[[[107.6183985,-6.9115056], [107.6190307,-6.9088786]]]}, ... ] }, "type": "Feature", "properties": {} } ] }
Berikut adalah potongan kode JavaScript dengan menggunakan library OpenLayers untuk menambahkan layer vektor berupa rute terpendek dalam format GeoJSON. Hasil visualisasinya, misal dari 90 Gourmet (id:132) menuju Alun-alun (id: 43) dapat dilihat pada Gambar 6.
map.addLayer(new OpenLayers.Layer.Vector( "Rute angkot",
{ projection: new OpenLayers.Projection("EPSG:4326"), strategies: [new OpenLayers.Strategy.Fixed()], protocol: new OpenLayers.Protocol.HTTP({
url: "http://localhost/geojson.php?from=" + from + "&to=" + to, format: new OpenLayers.Format.GeoJSON()})}));
13
Gambar 6 Visualisasi pada web dengan menggunakan library OpenLayers
SIMPULAN DAN SARAN
Simpulan
Penelitian ini menghasilkan sistem navigasi angkot kota Bandung dengan hasil berupa peta dengan rute terpendek dan informasi angkutan kota yang dapat dinaiki pengguna untuk sampai tujuannya. Hasil tersebut menunjukkan bahwa algoritme Dijkstra pada pgRouting berhasil dimanfaatkan dengan baik untuk membuat sistem navigasi yang mudah digunakan oleh pengguna.
Saran
Terdapat beberapa hal yang perlu diperbaiki pada penelitian ini yaitu:
1 Desain antarmuka untuk pengguna smartphone dan menambahkan fitur posisi saat ini menggunakan bantuan GPS.
2 Memperhatikan kondisi real jalan, terutama jalan searah.
3 Memberikan rekomendasi rangkaian angkot yang harus dinaiki sampai tujuan.
DAFTAR PUSTAKA
Aditama R. 2014. Penentuan lokasi ideal berdasarkan total jarak tempuh terpendek dari berbagai lokasi menggunakan algoritme Dijkstra [skripsi]. Bogor (ID): IPB.
Butler H, Daly M, Doyle A, Gillies S, Schaub, Schmidt C. 2008. The GeoJSON format specification [internet]. [diunduh 2016 Jul 6]. Tersedia pada http://geojson.org/geojson-spec.html
14
Ed ke-3. Massachusetts (US): MIT Press.
Dijkstra EW. 1959. A note on two problems in connexion with graphs.
Numerische Mathematik. 1 : 269–271
Munawar A. 2007. Public transport reform in Indonesia, a case study in the city of Yogyakarta. International Journal of Social, Behavioral, Educational,
Economic, Business and Industrial Engineering. 1:77-82.
OpenLayers. 2016. A high-performance, feature-packed library for all your mapping needs [internet]. [diunduh 2016 Mei 19]. Tersedia pada http://dev.openlayers.org/docs/files/OpenLayers/Format/GeoJSON-js.html OpenStreetMap. 2016. OpenStreetMap relation Indonesia [internet]. [diunduh
2016 Mei 19]. Tersedia pada https://www.openstreetmap.org/relation/ 304751
Takubo A, Patrushev A, Hossain A, Gonzalez C, Kastl D, Potts D, Techer D, Miyawaki E, Thurkow F, Junod F, et al. 2011. Create a network topology [internet]. [diunduh 2015 Des 19]. Tersedia pada http://workshop. pgrouting.org /chapters/topology.html.
15 Lampiran 1 Trayek angkutan kota yang ada di Kota Bandung
Nomor angkot Trayek angkot
1 Ledeng – Cicaheum
2 Cisitu – Tegalega
3 Dago – Stasiun Hall
4 Dago – Abdul Muis
5 Ciheumbelit – Stasiun Hall
6 Stasiun Hall – Gede Bage
7 Stasiun Hall – Sarijadi
8 Ledeng – Abdul Muis
9 Ledeng – Margahayu
10 Abdul Muis – Cicaheum
11 Elang – Cicadas
12 Riung Bandung – Dago
13 Abdul Muis – Elang
14 Karang Sentra – Cibaduyut via Abdul Muis 15 Cibaduyut – Karang Sentra via Abdul Muis
16 Cikudapateuh – Ciroyom
17 Cicaheum – Ciroyom
18 Sadang Serang – Caringin
19 Sederhana – Cipagalo via Abdul Muis 20 Sederhana via Abdul Muis - Cipagalo
21 Ciroyom – Sarijadi
22 Stasiun Hall – Gunung Batu
23 Abdul Muis – Cicaheum via Binong 24 Stasiun Hall – Sadang Serang
25 Cijerah – Sederhana
26 Dago – Caringin
27 Dipatiukur – Panghegar
28 Antapani – Coroyom
29 Cibaduyut – Cicaheum
30 Bumi Panyileukan – RS Boro
31 Abdul Muis –Mengger
32 Gasibu – Ciwastra
33 Ciroyom – Bumiasri
34 Cijerah – Ciwastra
16
Lampiran 2 Kode OpenLayer peta Kota Bandung <script>
var map, layer;
var from = <?php echo $from; ?>; var to = <?php echo $to; ?>;
var geog = new OpenLayers.Projection("EPSG:4326"); var merc = new OpenLayers.Projection("EPSG:900913"); var style = new OpenLayers.StyleMap({
"default": new OpenLayers.Style({
fillColor: "#FF0000", strokeColor: "#FF0000"})});
map = new OpenLayers.Map('mapdiv', { controls: [ new OpenLayers.Control.Navigation(), new OpenLayers.Control.PanZoomBar(), new OpenLayers.Control.LayerSwitcher(), new OpenLayers.Control.MousePosition()], projection: merc}); map.addLayer(new OpenLayers.Layer.OSM());
map.addLayer(new OpenLayers.Layer.Vector("Rute angkot", { projection: geog,
protocol: new OpenLayers.Protocol.HTTP({
url: "http://localhost/geojson.php?from=" + from +"&to=" + to, format: new OpenLayers.Format.GeoJSON()}),
strategies: [new OpenLayers.Strategy.Fixed()], styleMap: style}));
var center = new OpenLayers.LonLat( 107.609810 ,-6.914744); var zoom = 13;
17
RIWAYAT HIDUP
Penulis dilahirkan di kota Bogor Provinsi Jawa Barat pada tanggal 26 Juni 1994. Penulis adalah anak tunggal, anak dari pasangan Agus Kusmara dan Nina Marlina. Penulis menempuh pendidikan Sekolah Menengah Atas di SMA Negeri 109 Jakarta pada tahun 2009 hingga 2012. Kemudian penulis melanjutkan pendidikan perguruan tinggi di Institut Pertanian Bogor, Fakultas Matematika dan Ilmu Pengetahuan Alam, Departemen Ilmu Komputer dari tahun 2012 hingga 2016. Selama mengikuti perkuliahan, penulis pernah aktif menjadi panitia divisi
liaison officer Pesta Sains Nasional 2014 dan 2015 dan kepanitian lain di lingkup
Fakultas MIPA dan Departemen Ilmu Komputer. Penulis melaksanakan praktik kerja lapangan (PKL) di Pusdatin Kementiran Pertanian.