Irmante Astalavista

Simsalabim!!!
Blog ini bercerita tentang dunia IT, ilmu kebumian, dan lain-lain.

Saturday, June 26, 2010

Mapserver, Extent PostGIS, dan jQuery

Seringkali kita dihadapkan pada keinginan untuk menampilkan peta lokasi berdasarkan pilihan user. Contoh sederhananya, ketika user melakukan klik pada sebuah tabel atau grafik yang memiliki informasi lokasi, maka panel lain akan menampilkan peta lokasi pada baris tabel atau grafiknya.
Well... biasanya sih, bilamana kita menggunakan mapserver berbasis framework, seperti pMapper, ka-map!, fist, dst, maka kita dapat melakukan pencarian lokasi dengan menggunakan tombol Find, Search, dan sebagainya.
Nah framework Mapserver dengan segala tombolnya itu, malah bukan tampilan yang diinginkan user awam a.k.a management :D. User maunya dari sembarang tabel atau grafik, klik… muncul peta lokasinya tanpa embel-embel perlu klik sana-sini. Sesederhana itu dan ga banyak cingcong....
'Klik dan tampilkan lokasi' yang bisa dilakukan pada Mapserver adalah dengan memanfaatkan bahasa PHPMapscript dengan perintah dasar
$oMap->setExtent(xMin, yMin, xMax, yMax)
Artinya tampilkan peta lokasi dengan batas pojok kiri bawah (xMin, yMin) dan batas pojok kanan atas (xMax, yMax). Pada mapserver, nilai extent itu secara default tersimpan pada file *.Map, dimana ukuran nilai extent biasanya meliputi wilayah seluruh peta, bukan lokasi spesifik dari peta.

Itu malah jadi problem buat klik dan tampilkan lokasi....
Perhatikan gambar di atas. Area bergaris biru (----), merupakan nilai kotak extent dari peta kecamatan A, B, C, D, E, F. Area bergaris hijau (----), merupakan nilai kotak extent dari peta kecamatan D, E.
Untuk areal seluruh kecamatan memiliki nilai extent:
xMin-yMin: 581663.9375 - 9621369
xMax-yMax: 1050545 - 9855190
Untuk areal kecamatan D dan E, propinsi DEF memiliki nilai extent:
xMin-yMin: 790040.8125 - 9663481
xMax-yMax: 981676.375 - 9846642

Taunya darimana nilai koordinat pojok kiri dan pojok kanan atas wilayah yang kita ingin tampilkan?
Ada beberapa cara sebenernya, yang paling sederhana adalah buat kotak pada piranti lunak GIS terhadap kedua areal tersebut. Kemudian catat nilai kursor koordinat pojok kiri bawah dan koordinat pojok kanan bawah dari kotak tsb.
Perhatikan! bahwa sistem proyeksi yang mudah diinterpretasi Mapserver dalam menentukan nilai skala adalah sistem proyeksi UTM yah, bukan derajat desimal.
Well…, yang bisa saya pikirkan adalah menggunakan fasilitas ST_EXTENT pada PostGIS. ST_EXTENT merupakan perintah untuk mengambil extent batas terluar dari sekumpulan lokasi peta hasil query, dengan output hanya satu baris!. Misal tabel peta dengan menggunakan query WHERE diperoleh hasil 2 kecamatan, maka fitur ST_EXTENT ini akan menampilkan nilai batas terluar dari kedua kecamatan tersebut, hanya satu baris.Dengan menambahkan beberapa bumbu query, maka kita akan dapat memperoleh nilai xMin, yMin, xMax, yMax dari wilayah terpilih.


Kalo lebih mudah utk mapserver dpt dipecah jadi 2 kolom extent yaitu kolom xymin dan xymax, melalui query berikut:
SELECT REPLACE(SPLIT_PART(ASTEXT(ST_EXTENT(ST_TRANSFORM(geometry,32749))), ',', 1), 'POLYGON((', '') as xymin, SPLIT_PART(ASTEXT(ST_EXTENT(ST_TRANSFORM(geometry,32749))), ',', 3) as xymax FROM wilayahku WHERE propinsi='DEF' AND kabupaten='3';

Artinya: Tentukan area extent dari wilayah propinsi='DEF' AND kabupaten='3'; (perintah WHERE), dengan cara mengambil nilai geometri (kolom GEOMETRY), dalam proyeksi UTM 49S (perintah ST_TRANSFORM(geometry,32749)), lalu terjemahkan sebagai text (perintah ASTEXT), lalu pisahkan nilai tersebut menggunakan parameter split (perintah SPLIT_PART).
Dengan mengubah-ubah parameter WHERE, maka kita bisa mendapatkan nilai extent secara dinamis ya tho… Nilai extent inilah yang menjadi dasar inisiasi Mapserver sehingga user bisa melakukan 'klik dan menampilkan lokasi'.

Masuk ke koding yah...
Langkah pertama adalah membuat query function pada PostGIS untuk mendapatkan area extent berdasarkan inputan propinsi, kabupaten, dan kecamatan. Nama query function itu: _a_mapex(propinsi, kabupaten, kecamatan).
-- Function: _a_mapex(text, text, text)

-- DROP FUNCTION _a_mapex(text, text, text;
CREATE TYPE ms_extent AS
(xmin text,
xmax text);
ALTER TYPE ms_extent OWNER TO postgres;

CREATE OR REPLACE FUNCTION _a_mapex(text, text, text)
RETURNS SETOF ms_extent AS
$BODY$
--returns setof party as $$
DECLARE

BEGIN
IF $1!='0' AND $2!='0' AND $3!='0' THEN
RETURN QUERY
select replace(split_part(astext(st_extent(st_transform(geometry,32749))), ',', 1), 'POLYGON((', '') as xymin,
split_part(astext(st_extent(st_transform(geometry,32749))), ',', 3) as xymax from wilayahku where propinsi = $1 and kabupaten=$2 and kecamatan=$3;

ELSE IF $1!='0' AND $2!='0' AND $3='0' THEN
RETURN QUERY
select replace(split_part(astext(st_extent(st_transform(geometry,32749))), ',', 1), 'POLYGON((', '') as xymin,
split_part(astext(st_extent(st_transform(geometry,32749))), ',', 3) as xymax from wilayahku where propinsi = $1 and kabupaten=$2;

ELSE IF $1!='0' AND $2='0' AND $3='0' THEN
RETURN QUERY
select replace(split_part(astext(st_extent(st_transform(geometry,32749))), ',', 1), 'POLYGON((', '') as xymin,
split_part(astext(st_extent(st_transform(geometry,32749))), ',', 3) as xymax from wilayahku where propinsi = $1;

ELSE IF $1='0' AND $2='0' AND $3='0' THEN
RETURN QUERY
select replace(split_part(astext(st_extent(st_transform(geometry,32749))), ',', 1), 'POLYGON((', '') as xymin,
split_part(astext(st_extent(st_transform(geometry,32749))), ',', 3) as xymax from wilayahku;
END IF;
END IF;
END IF;
END IF;
RETURN;
END
$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100
ROWS 1000;
ALTER FUNCTION _a_mapex(text, text, text) OWNER TO postgres;
Contoh pemanfaatan query function itu dengan mencoba query berikut:
Untuk menampilkan semua wilayah menggunakan perintah:
select * from _a_mapex('0','0','0');
Untuk menampilkan propinsi ‘DEF’ menggunakan perintah:
select * from _a_mapex('DEF','0','0');
Untuk menampilkan propinsi ‘DEF’ dan kabupaten ‘3’ dan kecamatan=’F’ menggunakan perintah:
select * from _a_mapex('DEF','3','F');

PostGIS function udah... ,
Sekarang tinggal urusan MapServer dan jQuery neh…
Langkah keduanya adalah kita buat dulu file wilayahku.map yg menampilkan peta.
Filenya berjudul: wilayahku.map, dengan layer berjudul data_postgis.
MAP
NAME "wilayahku"
STATUS ON
SIZE 550 400
#EXTENT 558219.89536477 9609678.45877826 1073988.99548252 9866880.21769665
EXTENT 581663.9375 9621369 1050545 9855190
UNITS meters
RESOLUTION 72
IMAGETYPE PNG
IMAGECOLOR 255 255 255

SCALEBAR
STYLE 1
UNITS kilometers
END

WEB
IMAGEPATH "/ms4w/tmp/ms_tmp/"
IMAGEURL "/ms_tmp/"
END

PROJECTION
"init=epsg:32749"
#"init=epsg:4326"
#"+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"
END

#--------------------------------------------------------------------
LAYER
NAME "data_postgis"
STATUS DEFAULT
TYPE POLYGON
CONNECTIONTYPE POSTGIS
CONNECTION "host=localhost port=5432 dbname=msdemo user=postgres password=00000"
DATA "geometry from wilayahku using unique gid using srid=32749"

PROJECTION
"init=epsg:32749"
#"+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"
END #PROJECTION

CLASS
COLOR 225 255 100
OUTLINECOLOR 0 0 0
END

END #LAYER
END


Langkah ketiga, kita perlu membuat file PHPMapscript mapex.php, yang dapat menghasilkan gambar peta lokasi, berdasarkan serangkaian input parameter.

Dilanjut dengan script berikut:
<?php
//Generate the chart element
$paramd = $_GET['param'];
$eval = explode("_", $paramd);
//Connect to the DB
$conn = pg_connect("host=localhost user=postgres password=00000 dbname=msdemo");
//Fetch all factory records
$strQuery = "select * from _a_mapex('" . $eval[0] . "','" . $eval[1] . "','" . $eval[2] . "');";
// echo $strQuery;
// exit;
$result = pg_query($strQuery) or die('Query failed: ' . pg_last_error());
// printing table rows
if ($result) {
while($ors = pg_fetch_array($result)) {
$mapex = $ors[0] . " " . $ors[1];
}
}
//echo $mapex;

pg_free_result($result);
pg_close($conn);

$map = ms_newMapObj($_GET['map']);
// We create the map object based on the mapfile received as parameter

$size = explode(" ",$_GET['mapsize']);
$map->setSize($size[0], $size[1]);
// and set the image size (resolution) based on mapsize parameter
// Update: The map size must be setted before the extent, otherwise the extent
// will be adjusted to the aspect ratio of the map defined on SIZE parameter
// of MAP object in your mapfile

$extent = explode(" ",$mapex);
$map->setExtent($extent[0], $extent[1], $extent[2], $extent[3]);
// We get the mapext parameter... split it on its 4 parts using
// the space character as splitter

$layerslist=$_GET['layers'];
for ($layer = 0; $layer < $map->numlayers; $layer++) {
$lay = $map->getLayer($layer);
if ((strpos($layerslist,($map->getLayer($layer)->name)) !== false)
or (($map->getLayer($layer)->group != "") and
(strpos($layerslist,($map->getLayer($layer)->group)) !== false))){
// if the name property of actual $lay object is in $layerslist
// or the group property is in $layerslist then the layer was requested
//so we set the status ON... otherwise we set the stat to OFF
$lay->set(status,MS_ON);
} else {
$lay->set(status,MS_OFF);
}
}

// The next lines are the same as previous mapscript
$oImg = $map->draw();
$url = $oImg->saveWebImage(MS_PNG, 0, 0, -1);
echo "<img id=\"mymap\" src=" . $url . " style=\"border:1.5px solid grey;\"></img>";
//echo $map->scaledenom //check skala output yang keluar, soalnya kalo dalam satuan DD ga keluar jeh.

//BILAMANA ADA PERHITUNGAN MAX-MINLABEL, JANGAN GUNAKAN UNIT DD, TAPI GUNAKAN UNIT METERS, SRID LAYER PETA TETAP PROYEKSI DESIMAL DEGREE GAK MASALAH,
//CUMAN OUTPUT PROJECTION *.MAP TETAP HARUS UTM, CONTOH SRID 32739 utk UTM 49S atau 32649 utk UTM 49N
?>
Berikutnya adalah pengetesan nilai parsing dengan cara mencopy paste url ke dalam browser (perhatikan bagian input param):
Contoh untuk menampilkan peta kabupaten 1 propinsi ABC
http://localhost/msdemo/mapex.php?param=ABC_1_0&map=wilayahku.map&mapsize=450%20300&layers=data_postgis

Contoh untuk menampilkan data propinsi DEF
http://localhost/msdemo/mapex.php?param=DEF_0_0&map=wilayahku.map&mapsize=450%20300&layers=data_postgis

Welldone…!!!
Langkah keempat, sekarang kita bermain dengan file HTML-nya yang akan melakukan proses klik dan tampilkan lokasi.
Copy paste script berikut, dan simpan dalam file berjudul mapex_jquery.html:
Perhatikan kalo file ini membutuhkan jQuery file jquery-1.4.2.min.js yg tersimpan dalam direktori jQuery. jQuery ini bertujuan untuk:
  • mengolah dan menampung peta hasil query pada mapex.php kedalam div dengan id=map_tag,

  • proses render halaman bersifat parsial Ajax, karena yang diubah hanya gambarnya saja bukan keseluruhan dari halaman web,

  • Menambahkan efek animasi sederhana, biar keliatan lebih cooool…


<HTML>
<HEAD>
<style type="text/css">
<
body {
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
}
</style>

<SCRIPT LANGUAGE="JavaScript" src="FusionCharts/jquery-1.4.2.min.js"></SCRIPT>
<SCRIPT LANGUAGE="JavaScript">
function mymap(mylocation1){
//window.alert(mylocation1);
//perhatikan, kalo yg diubah sekali lagi hanya pada input param yah!
$.ajax({ type: "GET", url: "mapex.php", dataType: 'html', data: "map=wilayahku.map&param=" + mylocation1 + "&mapsize=450%20300&layers=data_postgis", error: function(xhr, textStatus, errorThrown) { alert('An error occurred! ' + errorThrown); }, success: function(html){ $('#map_tag').hide().slideDown().html(html); } }); };
</SCRIPT>
</HEAD>
<BODY>
<p><h1>Klik dan tampilkan lokasi</h1></p>
<table>
<tr>
<td>
<a href="JavaScript:mymap('0_0_0');">Seluruh Area</span></a>
<li><a href="JavaScript:mymap('ABC_0_0');">Propinsi ABC</a></li> <ul> <li><a href="JavaScript:mymap('ABC_1_0');">Kabupaten 1</a></li> <ul> <li><a href="JavaScript:mymap('ABC_1_A');">Kecamatan A</a></li> <li><a href="JavaScript:mymap('ABC_1_C');">Kecamatan C</a></li> </ul> <li><a href="JavaScript:mymap('ABC_2_0');">Kabupaten 2</a></li> <ul> <li><a href="JavaScript:mymap('ABC_2_B');">Kecamatan B</a></li> </ul> </ul> <li><a href="JavaScript:mymap('DEF_0_0');">Propinsi DEF</a></li> <ul> <li><a href="JavaScript:mymap('DEF_3_0');">Kabupaten 3</a></li> <ul> <li><a href="JavaScript:mymap('DEF_3_D');">Kecamatan D</a></li> <li><a href="JavaScript:mymap('DEF_3_E');">Kecamatan E</a></li> </ul> <li><a href="JavaScript:mymap('DEF_4_0');">Kabupaten 4</a></li> <ul> <li><a href="JavaScript:mymap('DEF_4_F');">Kecamatan F</a></li> </ul> </ul>
</td>
<td>
<div id="map_tag"></div>
</td>
</tr>
</table>
</BODY>
</HTML>
</BODY>
</HTML>

Sekarang tinggal testing outputnya:


Downloadnya di sini.

Labels: ,


Monday, January 25, 2010

Tentang Blackberry

Sebuah handset blackberry anyar gress terpaksa dibeli istri, setelah dipanggil sm bosnya. Rupanya bos istri gak pengen karyawannya gak cukup trendy. Berhubung kantornya memberikan subsidi (meski gak semua) handset blackberry dan pulsanya... oke aja sih :D.

Setelah memasukkan kartu Simpati ke handset ini, fungsi SMS dan telepon jalan normal. Nah sekarang tinggal setting internet. Tahap yg biasa saya lakukan untuk handset non-blackberry adalah sebagai berikut:
Handset non-blackberry > setting koneksi sesuai operator seluler (Indosat, Telkomsel, dst) > Browsing, Chatting, Email, dst.

Baca manual blackberry bolak-balik gak paham juga, klak klik gak nemu settingan internet, giliran nemu dan masukkan parameter tetep aja gak bisa browsing. Padahal udah banyak hp yg bisa saya bikin bisa browsing, email, dan chatting selama ini, tapi kali ini bener2 gak mempan. Keberhasilan saya selain sms dan telepon itu (halah), hanya bisa mengaktifkan GPS-nya tok, itupun gak tau cara nampilin petanya. Mo pake browsernya aja gak nyambung2 jeh.

Setelah dibaca konsep layanan blackberry itu sebagai berikut:
Handset blackberry > setting operator seluler (Indosat, Telkomsel, dst) > Blackberry Internet Service > Browsing, Chatting, Email, dst.

Artinya handset blackberry hanya bisa konek internet sesudah melewati Blackberry Internet Service yang dikendalikan oleh RIM, dengan kata lain user emang HARUS beli layanan Blackberry yang disediakan operator seluler untuk bisa terhubung dengan internet!!!

Setelah daftar ke salah satu operator seluler, barulah nongol tuh ikon peta GPS, ikon Blackberry App World, ikon Viigo, dst. Semua menu tersebut muncul setelah handset terhubung dengan server layanan Blackberry (Blackberry Enterprise Server)... hoalaahhhh!.

The advantages:
- Hanya bisa satu kartu yang terhubung dengan layanan blackberry. Jadi gak bisa model ganti2 kertu seperti handset non-blackberry, misal punya kertu telkomflash tuker sm im3 atau paket indosatM2 Broom. Manteng cuman 1 kertu itu. Kalo mo ganti kertu operator lain musti register ulang yang nunggu 2-3 hari konfirmasi.

- Layanan blackberry ini nyambung ke internet, selama masa paket layanan blackberry aktif. Jadi blackberry ini sangat sesuai kalo untuk acara chatting, push email, browsing, social networking dst 24 jam 7 hari seminggu. Kalo layarnya terlalu kecil,
pengen download2 seharian pake laptop, maka kita tinggal jadikan blackberry sebagai modem buat PC/laptop, disini atau disini. Download lagu, film, dst ya tinggal browsing sama klak klik doang, tungguin, beres... nyambung ke internet inih...

- Everything's there
Pertama kali yang dipikir sesudah browsing pada blackberry adalah download game atau aplikasi. Ternyata udah ada ikonnya, namanya BlackBerry App World. Tinggal cari dan pilih aplikasi atau game yg pengen diinstall, udah deh tungguin proses downloadnya. Kalo model pake hp non-blackberry, user kan musti tau alamat web aplikasinya, register dulu, dst.

The disadvantages:
- layanannya mahal
Contoh buat yang mau mempertahankan kertu Simpati-mu yang udah terkenal seantero jagat raya, bisa memilih layanan blackberry telkomsel antara paket chatting tok, chatting+email tanpa browsing, atau paket unlimited yg bisa browsing... 180rb sebulan, belum telepon/sms.... fiuh, kalo jatah telepon/sms sebulan 100rb artinya, biaya bulanan bengkak jadi 280rb/bln. Solusi paling enak adalah cari operator yang bisa membeli layanan blackberry unlimited secara harian, mingguan, atau bulanan, contohnya paket blackberry dari Axis atau model prepaid blackberry ala indosat.

- It's about livestyle
Sebagai penganut aliran bebas dan gak ngikuti pakem trend, rasane ada yang ngganjel gitu karena dependensi terhadap server blackberry terlalu tinggi. Gimana kalo blackberry Servernya tewas, aktifitas dipantau masih suruh bayar lagi, buat apa chatting mulu, dst... Tapi ya namanya lifestyle ...ya gitchu deh...

- Bentuknya monoton
Liat aja bentuknya, qwerty padnya itu lho... rumangsaku kok podho kabeh, gak seperti Nokia atau produk lain. Giliran touchscreen mode ala blackberry Tour/Storm, bakul2 di Mall Ambasador sampe petugas operator bilang produk gagal.

Another product:
Layanan blackberry yang serba all-in dan memanjakan penggunanya ini, tentunya tetep menarik buat operator lain memberikan layanan sejenis. Toh dengan koneksi GPRS aja, pengguna blackberry udah pada seneng dan keliatan gaul.
Maka bertaburanlah operator yang mempaketkan handset china+layanan GPRS, dengan iming-iming bisa chatting via YM, facebook, tweeter, browsing, dst. Sampe ada yang menyebut merk handset+berry, seperti dari tawaran produk dari XL, Nexianberry... Padahal jaman Siemens SL45i tahun 2003, udah bisa dipake buat browsing dengan kualitas GPRS.

Labels:


Friday, January 08, 2010

PHK dan solusi ala Richdad

Kalo misalnya ada PHK atau perusahaan melakukan efisiensi, maka yang terjadi adalah karyawan gak dapet income rutin lagi ya tho... Karyawan ang biasanya duduk manis untuk tiap tanggal 25, dapet 10juta misalnya, tiba-tiba gak ada. Dituker oleh pesangon yang nilainya antara 3-x gaji. Artinya dengan gaya hidup yang sama, karyawan tsb bisa bertahan antara 3 hingga x bulan tanpa kerja. Dimana besaran 3-x gaji itu mengacu pada pasal 156 undang-undang ketenagakerjaan.

So saya memilah karyawan kantoran menjadi dua golongan aja:
- karyawan dengan penghasilan hanya dari gaji
- karyawan dengan penghasilan gaji ditambah penghasilan tambahan

Kalo seorang karyawan yang terbiasa menata hidupnya lewat keteraturan gaji, hanya mengandalkan gaji kantoran sepenuhnya, yang tercetus dibenaknya adalah mencari kerja secepatnya. Entah masuk ke vendor, client, minta bantuan teman, bantuan sodara, lewat internet, lewat jasa penyalur tenaga kerja, dst. Semakin profesional seseorang, maka mencari kerja itu bukan sesuatu hal yang sulit dilakukan, karena pengalaman kerja, referensi, koneksi, dan seterusnya itu memudahkan dia untuk kembali bekerja atau masuk perusahaan lain. Intinya jangan sampe pesangonnya habis belum dapet kerja, dan memakan tabungan.

Kalo karyawan dengan penghasilan gaji, yang juga dapet penghasilan di luar gaji, contoh adalah karyawan yang terkadang dapet 'bonus' dari suplier, kerjaan sidejob, kerjaan injob yang dikerjakan sebagai sidejob, punya properti sewa, dst. Adanya PHK akan membuat karyawan tersebut meredefinisi cara dia bekerja untuk mendapatkan income, dihitung dari perbandingan besaran antara gaji dibandingkan penghasilan tambahan.

Misal nih, income gaji vs income tambahan 1 vs 4 (income tambahan 4x lebih besar dari income gaji). Ya otomatis dia mending pindah quadran ala Robert Kiyosaki, yaitu pindah kuadran dari employee menjadi self-employee atau bussiness owner atau investor sekalian.

Bila income gaji vs income tambahan 1 vs 1/4 (income tambahan hanya 1/4 income gaji). Ya artinya dia mending jadi karyawan lagi aja. Kecuali cukup bisa mengeksekusi pesangonnya, untuk bisa bergerak dan punya penghasilan minimal sama dengan gajinya. Misal investasi bisnis X yang dia tekuni, main di reksadana, dst.
Ide brilian Robert Kiyosaki lewat buku cashflow kuadran adalah tumpuklah aset bukan gaji.
Dalam permainan Cashflow Quadran 101 Robert Kiyosaki, karyawan apapun profesinya, diajak berpikir kedepan untuk mengubah penghasilan gaji itu, secepatnya menjadi penghasilan aset. Target permainan tersebut adalah kita menggantikan penghasilan gaji menjadi penghasilan aset dengan perbandingan 1 banding 1. Artinya kita tidak bekerja kantoran pun, kebutuhan rutin dan tabungan dapat ditutupi oleh penghasilan aset tersebut, yang dihasilkan sama seperti kita masih bekerja kantoran.

Penghasilan aset dalam game tersebut dihasilkan dari jual beli saham, sewa properti, jual beli properti, bisnis, dst. Tetapi tidak menutup kemungkinan kita mengembangkan ide brilian tersebut melalui bisnis-bisnis yang lain yang kita mampu dan bisa melakukannya, seperti agrobisnis, bisnis peternakan, buka bengkel, buat kost-kostan, toko online, dst.
Pastikan penghasilan aset bisa menggantikan penghasilan gaji 1 banding 1 atau lebih, itu saja...



Labels:


Thursday, September 17, 2009

Menebak Potensi Kemacetan Saat Lebaran

Tahun 2007 lalu Saya nebeng kakak ipar untuk mudik. Perjalanan dari Jakarta ke Jogja plus istirahatnya, ditempuh dalam waktu 30jam!. Benar-benar terjebak dalam puncak arus mudik 2007. Rasanya seperti naek mobil di rute Warung Buncit Mampang sepanjang jalan dari Jakarta ke Jogja, cuman bedanya mobil hanya boleh satu jalur sisanya motor. Cuapeeek, dongkol, bete, campur aduk. Belum macet total sampe bisa matiin mesin 2-3 jam. Itu bener-bener pengalaman buruk sekaligus berharga dalam memilih waktu mudik dan alat transportasi mudik di lain waktu.
Di Inggris atau Amrik, pencatatan data volume kendaraan per ruas jalan itu sudah berlangsung selama 30 tahun lebih. Dengan sekian banyak data yang masuk itu, durasi lampu pengatur lalu lintas (lampu bangjo) diujung ruas jalan berubah secara otomatis berdasarkan sekumpulan algoritma rumit... sekilas Saya dengar kalimat tsb di Discovery Channel.
Gara-gara pengalaman mudik tsb dan informasi Discovery Channel Saya coba berpikir bagaimana cara menebak potensi kemacetan saat lebaran. Kemacetan merupakan suatu hal yang diusahakan untuk dihindari saat mudik. Intinya orang ingin cepat sampai tujuan dalam periode waktu tertentu yang harapannya secepatnya alias As Soon As Possible, atau kalo nggak ya... masih dalam batas yang dapat ditolelir.
Ada bbrp cara yang terlintas dibenak Saya:
1. Berdasarkan pengolahan Geographical Information System
2. Berdasarkan informasi realtime secara manual
3. Berdasarkan waktu hari lebaran

#####Berdasarkan analisis GIS#####
Bayangan ideal Saya adalah, user memasukkan input:
a. titik awal perjalanan
b. titik akhir perjalanan
c. lalu muncul pilihan rute berdasarkan:
- jarak ruas jalan terpendek.
- rute waktu tempuh terpendek saat ini.
- prediksi rute waktu tempuh terpendek, saat ini untuk x jam kedepan/tanggal tertentu. Sangat idealis implementasi network analyst GIS yang pas untuk mudik lebaran dengan kondisi pendataan ruas jalan di Indonesia saat ini. So far, kita hanya mampu melihat peta cetak/digital yang menampilkan tematik jalur utama, jalur alternatif, tempat peristirahatan, tempat servis, lokasi rawan macet, tempat isi bensin, dst. Peta digital yang itu-itu saja, dan bukan peta GIS hasil analisis multi kriteria dalam ilmu geografi yang Saya pelajari.

Faktor yang penting untuk mudik adalah waktu tempuh dari sebuah ruas jalan.
Saya mengambil contoh di salah satu ruas Jakarta, misalnya hari Minggu pagi 2 pagi, dari Warung Buncit lewat Mampang Prapatan, hingga batas simpang flyover Kuningan Gatot Subroto Jakarta asalkan kita berhati-hati bisa ditempuh 10 menit. Beda dengan hari Senin, start jam 8 pagi, pada rute yang sama, waktu tempuhnya mencapai 1.5jam. Perbedaan waktu tempuh ini dipengaruhi kecepatan kendaraan yang bisa dicapai pada
ruas jalan tersebut. Artinya kecepatan rata-rata kendaraan itu berbanding lurus terhadap waktu tempuh. Makin cepat kendaraan melaju, maka waktu tempuhnya jg semakin singkat.
sumber foto: detik.com

Waktu tempuh ini dipengaruhi oleh:
1. Dimensi Jalan
Semakin lebar jalan cenderung semakin singkat waktu tempuh karena daya tampung kendaraan per ruas jalan semakin besar terhadap volume kendaraan. Semakin banyak kelokan semakin panjang rute yang musti ditempuh dan akan memperlama waktu tempuhnya.
2. Kualitas Jalan
Jalan aspal hotmix akan lebih cepat dilalui dibandingkan jalan berlubang.
3. Volume Kendaraan
Volume kendaraan berbanding lurus terhadap dimensi lebar jalan. Ini salah satu input penting untuk menganalisis rute dengan jarak tempuh tersingkat yang harusnya muncul dalam software GPS navigasi, sementara software GPS navigasi yang berada dipasaran menghitung rute terdekat berdasarkan dimensi panjang ruas jalan saja.

Target utamanya adalah cepat sampai, bukan cuman rute dengan waktu tempuh yang terpendek. Setiap segmen ruas jalan yang jumlahnya ratusan ribu, tidak hanya dicatat dimensi dan kualitas jalannya saja, tetapi juga volume kendaraan per durasi waktu pada tanggal tertentu pada ruas sebelah kiri. Volume kendaraan ini merupakan salah satu input perhitungan waktu tempuh yang paling sulit diperoleh, dan sepertinya ini akan menjadi semacam model yang implementasi realnya... suatu ketika.

#####Berdasarkan informasi realtime secara manual#####
Intinya sih acuannya 2 macem indera, pendengaran dan pengelihatan.
Indera pendengaran
Kalo kita berada di Jakarta, bisa dengerin SonoraFM untuk memantau kondisi lalu lintas berdasarkan laporan dari pengendara lain, lalu memutuskan rute mana yang memiliki waktu tempuh tersingkat. Nah parahnya, pengendara laen tuh kadang definisi padatnya lalu lintas itu beragam, ada yang dpt 20km/jam dianggap macet banget, sampe-sampe pemirsanya mengira macetnya total alias berhenti, lalu berbondong2 pindah rute, pdhl bisa jadi pengalaman si penelpon terhadap titik2 kemacetan pada ruas jalan
itu minim. So penolong kelengkapan informasi terletak pada keaktifan si penyiar radio untuk mendapat detil informasi dari si penelpon.
Nah saat mudik, informasi ini muncul dari pihak dephub dan polisi lalu lintas. Mereka berkomunikasi aktif satu sama lain untuk mengatur jalur mudik, misal pengalihan jalur, buka tutup ruas jalan, dst. Yang bisa dilakukan adalah manut ae sama polisi pengatur lalu lintas.

Indera pengelihatan
Kalo kita berada di Jakarta, selain terjebak dalam sebuah kemacetan pada sebuah ruas jalan itu sendiri, pengamatan visual dapat dilakukan melalui alamat jendelajakarta.com atau macetlagi.com. Kita bisa memantau perkembangan sebuah ruas jalan di Jakarta berdasarkan data rekaman CCTV secara realtime. Macet nggaknya sebuah ruas jalan, bisa diamati langsung lewat browser web baik HP maupun komputer. Kelemahannya titik2 yang dipasangi CCTV pengamatan itu terkadang tidak dipasang pas diruas jalan kadang hanya di pintu masuk. Selain itu durasi perekaman 1 frame per detik, sementara mata manusia melihat gerakan normal obyek video minimal pada kecepatan rekam 16 fps alias 16 jepretan / detik. Wajar sih, live streaming itu butuh bandwidth, apalagi di Indonesia yg kanal internetnya mirip intan permata, kecil dan mahal.

Nah kalo lebaran info mudik secara visual ini akan mengalir deras melalui stasiun tipi. Kita bisa mengandalkan LCD TV yang untuk mobil atau membawa handphone bertipi. Informasi pengamatan visual yang berasal dari hasil pantauan stasiun tipi ini akan sangat membantu melihat kondisi realtime kemacetan. Sambil ngeliatin jalan, sapa tau ada informasi pengalihan jalur, buka tutup ruas jalan, informasi longsor, dst dari polisi pengatur lalu lintas atau pihak berwenang lain.
Namun dishub tahun 2009 ini membuat satu web yang bermanfaat buat para netter, meski sementara blm mampu diakses via browser OperaMini atau PocketIE, yaitu CCTV jalur lebaran.


#####Menebak berdasarkan waktu lebaran#####
Pengalaman adalah guru terbaik. Ini memang satu hal yang menjadi protokol wajib tinggal di Jakarta. Misal, mencari jalur alternatif lewat peta, mengamati kapan waktu-waktu senggang dan padat jalur tol, ganti-ganti model alat transport berdasarkan waktu berangkat, berangkat lebih pagi, memperpanjang prediksi waktu tempuh, menggunakan jasa joki 3in1, dst.
Nah, mengenai mudik lebaran, itu beda cerita, intinya adalah orang berpikiran serentak dan similar. Semakin unik waktu dan rute yang dipilih, potensi ketemu macetnya semakin kecil.
Kemacetan dilihat bukan hanya dari nilai hari H - 3, atau 2 atau 1, tapi dilihat dari prediksi waktu libur kantor dimulai dan kapan akan masuk. Kenapa pegawai? Menurut Saya, pegawai, entah kantor pemerintah atau kantor swasta inilah yang mendominasi
arus lebaran berjadwal. Artinya mereka perlu menghitung jatah cuti, volume kerjaan, konsekuensi surat peringatan, dst.
Berbeda dengan wiraswastawan yang bisa memilih waktu mudiknya sendiri bergantung kebutuhannya.
Kalo kepadatan arus mudik itu dirumuskan simpelnya begini:
Kepadatan arus mudik dijalanan = volume kendaraan/waktu
* kepadatan arus mudik dijalanan, dimana nilai makin kecil makin baik
* volume kendaraan, prediksi jumlah pegawai berkendaraan
* waktu dalam satuan hari,
- untuk arus mudik, jumlah hari antara hari H lebaran dihitung mulai dari prediksi cuti pegawai tercepat dan paling realistis.
- untuk arus balik, jumlah hari antara hari H lebaran hingga prediksi hari masuk kantor paling cepat. Biasanya pegawai sih mulai masuk hari Senin.

Misalnya kepadatan kendaraan arus mudik diasumsikan 1jt, kalo waktu cuti pegawai tercepat 4 hari sebelum hari H maka bisa dapet angka 250rb, kalo 3 hari dapet kepadatan 330rb, dst. Untuk kasus arus balik, misal kendaraan volumenya 1jt, kalo hari H ke hari Senin cuman 3 hari, berarti dapet angka 330rb.

Pengalaman th 2007 lalu
Implementasinya dapat dilihat pada mudik tahun 2007 lalu, lebaran jatuh hari Sabtu-Minggu. Sementara orang kantoran dapat libur gratis rata-rata hari Jumat (H-1). Otomatis banyak pegawai yang memilih mengambil cuti 2 hari sebelumnya, so jatuhnya
hari Rabu. Kenapa Rabu? karena hari Rabu itu total cuti mereka 7 hari, sementara waktu total liburnya bisa dapet 12 hari.

-Hasilnya:
- Rabu, rombongan mudik 1 (H-3)
- Kamis, rombongan mudik 2 (H-2)
- Jumat, rombongan mudik 3 (H-1)
- Sabtu/Minggu lebaran.
Kenapa cuti gak diambil hari Senin/Selasa saja? hari Senin itu banyak transaksi yang masih memungkinkan terjadi. So arus mudik cenderung terkonsentrasi dalam waktu yang hanya 3 hari. Hari Rabu itu langsung terjadi puncak arus mudik dari pegawai, karena buanyak yang ijin pulang lebih awal. Jadilah penumpukan arus mudik yg bikin kami terjebak di Cikampek 12 jam dari pintu gerbang tol hingga ujung tol Cikampek Simpang Jomin. Perjalanan dari Jakarta ke Jogja akhirnya ditempuh dalam waktu 30jam.

Untuk arus balik 2007, cenderung terpecah. Pertama, beberapa instansi pemerintah mewajibkan PNS masuk hari Rabu (H+3), sementara untuk pegawai swasta cenderung mengambil jatah cutinya jadi total 7hari, jadi arus balik terjadi pada H + 4/5/6, sehingga konsentrasi arus balik terpecah.

Pengalaman tahun 2008
Beda dengan tahun 2008 ini, lebaran jatuh hari Rabu-Kamis, dari rumus simpel itu prediksi pegawai mengambil cuti 6 hari sebelum hari H, yaitu hari Kamis.

Total cuti jatuhnya pun hanya 5 hari, untuk dapat 11 hari libur, yaitu:

maka arus mudiknya bisa terpecah jadi beberapa periode.
- Kamis/Jumat, rombongan mudik 1 (H-6)
- Sabtu/Minggu, rombongan mudik 2 (H-4)
- Senin/Selasa, rombongan mudik 3 (H-2)
- Rabu/Kamis lebaran.
Periode waktu arus mudik yang mencapai 6 hari, maka kepadatan arus mudik terasa lebih 'longgar'. Sementara arus baliknya, ini dipastikan terjadi penumpukan, yang konten waktu masuknya sama dengan arus mudik 2007, yaitu cuman 3 hari.
- Jumat, rombongan balik 1 (H+1)
- Sabtu, rombongan balik 2 (H+2)
- Minggu-Senin, rombongan balik 3 (H+3)
So dipastikan kepadatan hari itu akan sangat dirasakan oleh para pemudik. Hari Sabtu itu, prediksi Saya terbukti. Perjalanan dari Jogja ke Sampang, Cilacap, ditempuh dalam 8 jam, yang normalnya 4 jam lewat jalur Selatan. Padahal Saya sudah menggunakan rute Daendeless Kulonprogo, hingga bisa sampai daerah Gombong dlm waktu 3 jam, normalnya sih tinggal 1/2jam lagi dah sampe rumah mertua. Alih-alih ngejar 1/2 jam lagi itu Saya salah pilih rute ke arus balik rute Gombong, mustinya lewat Pantai Ayah wilayah Selatan Gombong. So akhirnya 1 jam terjebak kepadatan arus balik utama lewat Gombong plus matikan mesin, ditambah isi bensin plus toilet 1/2jam. Akhirnya dpt petunjuk dari petugas pom bensin untuk balik arah lewat Banjarnegara-Banyumas-Kebasen-Sampang, yang totalnya ditempuh dalam waktu 2.5 jam (termasuk tidur dipom bensin banyumas 1/2 jam). Fiuhhhh...

############Cuti vs kemacetan#############
So, dari perkiraan-perkiraan tersebut, maka Saya membuat tabel prediksi untuk panduan saya pribadi dlm menghitung waktu cuti dan perkiraan waktu mudik atau balik pada tabel berikut:
Monggo...

Labels:


Prediksi jenis kelamin bayi

Ini adalah sebuah tabel yang berisi prediksi jenis kelamin bayi yang akan lahir, dimana tabel ini .
Parameternya adalah:
1. usia ibu calon bayi
2. bulan permulaan kehamilan, biasanya diketahui lewat alat-alat test kehamilan (ovutest, accurate, dst) atau tanya bidan/dokter.
misal seorang ibu berusia 27 tahun, bulan pertama kehamilan adalah Januari, maka diprediksi anaknya cewek.

Monggo di test...

sumber: kaskus.us

Labels: