• Tidak ada hasil yang ditemukan

ANALISA DAN PERANCANGAN SISTEM

4.1. Pengolahan Data Posko

Data yang akan digunakan pada pengujian sistem DMS-INDRini berupa data nama, lokasi, dan jumlah pengungsi pada posko yang tersebar setelah tanggal 5 November 2010 saat bencana erupsi Merapi, yang diperoleh dari situs merapi-partisipasi milik Universitas Gadjah Mada. Data posko tersebut tersimpan dalam bentuki fileyang berjeniskml dan xls(excel document). File berjenis kmlberisikan tentang data nama dan lokasi posko, sedangkan fileberjenis xls berisikan data mengenai nama dan jumlah pengungsi pada setiap posko. Kedua fileyang berbeda jenis tersebut harus terlebih dahulu digabungkan, agar menjadi sebuah file data yang utuh dan siap dipergunakan untuk pengujian. Jenis data yang akan dipergunakan oleh penulis dalam pengujian adalah berupa data berjenis xml.

Terdapat beberapa data jumlah penduduk yang masih kosong dalam fileexcel document, sehingga penggabungan kedua data tersebut harus melalui tahap penyaringan (filtering). Data pada excel document digunakan untuk menyaring data-data yang terdapat pada file kml, dengan nama posko sebagai variabel pembanding dimasing masing file. Penyaringan dilakukan dengan hanya

pengujian.

Gambar 4.1. Data posko kml.

Gambar 4.2. Data posko xls.

Pengolahan data dilakukan dengan proses scripting, yakni dengan menggunakan bahasa pemrograman php. File berjenis kml diolah dengan menggunakan fungsi simplexml_load_file() milik php, yang kemudian diintregasikan dengan file berjenis excel documentyang diolah dengan menggunakan OLEReader. OLEReadermerupakan sebuah kelas dalam side server scriptingphp yang dikembangkan pertamakali oleh Vadim Tkachenko, yang disebarkan secara open-source untuk membaca file excel document. Proses integrasi dilakukan dengan menjadikan nama posko sebagai primary key, karena tidak terdapat data lain dengan nama yang sama. Dari file kml dan xls diambil data

posko.

Tipe posko dibedakan menjadi dua yakni posko pusat dan posko tujuan. Posko pusat merupakan posko yang nantinya akan dipergunakan sebagai variabel supply, sedangkan posko tujuan akan dipergunakan sebagai variabel demand. Variabel tersebut dihitung dari atribut jumlah pengungsi dari masing-masing posko. Proses pengolahan ini akan menghasilkan file xml seperti pada gambar 4.3.

Gambar 4.3. Data posko hasil pengolahan, bertipe xml. Pengolahan dlakukan dengan menggunakan pseudo code sebagai berikut :

1. Mulai.

2. Buat variabel outputXml, sebagai hasil akhir dari pengolahan data. 3. Buat variabel dataExcel,yang berisi Masukkan data posko pada file xls

kedalam variabel dataExcel menggunakan OLERead.

4. Buat variabel dataKml, yang berisi data xml posko pada file kml dengan menggunakan fungsi simplexml_load_file($file).

6. Pada setiap placemark, lakukan langkah 6-10.

7. Jika nama posko dari variabel dataExceldanplacemarksama, dan data jumlah pengungsi pada dataExcel> 10 lakukan langkah 7-10

8. Buat objek <posko> baru pada variabel outputXml.

9. Buat atribut <nama>,<koordinat>,<lokasi>,<pengungsi> dan <tipe> pada objek <posko>.

10.Untuk atribut <nama>,<koordinat>,<lokasi>, isikan dengan data yang ada pada atribut pada placemark. Sedangkan <pengungsi> diisi dengan data pada variabel dataExcel.

11.Jika <pengungsi>>1000 maka variabel <tipe> = pusat, jika tidak maka variabel <tipe> = masyarakat.

12.Simpan data xml yang berisi objek posko yang sudah terbentuk. 13.Selesai.

<?php

require_once '../excel/reader.php';

$dataExcel = new Spreadsheet_Excel_Reader(); $dataExcel->setOutputEncoding('CP1251'); $dataExcel->read('jmlPenduduk.xls'); error_reporting(E_ALL ^ E_NOTICE); //Kml Reading $file = 'dataPosko2.kml'; $dataKml = simplexml_load_file($file);

// specify the version and encoding $doc->version = '1.0';

$doc->encoding = 'UTF-8';

$comment_elt = $doc->createComment('Generated by Chiputera '); $doc->appendChild($comment_elt);

$data_posko = $doc->createElement('Document'); $doc->appendChild($data_posko);

$jumlah_data=0; $jum=0;

for ($i = 0; $i < count($placemarks); $i++) {

for ($j = 6; $j < 559; $j++) {

if (trim($placemarks[$i]->name) == trim($dataExcel->sheets[0]['cells'][$j][5]) && $dataExcel->sheets[0]['cells'][$j][6] > 10&& $dataExcel->sheets[0]['cells'][$j][7] == "Sleman") { $jumlah_data++;

$posko = $doc->createElement('Posko'); $data_posko->appendChild($posko);

$nama = $doc->createElement('nama',$placemarks[$i]->name); $koordinat=substr($placemarks[$i]->Point->coordinates,0,-2);

$lokasi = $doc->createElement('lokasi', substr($koordinat,strpos($koordinat, ",")+1, strlen($koordinat)).",".substr($koordinat,0, (strpos($koordinat, ","))-strlen($koordinat)));

}else{ $tipe = $doc->createElement('tipe','masyarakat'); } $posko->appendChild($nama); $posko->appendChild($lokasi); $posko->appendChild($penduduk); $posko->appendChild($tipe); break; } } } // echo $jum; //Menyimpan XML $doc->formatOutput = true; $doc->saveXML(); $doc->save("data_posko.xml"); echo $jumlah_data; ?>

Setelah dilakukan proses scripting, data valid yang disimpan kedalam file berjenis xml dan siap untuk dilakukan pengujian adalah sebanyak 73 posko.

membandingkan hasil perhitungan manual dan perhitungan oleh sistem yang dibuat. Sedangkan data posko secara keseluruhan, sebanyak 73 data posko akan digunakan sebagai pengujian kehandalan sistem.

Hasil pengolahan data dalam bentuk kmltersebut, kemudian dimasukkan kedalam basis data dengan menggunakan scripting. Keseluruhan data posko yang ada didalam data kmlakan disimpan kedalam basis data “Posko”. Kemudian pada masing-masing tipe posko yang berbeda akan dilakukan pencarian jarak dengan menggunakan Google Distance Matrix.

public static function insertPoskoWithAcc($nama, $lokasi, $penduduk, $tipe, $user_id) {

mysql_query("INSERT INTO posko (nama_posko,lokasi_posko,penduduk,tipe,user_id) VALUES ('$nama','$lokasi',$penduduk,'$tipe',$user_id)");

echo mysql_error();

$rset = mysql_query("SELECT MAX(id_posko) FROM posko WHERE user_id=" . $user_id); while ($list = mysql_fetch_row($rset)) {

$id_posko = $list[0]; }

//Query untuk mengambil data posko yang ada. Jika posko baru = pusat, maka yang diambil posko masyarakat, dan sebaliknya

if ($tipe == "pusat") {

$sql = "SELECT id_posko,lokasi_posko FROM posko WHERE tipe='masyarakat' AND user_id=" . $user_id;

} else {

$sql = "SELECT id_posko,lokasi_posko FROM posko WHERE tipe='pusat' AND user_id=" . $user_id;

$cost = Posko::calculate_distance_matrix($lokasi, $list[1]); //insert data cost

if ($tipe == "pusat") {

$sqlCost = "INSERT INTO cost (id_posko_pusat,id_posko_masyarakat,biaya) VALUES ($id_posko,$list[0],$cost)";

} else {

$sqlCost = "INSERT INTO cost (id_posko_pusat,id_posko_masyarakat,biaya) VALUES ($list[0],$id_posko,$cost)";

}

mysql_query($sqlCost); }

}

public static function fillLogistik($user_id) {

$rset = mysql_query("SELECT id_kategori_logistik FROM kategori_logistik"); $x = 0;

while ($list = mysql_fetch_row($rset)) { $id_kategori_logistik[$x] = $list[0]; $x++;

}

$rset = mysql_query("SELECT id_posko,penduduk FROM posko WHERE user_id=" . $user_id); while ($list = mysql_fetch_row($rset)) {

$id_posko = $list[0]; $penduduk = $list[1];

for ($i = 0; $i < count($id_kategori_logistik); $i++) {

mysql_query("INSERT INTO logistik (id_kategori_logistik,id_posko,value) VALUES ($id_kategori_logistik[$i],$id_posko,($penduduk*2))");

Method insertPoskoWithAcc() berfungsi untuk memasukkan data posko secara keseluruhan. Di method ini juga terdapat pembanding untuk pengisian cost, dimana setiap posko berjenis “pusat” akan dilakukan pencarian jarak pada posko yang bertipe “masyarakat”. Sedangkan untuk method fillLogistik() berfungsi untuk memasukkan data jumlah stok dari masing-masing posko kedalam basis data “stok”.

4.1.1. Google Distance Matrix

Google Distance Matrix APIpada sistem ini dipergunakan untuk memperoleh jarak dari 2 titik, yang dijalankan dengan mengirim request url. Request url yang dikirimkan pada sistem ini adalah sebagai berikut :

'http://maps.googleapis.com/maps/api/distancematrix/xml?origins='-KOORDINAT POSKO A-'&destinations='-KOORDINAT POSKO B-'&mode=driving&sensor=false'

Gambar 4.4.Request Url Google Distance Matrix API

Request Url yang dikirim pada sistem ini menggunakan modedriving, karena jalur penghubung yang dibutuhkan pada setiap titik posko adalah jalur yang dapat dilalui kendaraan roda empat untuk mempermudah pengiriman logistik. Selain itu tujuan penggunaan modedriving adalah untuk memperluas kemungkinan pemerolehan jarak pada Google Distance Matrix. Hal ini disebabkan karena sebagian besar data jalur yang sudah terbentuk dalam basis data Google Maps adalah pada modedriving. Sedangkan untuk daerah-daerah di Indonesia, hasil

Hasil yang didapatkan dengan pengiriman request url ini adalah berupa file xml. File xml ini harus diolah terlebih dahulu menggunakan fungsi dari php yakni simplexml_load_file(), karena hasil request tidak hanya terdapat data jarak saja namun juga terdapat data waktu tempuh. Pengambilan jarak dilakukan dengan mengakses beberapa tagdalam xml, yakni row, element, distance, dan value. Pengolahan data xml dapat dilihat pada potongan kode program berikut :

public static function calculate_distance_matrix($start, $finish) {

$url = 'http://maps.googleapis.com/maps/api/distancematrix/xml?origins=' . $start . '&destinations=' . $finish . '&mode=driving&sensor=false';

$DistanceMatrixResponse = simplexml_load_file($url);

$distance = $DistanceMatrixResponse->row->element->distance->value / 1000; return $distance;

}

Dokumen terkait