Sabtu, 28 Januari 2012

Script PHP GIS Google Map Seperti Wikimapia dengan jQuery dan Mysql

Di sini kita akan belajar bagaimana membuat bentuk Rectangle (persegi) dari dua marker yang telah kita buat di google map, menyimpannya dalam database. Kita juga akan belajar bagaimana menampilkan semua daerah-daerah yang telah disimpan menggunakan jquery json, kemudian menampilkan informasi daerah yang telah ditandai menggunakan jendela informasi yang kita buat atau desain sendiri.


Membuat tabel datapeta di database

Berikut adalah struktur tabel datapeta di database MySQL

CREATE TABLE `datapeta` (
  `nomor` int(5) NOT NULL auto_increment,
  `judul` varchar(100) NOT NULL,
  `deskripsi` tinytext NOT NULL,
  `lat1` double NOT NULL,
  `lng1` double NOT NULL,
  `lat2` double NOT NULL,
  `lng2` double NOT NULL,
  `warna` varchar(10) NOT NULL,
  PRIMARY KEY  (`nomor`)
) 
 

Meloading Google Maps Javascript API

<script type="text/javascript" 
src="http://maps.google.com/maps/api/js?sensor=false"></script>
 

Menampilkan peta di halaman web


var jakarta = new google.maps.LatLng(-6.237281, 106.332724);
var petaoption = {
    zoom: 14,
    center: jakarta,
    mapTypeId: google.maps.MapTypeId.SATELLITE
};
peta = new google.maps.Map(document.getElementById("petaku"),petaoption);
 
Sebelumnya kita harus membuat objek <div id="petaku"></div> di web kita, yang berfungsi sebagi tempat google map diletakkan.

Mengambil data daerah yang sudah ditandai dari database, dengan format json

Berikut kode PHP untuk mengambil data dari database MySQL dan menampilkannya dalam format JSON
ambildata.php.
<?php
include "koneksi.php";
$akhir = $_GET['akhir'];
if($akhir==1){
    $query = "SELECT * FROM datapeta ORDER BY nomor DESC LIMIT 1";
}else{
    $query = "SELECT * FROM datapeta";
}
$data = mysql_query($query);

$json = '{"wilayah": {';
$json .= '"petak":[ ';
while($x = mysql_fetch_array($data)){
    $json .= '{';
    $json .= '"id":"'.$x['nomor'].'",
        "judul":"'.htmlspecialchars($x['judul']).'",
        "deskripsi":"'.htmlspecialchars($x['deskripsi']).'",
        "x1":"'.$x['lat1'].'",
        "y1":"'.$x['lng1'].'",
        "x2":"'.$x['lat2'].'",
        "y2":"'.$x['lng2'].'",
        "warna":"'.$x['warna'].'"
    },';
}
$json = substr($json,0,strlen($json)-1);
$json .= ']';

$json .= '}}';
echo $json;

?>

{"wilayah":
    {"petak":[
       {"id":"1",
        "judul":"wilayah1",
        "deskripsi":"ini adalah wilayah1",
        "x1":"-6.23728179931641",
        "y1":"106.332725524902",
        "x2":"-6.24197483062744",
        "y2":"106.340789794922",
        "warna":"#FF0000"
       },{
        "id":"2",
        "judul":"wilayah2",
        "deskripsi":"Ini adalah wilayah 2",
        "x1":"-6.22712850570679",
        "y1":"106.345596313477",
        "x2":"-6.22038793563843",
        "y2":"106.353668212891",
        "warna":"#FF0000"
       }
     ]
    }
}

Menampilkan di google map data daerah yang diambil dari database

Sekarang setelah kita mendapatkan data dengan format JSON, kita lihat bagaimana mengakses data JSON dan menampilkannya.

function ambildatabase(akhir){
    if(akhir=="akhir"){
        //url untuk mengambil data paling akhir
        //dieksekusi jika barusan menyimpan data
        url = "ambildata.php?akhir=1";
    }else{
        //url untuk mengambil data semuanya
        url = "ambildata.php?akhir=0";
    }
    $.ajax({
        url: url,
        dataType: 'json',
        cache: false,
        success: function(msg){
            for(i=0;i<msg.wilayah.petak.length;i++){
                judulx[i] = msg.wilayah.petak[i].judul;
                desx[i] = msg.wilayah.petak[i].deskripsi;
                petak = new google.maps.Rectangle({
                    map: peta,
                    fillColor: msg.wilayah.petak[i].warna,
                    fillOpacity: 0.3,
                    strokeColor: msg.wilayah.petak[i].warna,
                    strokeWeight: 1
                });
                var bingkai = new google.maps.LatLngBounds(
                    new google.maps.LatLng(msg.wilayah.petak[i].x1, msg.wilayah.petak[i].y1),
                    new google.maps.LatLng(msg.wilayah.petak[i].x2, msg.wilayah.petak[i].y2)
                );
                petak.setBounds(bingkai);
                setinfo(petak,i);
            }
        }
    });
} 
 
 
Dari contoh di atas, untuk mengakses judul dari data JSON yang telah kita buat sebelumnya adalah msg.wilayah.petak[i].judul, untuk mengakses deskripsi adalah msg.wilayah.petak[i].deskripsi

Memberi event listener click pada google map

google.maps.event.addListener(peta,'click',function(event){
    kasihtanda(event.latLng);
});
 
function kasihtanda(lokasi){
    var gambar_tanda = 'tanda.png';
    if(pertama == 0){
        tanda1 = new google.maps.Marker({
            position: lokasi,
            map: peta,
            icon: gambar_tanda
        });
        $("#x1").val(lokasi.lat());
        $("#y1").val(lokasi.lng());
        pertama = 1;
    }else{
        tanda2 = new google.maps.Marker({
            position: lokasi,
            map: peta,
            icon: gambar_tanda
        });
        $("#x2").val(lokasi.lat());
        $("#y2").val(lokasi.lng());
        buat_persegi();
        pertama = 0;
    }

}

function buat_persegi(){
    warnashape = $("#warnaku").val();
    
    //Membuat objek persegi/rectangle
    rectangle = new google.maps.Rectangle({
        map: peta,
        fillColor: warnashape,      //Mengatur warna persegi
        fillOpacity: 0.3,           //Mengatur transaprasi persegi
        strokeColor: warnashape,    //Mengatur warna border persegi
        strokeWeight: 1             //Mengatur ketebalan border
    });
    var latLngBounds = new google.maps.LatLngBounds(
        tanda1.getPosition(),
        tanda2.getPosition()
    );
    rectangle.setBounds(latLngBounds);
    
    //Menghapus kedua tanda/marker yang dibuat sebelumnya
    tanda1.setMap(null);
    tanda2.setMap(null);
}
 

Menyimpan ke database

$(document).ready(function(){
    $("#tombol_simpan").click(function(){
        var wrna = $("#warnaku").val();
        var x1 = $("#x1").val();
        var y1 = $("#y1").val();
        var x2 = $("#x2").val();
        var y2 = $("#y2").val();
        var judul = $("#judul").val();
        var des = $("#deskripsi").val();
        $("#loading").show();
        $.ajax({
            url: "simpanlokasi.php",
            data: "x1="+x1+"&y1="+y1+"&x2="+x2+"&y2="+y2+"&judul="+judul+"&des="+des+"&wrn="+wrna,
            cache: false,
            success: function(msg){
                alert(msg);
                $("#loading").hide();
                $("#x1").val("");
                $("#y1").val("");
                $("#x2").val("");
                $("#y2").val("");
                $("#judul").val("");
                $("#deskripsi").val("");
                ambildatabase('akhir');
                rectangle.setMap(null);
            }
        });
    });
    $("#tutup").click(function(){
        $("#jendelainfo").fadeOut();
    });
});
 

Kode lengkapnya

Untuk kode lengkapnya langsung download source code
tutorial-dasa-koneksi-php-dan-mysql
 

Script Notifikasi Seperti Facebook dengan jQuery dan PHP

Di facebook jika kita ada pesan baru, walaupun halaman gak direfresh maka akan muncul angka jumlah pesan dengan latar belakang merah. Ketika diklik akan mucul list pesan terbaru dari siapa dan kapan. Nah mari kita coba membuat notifikasi seperti facebok tersebut dengan menggunakan jQuery.
Struktur tabel_pesan di database MySQL adalah sebagai berikut :
--
-- Table structure for table `tabel_pesan`
--

CREATE TABLE `tabel_pesan` (
  `nomor` int(10) NOT NULL auto_increment,
  `waktu` varchar(20) NOT NULL,
  `dari` varchar(50) NOT NULL,
  `kepada` varchar(50) NOT NULL,
  `pesan` text NOT NULL,
  `sudahbaca` varchar(1) NOT NULL,
  PRIMARY KEY  (`nomor`)
) ;

Pada struktur tabel di atas, untuk mendeteksi sudah terbaca atau belum adalah pada field sudahbaca, bernilai 'N' jika belum dan 'Y' jika sudah dibaca.
Sekarang kita lihat kode jQuery untuk mengecek jika ada pesan terbaru.
function cek(){
    $.ajax({
        url: "cekpesan.php",
        cache: false,
        success: function(msg){
            $("#notifikasi").html(msg);
        }
    });
    var waktu = setTimeout("cek()",3000);
}

Pada kode di atas kita melakukan proses request dengan ajax ke file cekpesan.php. fungsi setTimeout() berfungsi untuk menjalankan fungsi cek() terus berulang setiap 3000 milidetik atau 3 detik.
Berikut kode cekpesan.php
 <?php
session_start();
include "config.php";
$userid = $_SESSION['userid'];
$pesan = mysql_query("SELECT nomor FROM tabel_pesan
    WHERE kepada='$userid' and sudahbaca='N'");
$j = mysql_num_rows($pesan);
if($j>0){
    echo $j;
}
?>
Untuk database dan kode lengkapnya silahkan download Source Code

Script PHP Membuat Aplikasi Chatting sederhana

Sekarang mari kita membuat aplikasi chatting dengan menggunakan php ajax dan mysql sebagai database. Di sini kita memanfaatkan ajax untuk komunikasi client (browser) ke server. Ajax setiap detik akan melakukan request ke server (tanpa harus refresh). Di sini kita bisa memanfaat fungsi setTimeout() pada javascript. Fungsi setTimeout() berguna untuk me-set timer setiap berapa per milisecond javascript mengeksekusi suatu fungsi, contoh :
setTimeout("ambilPesan()",1000);
Kode di atas berarti, eksekusi fungsi ambilPesan() setiap 1000 milisecond. Mari kita lihat konsep untuk membuat aplikasi chatting:
  1. Kita buat objek ajax yang nantiya bertugas melakukan komunikasi ke server
  2. User memasukkan nama, yang nantinya kita simpan dalam suatu variabel
  3. Ketika user selesai mengetik pesan, masukkan ke dalam database melalui ajax
  4. User, baik kita sendiri atau orang lain, setiap 1 detik akan mengecek ke server, apakah ada pesan baru, jika ada tampilkan.
Sekarang mari kita mulai membuat kode-kodenya
Berikut adah struktur tabel chat di database :
CREATE TABLE `chat` (
  `nomor` int(3) NOT NULL auto_increment,
  `nama` varchar(20) NOT NULL,
  `pesan` varchar(200) NOT NULL,
  `waktu` varchar(10) NOT NULL,
  PRIMARY KEY  (`nomor`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
 Pertama-tama mari kita buat halaman untuk chat di browser. chat.html

<html>
<head>
<title>
DRZ Chat 1.0
</title>
<script>
var ajaxku = buatAjax();
var tnama = 0;
var pesanakhir = 0;
var timer;
function taruhNama(){
    if(tnama==0){
        document.getElementById("nama").disabled = "true";
        tnama = 1;
    }else{
        document.getElementById("nama").disabled = "";
        tnama = 0;
    }
    ambilPesan();
}
function buatAjax(){
    if(window.XMLHttpRequest){
        return new XMLHttpRequest();
    }else if(window.ActiveXObject){
        return new ActiveXObject("Microsoft.XMLHTTP");
    }
}

function ambilPesan(){
    namaku = document.getElementById("nama").value
    if(ajaxku.readyState == 4 || ajaxku.readyState == 0){
        ajaxku.open("GET","ambilchat.php?akhir="+pesanakhir+"&nama="+namaku+"&sid="+Math.random(),true);
        ajaxku.onreadystatechange = aturAmbilPesan;
        ajaxku.send(null);
    }
}

function aturAmbilPesan(){
    if(ajaxku.readyState == 4){
        var chat_div = document.getElementById("div_chat");
        var data = eval("("+ajaxku.responseText+")");
        for(i=0;i<data.messages.pesan.length;i++){
            chat_div.innerHTML += "<font color=red>"+data.messages.pesan[i].nama+"</font> ";
            chat_div.innerHTML += "<font size=1>("+data.messages.pesan[i].waktu+")</font> ";
            chat_div.innerHTML += " : "+data.messages.pesan[i].teks+"<br>";
            chat_div.scrollTop = chat_div.scrollHeight;
            pesanakhir = data.messages.pesan[i].id;
        }
    }
    timer = setTimeout("ambilPesan()",1000);
}

function kirimPesan(){
    pesannya = document.getElementById("pesan").value
    namaku = document.getElementById("nama").value
    if(pesannya != "" && document.getElementById("nama").value !=""){
        ajaxku.open("GET","ambilchat.php?akhir="+pesanakhir+"&nama="+namaku+"&pesan="+pesannya+"&sid="+Math.random(),true);
        ajaxku.onreadystatechange = aturAmbilPesan;
        ajaxku.send(null);
        document.getElementById("pesan").value = "";
    }else{
        alert("Nama atau pesan masih kosong");
    }
}

function aturKirimPesan(){
    clearInterval(timer);
    ambilPesan();
}
function blockSubmit() {
    kirimPesan();
    return false;
}
</script>
</head>
<body>
Nama : <input type=text name=nama id=nama>
<input type=button value=login id=tmbl_login onclick=taruhNama()><p>
<div id="div_chat" style="height: 300px; width: 500px; overflow: auto; background-color: lightyellow; border: 1px solid #555555;">

</div>
<form onSubmit="return blockSubmit();">
Pesan : <input type=text name=pesan id=pesan size=50>
<input type=button value="kirim" onclick="kirimPesan()">
</form>
</body>
</html>
 
<?php
mysql_connect("localhost","root","");
mysql_select_db("test");

$nama = $_GET['nama'];
$pesan = $_GET['pesan'];
$waktu = date("H:i");
$akhir = $_GET['akhir'];

$json = '{"messages": {';
if($akhir==0){
    $nomor = mysql_query("select nomor from chat order by nomor desc limit 1");
    $n = mysql_fetch_array($nomor);
    $no = $n['nomor'] + 1;
    $json .= '"pesan":[ {';
    $json .= '"id":"'.$no.'",
              "nama":"Admin",
              "teks":"Selamat datang di chatting room",
              "waktu":"'.$waktu.'"
              }]';
    $masuk = mysql_query("insert into chat values(null,'Admin','$nama bergabung dalam chat','$waktu')");
}else{
    if($pesan){
        $masuk = mysql_query("insert into chat values(null,'$nama','$pesan','$waktu')");

    }
    $query = mysql_query("select * from chat where nomor > $akhir");
    $json .= '"pesan":[ ';
    while($x = mysql_fetch_array($query)){
        $json .= '{';
        $json .= '"id":"'.$x['nomor'].'",
                  "nama":"'.htmlspecialchars($x['nama']).'",
                  "teks":"'.htmlspecialchars($x['pesan']).'",
                  "waktu":"'.$x['waktu'].'"
                  },';
    }
    $json = substr($json,0,strlen($json)-1);
    $json .= ']';
}

$json .= '}}';
echo $json;
?> 
 
gampang bukan
download source kodenya disini 

Membuat GIS (Google Map Marker Multi Icon) dengan jQuery, PHP dan MySQL

Kali ini kita akan membuat aplikasi GIS dengan Google Map API, di mana aplikasi GIS ini, kita bisa membuat marker pada map, marker yang dibuat bisa macam-macam gambar iconnya, tergantung jenis lokasinya, apakah bandara, mesjid, restoran, dan lainnya. Setelah memberi tanda atau marker, kita bisa memberi nama lokasi tersebut dan juga deskripsinya, kemudian kita simpan ke database.
Pada aplikasi GIS ini juga, kita bisa menampilkan keseluruhan marker yang telah disimpan di database MySQL tersebut dengan bantuan PHP dan JSON jQuery. Mari kita lihat.
Algoritma membuat aplikasi GIS ini hampir sama dengan tutorial sebelumnya, Membuat GIS Google Map Seperti Wikimapia dengan jQuery dan Membuat Geographic Information System (GIS) Sederhana dengan Google Map dan Ajax jQuery, silahkan dibaca-baca di situ tutorial dengan google map. Untuk icon-icon yang digunakan bisa buat sendiri atau anda download di http://code.google.com/p/google-maps-icons/

KONSEP DASAR WEB GIS

Pengantar
Geographic Information System (GIS) merupakan sistem yang dirancang untuk bekerja dengan data yang tereferensi secara spasial atau koordinat-koordinat geografi. GIS memiliki kemampuan untuk melakukan pengolahan data dan melakukan operasi-operasi tertentu dengan menampilkan dan menganalisa data. Applikasi GIS saat ini tumbuh tidak hanya secara jumlah applikasi namun juga bertambah dari jenis keragaman applikasinya. Pengembangan applikasi GIS kedepannya mengarah kepada applikasi berbasis Web yang dikenal dengan Web GIS. Hal ini disebabkan karena pengembangan applikasi di lingkungan jaringan telah menunjukan potensi yang besar dalam kaitannya dengan geo informasi. Sebagai contoh adalah adanya peta online sebuah kota dimana pengguna dapat dengan mudah mencari lokasi yang diinginkan secara online melalui jaringan intranet/internet tanpa mengenal batas geografi penggunanya. Secara umum Sistem Informasi Geografis dikembangkan berdasarkan pada prinsip input/masukan data, managemen, analisis dan representasi data. Di lingkungan web prinsip-prinsip tersebut di gambarkan dan di implementasikan seperti pada table berikut :
GIS Prinsip
Pengembangan Web
Data Input Client
Manajemen Data DBMS dengan komponen spasial
Analisys Data GIS Library di Server
Representasi Data Client/server
Arsitektur
Untuk dapat melakukan komunikasi dengan komponen yang berbeda-beda di lingkungan web maka dibutuhkan sebuah web server. Karena standart dari geo data berbeda beda dan sangat spesifik maka pengembangan arsitektur system mengikuti arsitektur ‘Client Server’.
Gambar 1. Arsitektur WEB GIS
Gambar diatas menunjukan arsitektur minimum sebuah system Web GIS. Applikasi berada disisi client yang berkomunikasi dengan Server sebagai penyedia data melalui web Protokol seperti HTTP (Hyper Text Transfer Protocol). Applikasi seperti ini bisa dikembangkan dengan web browser (Mozzila Firefox, Opera, Internet Explorer, dll). Untuk menampilkan dan berinteraksi dengan data GIS, sebuah browser membutuhkan Pug-In atau Java Applet atau bahkan keduanya. Web Server bertanggung jawab terhadap proses permintaan dari client dan mengirimkan tanggapan terhadap respon tersebut. Dalam arsitektur web, sebuah web server juga mengatur komunikasi dengan server side GIS Komponen. Server side GIS Komponen bertanggung jawab terhadap koneksi kepada database spasial seperti menterjemahkan query kedalam SQL dan membuat representasi yang diteruskan ke server. Dalam kenyataannya Side Server GIS Komponen berupa software libraries yang menawarkan layanan khusus untuk analisis spasial pada data. Selain komponen hal lain yang juga sangat penting adalah aspek fungsional yang terletak di sisi client atau di server. Gambar berikut dua pendekatan yang menunjukan kemungkinan distribusi fungsional pada system client/server berdasarkan konsep pipeline visualization.
Gambar 2. Thin Vs Thick system pada Client Server
Pendekatan-1 : Thin Client : Memfokuskan diri pada sisi server. Hampir semua proses dan analisa data dilakukan berdasarkan request disisi server. Data hasil pemrosesan dikirimkan ke client dalam format HTML, yang didalamnya terdapat file gambar sehingga dapat dilihat dengan browser. Pada pendekatan ini interaksi pengguna terbatas dan tidak fleksibel
Pendekatan-2 : Thick / Fat Client : Pemrosesan data dilakukan disisi client, data dikirim dari server ke client dalam bentuk data vector yang disederhanakan. Pemrosesan dan penggambaran kembali dilakukan disisi client. Cara ini menjadikan user dapat berinteraksi lebih interaktif dan fleksibel.
Manajemen Data
Untuk melakukan menajeman data geografis paling tidak dibutuhkan sebuah DBMS (Databese Management System). Pemodelan berorientasi objek menjadi sangat dibutuhkan karena pemodelan basisdata relational tidak mampu melakukan penyimpanan data spasial. Pada analisis spasial system manajemen database memberikan beberapa keragaman. Ada beberapa keragaman applikasi yang dapat digunakan sebagai database seperti Oracle Spatial, PostgreSQL, Informix, DB2, Ingres dan yang paling popular saat ini adalah MySQL. Untuk mendapatkan pengembangan fungsional analisis pada level database beberapa DBMS telah mendukung procedural bahasa pemrograman. Oracle DBMS menawarkan dua kemungkinan untuk menghasilkan individual operation dilevel database. Yang pertama adalah PL/SQL sebuah procedural bahasa pemrograman. Yang kedua adalah Java Virtual Machine (JVM) untuk proses Java classes di level database.
Mendesain GUI
Untuk berinteraksi, berkomunikasi dan mendapatkan informasi perlu dirancang sebuah Graphical User Interface (GUI). GUI berinteraksi langsung dengan user. Karena informasi geografis biasanya sangat kompleks maka akan ditemui banyak kesulitan dalam pengarsipannya. Menciptakan aspek Dunia Virtual menjadi hal penting dalam mendesain GUI. Karakteristik untuk menciptakan dunia virtual adalah Level of Detail (LOD).
Gambar 3. Menciptakan Virtual World
Algoritma khusus dibutuhkan untuk mampu menampilkan se-invisible mungkin tampilan. Penggunaan PHP dan VRML (Virtual Reality Modeling Language) adalah sebuah ideal perancangan GUI untuk applikasi Web GIS. PHP menjadi bahasa yang paling popular untuk menciptakan web dinamis pada saat ini. VRML dikenalkan oleh Konsorsium Web3D untuk menghasilkan tampilan peta interaktif dalam web. PHP dapat menghasilkan banyak text informasi. Dalam PHP, salah satunya menjadi pengendali dari banyak informasi tersebut. Permintaan dikirimkan oleh VRML MIME (‘model/vrml’) dan kemudian menuliskan VRML nodenya. Server mengkomunikasikan semua kode PHP saat mengirimkan respon. Jadi pada line dimana kode JSP ditampilkan server mengirimkan kembali blank line kepada browser. Sangat perlu untuk memasukan header PHP dan VRML dan content type nya harus berubah sebelum VRML header ditentukan, hasil akhirnya bisa menjadi seperti dibawah ini :
<?php
Header (“Tipe-kontent : model/vrml”);
Echo “#VRML V2.0 utf8\n”;
?>
Contoh tersebut menggambarkan integrasi antara PHP dan VRML untuk membangun sebuah objek.
Detail Proses
Objek Geo Spasial terdiri dari informasi data spasial dan data non spasial. Informasi Spasial dapat divisualisasikan dengan mengkonversinya VRML dan data non Spasial ditampilkan secara dinamis di halaman HTML. Gambar berikut menunjukkan proses request data standart. Request memanggil desain dari PHP yang berinteraksi dengan database. Setelah menerima respon system mengikuti alur seperti pada gambar.
Gambar 4. Proses Request dan Respon
Database mengirimkan request data ke PHP, hasil respon dari request berupa format data dikirimkan kembali melalui browser. Disaat client melakukan request koneksi dilakukan ke DBMS, kemudian informasi spasial yang dipilih dari DBMS di convert kedalam bentuk VRML. Browser Plug In di sisi client menampilkan keluaran VRML sebagai keluaran menjadi peta. VRML juga menyediakan script yang memungkinkan sebuah proses disaat user mengklik objek. Melalui VRML ini request dikirimkan ke applikasi di server. Server menerima dan menterjemahkan menjadi informasi dan mengirimkanya ke HTML untuk di tampilkan ke Browser.
Untuk menerima data spasial dan non spasial dari DBMS dibutuhkan sebuah teknik yang mampu mengkomunikasikan antara client dan database pada server. Teknik seperti ini sudah tersedia di PHP, ASP, ASP.net, atau JSP. Pemilihan tekniknya disesuaikan dengan web Server yang digunakan. Detail arsitektur untuk menampilkan data GIS melalui web seperti pada gambar berikut :
Gambar 5. Arsitektut Publikasi Web GIS
Contoh Pemanfaatan Web GIS
Ketika terjadi Tsunami di Aceh bukti kehebatannya baru dapat kita analisa jika sudah ditampilkan kedalam bentuk peta. Gambar tersebut dapat memberikan banyak arti dan informasi lebih jika dilengkapi dengan data-data yang akurat.
Wilayah Uleule Sebelum Tsunami
Wilayah Uleule setelah Tsunami
Berikut ini adalah beberapa pengembangan applikasi GIS Web yang memungkinkan untuk dikembangkan :
Sektor
Gambaran
Contoh
Facility Management Manajemen Gedung Besar yang kompleks Organisasi ruangan seperti Kampus dan Rumah Sakit
Navigation Support Navigasi kendaraan Bermotor Location Base service yang menampilkan posisi saat ini dan
lingkungannya
Lingkungan Lingkungan perkotaan seperti karakteristik kebisingan, arah
angina, emisi, dll
Menampilkan pengurangan emisi
Bencana Alam Mengorganisasi aliran kerja penanganan bencana Mengarahkan team penyelamatan, menentukan dan mengontrol lokasi
pengungsian dengan real time data
Supply engineering Manajemen Supply Mengorganisasi jaringan
Referensi :
[1] Charter, Denny, Desain dan Applikasi GIS, PT. Elex Media Komputindo, Jakarta, 2004.
[2] Rahman, Abdul, Spasial Data Modelling For 3D GIS, Springer, Berlin, 2008
[3] Darmawan, Mulyanto, Pedoman Dasar Pembuatan Geospasial, Geospasial.com, 2006

Konsep Sistem Informasi Geografis (SIG)

1.1. Pengertian Sistem Informasi Geografis

Sistem Informasi Geografis (Geographic Information System/GIS) yang selanjutnya akan disebut SIG merupakan sistem informasi berbasis komputer yang digunakan untuk mengolah dan menyimpan data atau informasi geografis (Aronoff, 1989).

Secara umum pengertian SIG sebagai berikut:

“Suatu komponen yang terdiri dari perangkat keras, perangkat lunak, data geografis dan sumberdaya manusia yang bekerja bersama secara efektif untuk memasukan, menyimpan, memperbaiki, memperbaharui, mengelola, memanipulasi, mengintegrasikan, menganalisa dan menampilkan data dalam suatu informasi berbasis geografis.”
Pada dasarnya SIG dapat dikerjakan secara manual. Namun dalam pembahasan selanjutnya SIG akan selalu diasosiasikan dengan sistem yang berbasis komputer. SIG yang berbasis komputer akan sangat membantu ketika data geografis yang tersedia merupakan data dalam jumlah dan ukuran besar, dan terdiri dari banyak tema yang saling berkaitan.

SIG mempunyai kemampuan untuk menghubungkan berbagai data pada suatu titik tertentu di bumi, menggabungkannya, menganalisa dan akhirnya memetakan hasilnya. Data yang akan diolah pada SIG merupakan data spasial. Ini adalah sebuah data yang berorientasi geografis dan merupakan lokasi yang memiliki sistem koordinat tertentu, sebagai dasar referensinya. Sehingga aplikasi SIG dapat menjawab beberapa pertanyaan, seperti lokasi, kondisi, trend, pola dan pemodelan. Kemampuan inilah yang membedakan SIG dari sistem informasi lainnya.
Telah dijelaskan di awal bahwa SIG adalah suatu kesatuan sistem yang terdiri dari berbagai komponen. Tidak hanya perangkat keras komputer beserta dengan perangkat lunaknya, tapi harus tersedia data geografis yang akurat dan sumberdaya manusia untuk melaksanakan perannya dalam memformulasikan dan menganalisa persoalan yang menentukan keberhasilan SIG.

1.2. Data Spasial
Sebagian besar data yang akan ditangani dalam SIG merupakan data spasial, data yang berorientasi geografis. Data ini memiliki sistem koordinat tertentu sebagai dasar referensinya dan mempunyai dua bagian penting yang berbeda dari data lain, yaitu informasi lokasi (spasial) dan informasi deskriptif (atribut) yang dijelaskan berikut ini :
  1. lokasi (spasial), berkaitan dengan suatu koordinat baik koordinat geografi (lintang dan bujur) dan koordinat XYZ, termasuk diantaranya informasi datum dan proyeksi.
  2. deskriptif (atribut) atau informasi nonspasial, suatu lokasi yang memiliki beberapa keterangan yang berkaitan dengannya. Contoh jenis vegetasi, populasi, luasan, kode pos, dan sebagainya.
1.2.1. Format Data Spasial
Secara sederhana format dalam bahasa komputer berarti bentuk dan kode penyimpanan data yang berbeda antara file satu dengan lainnya. Dalam SIG, data spasial dapat direpresentasikan dalam dua format, yaitu:

1.2.1.1. Data Vektor
Data vektor merupakan bentuk bumi yang direpresentasikan ke dalam kumpulan garis, area (daerah yang dibatasi oleh garis yang berawal dan berakhir pada titik yang sama), titik dan nodes (titik perpotongan antara dua buah garis).

Gambar 1 Data Vektor

Keuntungan utama dari format data vektor adalah ketepatan dalam merepresentasikan fitur titik, batasan dan garis lurus. Hal ini sangat berguna untuk analisa yang membutuhkan ketepatan posisi, misalnya pada basis data batas-batas kadaster. Contoh penggunaan lainnya adalah untuk mendefinisikan hubungan spasial dari beberapa feature. Namun kelemahan data vektor yang utama adalah ketidakmampuannya dalam mengakomodasi perubahan gradual.

1.2.1.2. Data Raster
Data raster (disebut juga dengan sel grid) adalah data yang dihasilkan dari sistem penginderaan jauh. Pada data raster, obyek geografis direpresentasikan sebagai struktur sel grid yang disebut dengan pixel (picture element).

Gambar 2 Data Raster

Pada data raster, resolusi (definisi visual) tergantung pada ukuran pixel-nya. Dengan kata lain, resolusi pixel menggambarkan ukuran sebenarnya di permukaan bumi yang diwakili oleh setiap pixel pada citra. Semakin kecil ukuran permukaan bumi yang direpresentasikan oleh satu sel, semakin tinggi resolusinya. Data raster sangat baik untuk merepresentasikan batas-batas yang berubah secara gradual, seperti jenis tanah, kelembaban tanah, vegetasi, suhu tanah dan sebagainya. Keterbatasan utama dari data raster adalah besarnya ukuran file. Semakin tinggi resolusi grid-nya, semakin besar ukuran filenya, dan ini sangat bergantung pada kapasitas perangkat keras yang tersedia.

Masing-masing format data mempunyai kelebihan dan kekurangan. Pemilihan format data yang digunakan sangat tergantung pada tujuan penggunaan, data yang tersedia, volume data yang dihasilkan, ketelitian yang diinginkan, serta kemudahan dalam analisa. Data vektor relatif lebih ekonomis dalam hal ukuran file dan presisi dalam lokasi, tetapi sangat sulit untuk digunakan dalam komputasi matematis. Sedangkan data raster biasanya membutuhkan ruang penyimpanan file yang lebih besar dan presisi lokasinya lebih rendah, tetapi lebih mudah digunakan secara matematis.

1.2.2. Sumber Data Spasial
Salah satu syarat SIG adalah data spasial. Ini dapat diperoleh dari beberapa sumber antara lain:

1.2.2.1. Peta Analog
Peta analog yaitu peta dalam bentuk cetak. Seperti peta topografi, peta tanah dan sebagainya. Umumnya peta analog dibuat dengan teknik kartografi, dan kemungkinan besar memiliki referensi spasial seperti koordinat, skala, arah mata angin, dan sebagainya.
Dalam tahapan SIG sebagai keperluan sumber data, peta analog dikonversi menjadi peta digital. Caranya dengan mengubah format raster menjadi format vektor melalui proses digitasi sehingga dapat menunjukan koordinat sebenarnya di permukaan bumi.


1.2.2.2. Data Sistem Penginderaan Jauh
Data penginderaan jauh, seperti hasil citra satelit, foto-udara dan sebagainya, merupakan sumber data yang terpenting bagi SIG. Karena ketersediaan data secara berkala dan mencakup area tertentu. Dengan adanya bermacam-macam satelit di ruang angkasa dengan spesifikasi masing-masing, kita bisa memperoleh berbagai jenis citra satelit untuk beragam tujuan pemakaian. Data ini biasanya direpresentasikan dalam format raster.

1.2.2.3. Data Hasil Pengukuran Lapangan
Data pengukuran lapangan merupakan data yang dihasilkan berdasarkan teknik perhitungan tersendiri. Pada umumnya data ini merupakan sumber data atribut, contohnya batas administrasi, batas kepemilikan lahan, batas persil, batas hak pengusahaan hutan, dan lain-lain.

1.2.2.4. Data GPS (Global Positioning System)
Teknologi GPS memberikan terobosan penting dalam menyediakan data bagi SIG. Keakuratan pengukuran GPS semakin tinggi dengan berkembangnya teknologi. Data ini biasanya direpresentasikan dalam format vektor. Pembahasan mengenai GPS diterangkan dalam subbab terpisah.

1.3. Peta, Proyeksi Peta, Sistem Koordinat, Survei dan GPS
Data spasial yang dibutuhkan pada SIG dapat diperoleh dengan berbagai cara. Salah satunya melalui survei dan pemetaan, yaitu penentuan posisi/koordinat di lapangan. Berikut ini akan dijelaskan secara ringkas beberapa hal yang berkaitan dengan posisi/koordinat serta metode-metode untuk mendapatkan informasi posisi tersebut di lapangan.

1.3.1. Peta
Peta adalah gambaran sebagian atau seluruh muka bumi baik yang terletak di atas maupun di bawah permukaan dan disajikan pada bidang datar pada skala dan proyeksi tertentu (secara matematis). Karena dibatasi oleh skala dan proyeksi maka peta tidak akan pernah selengkap dan sedetail aslinya (bumi). Untuk itu diperlukan penyederhanaan dan pemilihan unsur yang akan ditampilkan pada peta.

1.3.2. Proyeksi Peta
Pada dasarnya bentuk bumi tidak datar, tapi mendekati bulat. Maka untuk menggambarkan sebagian muka bumi untuk kepentingan pembuatan peta, perlu dilakukan langkah-langkah agar bentuk yang mendekati bulat tersebut dapat didatarkan dan distorsinya dapat terkontrol. Caranya dengan melakukan proyeksi ke bidang datar.

1.3.2.1. Pengelompokan Proyeksi Peta
1.3.2.1.1. Yang Mempertahankan Sifat Asli
  1. Luas permukaan yang tetap (ekuivalen)
  2. Bentuk yang tetap (konform)
  3. Jarak yang tetap (ekuidistan) Perbandingan dari daerah yang sama untuk proyeksi yang berbeda :
Gambar

1.3.2.1.2. Yang Menggunakan Bidang Proyeksi
  • Bidang datar
  • Bidang kerucut
  • Bidang silinder
Gambar

1.3.2.2. Proyeksi Universal Transverse Mercator (UTM)
Proyeksi UTM dibuat oleh US Army sekitar tahun 1940-an. Sejak saat itu proyeksi ini menjadi standar untuk pemetaan topografi

1.3.2.2.1. Sifat-sifat Proyeksi UTM
  1. Proyeksi ini adalah proyeksi Transverse Mercator yang memotong bola bumi pada dua buah meridian, yang disebut dengan meridian standar. Meridian pada pusat zone disebut sebagai meridian tengah.
  2. Daerah di antara dua meridian ini disebut zone. Lebar zone adalah 6 sehingga bola bumi dibagi menjadi 60 zone.
  3. Perbesaran pada meridian tengah adalah 0,9996.
  4. Perbesaran pada meridian standar adalah 1.
  5. Perbesaran pada meridian tepi adalah 1,001.
  6. Satuan ukuran yang digunakan adalah meter.

1.3.2.2.2. Sistem Koordinat UTM

Gambar

Untuk menghindari koordinat negatif, dalam proyeksi UTM setiap meridian tengah dalam tiap zone diberi harga 500.000 mT (meter timur). Untuk harga-harga ke arah utara, ekuator dipakai sebagai garis datum dan diberi harga 0 mU (meter utara). Untuk perhitungan ke arah selatan ekuator diberi harga 10.000.000 mU.

Gambar

Wilayah Indonesia (90° – 144° BT dan 11° LS – 6° LU) terbagi dalam 9 zone UTM. Artinya, wilayah Indonesia dimulai dari zone 46 sampai zone 54 (meridian sentral 93° – 141° BT).

1.3.2.3. Metode Penentuan Posisi
Metode penentuan posisi adalah cara untuk mendapatkan informasi koordinat suatu objek di lapangan, contohnya koordinat titik batas, koordinat batas persil tanah dan lain-lain. Metode penentuan posisi dapat dibedakan dalam dua bagian, yaitu metode penentuan posisi terestris dan metode penentuan posisi extra-terestris (satelit).
Pada metode terestris, penentuan posisi titik dilakukan dengan melakukan pengamatan terhadap target atau objek yang terletak di permukaan bumi. Beberapa contoh metode yang umum digunakan adalah:
  1. Metode poligon.
  2. Metode pengikatan ke muka.
  3. Metode pengikatan ke belakang.
  4. Dan lain-lain.

Pada metode ekstra terestris, penentuan posisi dilakukan berdasarkan pengamatan terhadap benda atau objek di angkasa seperti bintang, bulan, quasar dan satelit buatan manusia. Beberapa contoh penentuan posisi extra terestris adalah sebagai berikut:
  1. Astronomi geodesi.
  2. Transit Dopler.
  3. Global Positioning System (GPS).
  4. Dan lain-lain.
1.3.3. Sistem Koordinat
Posisi suatu titik biasanya dinyatakan dengan koordinat (dua-dimensi atau tiga-dimensi) yang mengacu pada suatu sistem koordinat tertentu. Sistem koordinat itu sendiri dapat didefinisikan melalui spesfikasi tiga parameter berikut:

1.3.3.1. Lokasi Titik Nol dari Sistem Koordinat
Posisi suatu titik di permukaan bumi umumnya ditetapkan dalam/terhadap suatu sistem koordinat terestris. Titik nol dari sistem koordinat terestris ini dapat berlokasi di titik pusat massa bumi (sistem koordinat geosentrik), maupun di salah satu titik di permukaan bumi (sistem koordinat toposentrik).

1.3.3.2. Orientasi dari Sumbu-sumbu Koordinat
Posisi tiga-dimensi (3D) suatu titik di permukaan bumi umumnya dinyatakan dalam suatu sistem koordinat geosentrik. Tergantung dari parameter-parameter pendefinisi koordinat yang digunakan. Ada dua sistem koordinat yang umum digunakan, yaitu sistem koordinat Kartesian (X,Y,Z) dan sistem koordinat Geodetik (L,B,h), yang keduanya diilustrasikan pada gambar berikut.

Gambar

Koordinat 3D suatu titik juga bisa dinyatakan dalam suatu sistem koordinat toposentrik. Umumnya dalam bentuk sistem koordinat Kartesian (N,E,U) yang diilustrasikan pada gambar berikut.

Gambar

Parameter-parameter (kartesian, curvilinear) itu digunakan untuk mendefinisikan posisi suatu titik dalam sistem koordinat tersebut. Posisi titik juga dapat dinyatakan dalam 2D, baik dalam (L,B), ataupun dalam suatu sistem proyeksi tertentu (x,y) seperti Polyeder, Transverse Mercator (TM) dan Universal Transverse Mercator (UTM).

1.3.4. Metode Penentuan Posisi Global (GPS)
GPS adalah sistem navigasi dan penentuan posisi menggunakan satelit yang dikembangkan dan dikelola oleh Departemen Pertahanan Amerika Serikat. GPS dapat memberikan informasi tentang posisi, kecepatan dan waktu di mana saja di muka bumi setiap saat, dengan ketelitian penentuan posisi dalam fraksi milimeter hingga meter. Kemampuan jangkauannya mencakup seluruh dunia dan dapat digunakan banyak orang setiap saat pada waktu yang sama (Abidin,H.Z, 1995). Prinsip dasar penentuan posisi dengan GPS adalah perpotongan ke belakang dengan pengukuran jarak secara simultan ke beberapa satelit GPS seperti gambar berikut:

Gambar

1.3.4.1. Sistem GPS
Untuk dapat melaksanakan prinsip penentuan posisi di atas, GPS dikelola dalam suatu sistem yang terdiri dari 3 bagian utama, yaitu bagian angkasa, bagian pengontrol dan bagian pemakai, seperti gambar berikut:

Gambar

1.3.4.1.1. Bagian Angkasa
Terdiri dari satelit-satelit GPS yang mengorbit mengelilingi bumi. Jumlah satelit GPS adalah 24 buah. Satelit GPS mengorbit mengelilingi bumi dalam 6 bidang orbit dengan tinggi rata-rata setiap satelit ± 20.200 Km dari permukaan bumi.

Gambar

Setiap satelit GPS secara kontinu memancarkan sinyal-sinyal gelombang pada 2 frekuensi L-band (dinamakan L1 dan L2). Dengan mengamati sinyal-sinyal dari satelit dalam jumlah dan waktu yang cukup, kemudian data yang diterima tersebut dapat dihitung untuk mendapatkan informasi posisi, kecepatan maupun waktu.

1.3.4.1.2. Bagian Pengontrol
Adalah stasiun-stasiun pemonitor dan pengontrol satelit yang berfungsi untuk memonitor dan mengontrol kelayakan satelit-satelit GPS. Stasiun kontrol ini tersebar di seluruh dunia, seperti di Pulau Ascension, Diego Garcia, Kwajalein, Hawai, dan Colorado Springs. Di samping memonitor dan mengontrol fungsi seluruh satelit, ia juga berfungsi menentukan orbit dari seluruh satelit GPS.


Gambar

1.3.4.1.3. Bagian Pengguna
Adalah peralatan (Receiver GPS) yang dipakai pengguna satelit GPS, baik di darat, laut, udara
maupun di angkasa. Alat penerima sinyal GPS (Receiver GPS) diperlukan untuk menerima dan
memproses sinyal-sinyal dari satelit GPS untuk digunakan dalam penentuan posisi, kecepatan,
maupun waktu.
Secara umum receiver GPS dapat diklasifikasikan sebagai berikut:
  1. Receiver militer
  2. Receiver tipe navigasi
  3. Receiver tipe geodetik
1.3.4.2. Metode-metode Penentuan Posisi dengan GPS
Pada dasarnya konsep dasar penentuan posisi dengan satelit GPS adalah pengikatan ke belakang dengan jarak, yaitu mengukur jarak ke beberapa satelit GPS yang koordinatnya telah diketahui. Perhatikan gambar berikut :

Gambar

Prinsip Dasar Penentuan Posisi dengan GPS (sumber Abidin H.Z)
Penentuan posisi dengan GPS dapat dikelompokan atas beberapa metode, di antaranya:
  • Metode absolut,
  • Metode relatif (differensial).

1.3.4.2.1. Metode Absolut
Penentuan posisi dengan GPS metode absolut adalah penentuan posisi yang hanya menggunakan sebuah alat receiver GPS. Karakteristik penentuan posisi dengan cara absolut ini adalah sebagai berikut:

  1. Posisi ditentukan dalam sistem WGS 84 (terhadap pusat bumi).
  2. Prinsip penentuan posisi adalah perpotongan ke belakang dengan jarak ke beberapa satelit sekaligus.
  3. Hanya memerlukan satu receiver GPS.
  4. Titik yang ditentukan posisinya, bisa diam (statik) atau bergerak (kinematik).
  5. Ketelitian posisi berkisar antara 5 sampai dengan 10 meter.

Aplikasi utama metode ini untuk keperluan navigasi. Metode penentuan posisi absolut ini umumnya menggunakan data pseudorange. Namun metode ini tidak dimaksudkan untuk aplikasi-aplikasi yang menuntut ketelitian posisi yang tinggi.

1.3.4.2.2. Metode Relatif (Differensial)
Yang dimaksud dengan penentuan posisi relatif atau metode differensial adalah menentukan posisi suatu titik relatif terhadap titik lain yang telah diketahui koordinatnya. Pengukuran dilakukan secara bersamaan pada dua titik dalam selang waktu tertentu. Selanjutnya, data hasil pengamatan diproses dan dihitung sehingga akan didapat perbedaan koordinat kartesian 3 dimensi (dx, dy, dz) atau disebut juga dengan baseline antar titik yang diukur.

Karakteristik umum dari metode penentuan posisi ini adalah sebagai berikut:
  1. Memerlukan minimal dua receiver, satu ditempatkan pada titik yang telah diketahui koordinatnya.
  2. Posisi titik ditentukan relatif terhadap titik yang diketahui.
  3. Konsep dasar adalah differencing process, dapat mengeliminir atau mereduksi pengaruh dari beberapa kesalahan dan bias.
  4. Bisa menggunakan data pseudorange atau fase.
  5. Ketelitian posisi yang diperoleh bervariasi dari tingkat mm sampai dengan dm.
  6. Aplikasi utama: survei pemetaan, survei penegasan batas, survei geodesi dan navigasi dengan ketelitian tinggi.

1.3.4.3. Ketelitian Penentuan Posisi dengan GPS

Penentuan posisi dengan GPS dipengaruhi oleh faktor-faktor sebagai berikut:
  1. Ketelitian data terkait dengan tipe data yang digunakan, kualitas receiver GPS, level dari kesalahan dan bias.
  2. Geometri satelit, terkait dengan jumlah satelit yang diamati, lokasi dan distribusi satelit dan lama pengamatan.
  3. Metode penentuan posisi, terkait dengan metoda penentuan posisi GPS yang digunakan, apakah absolut, relatif, DGPS, RTK dan lain-lain.
  4. Strategi pemrosesan data, terkait dengan real-time atau post processing, strategi eliminasi dan pengoreksian kesalahan dan bias, pemrosesan baseline dan perataan jaringan serta kontrol kualitas.

1.3.4.4. Aplikasi-aplikasi GPS
Beberapa aplikasi dari GPS di antaranya adalah sebagai berikut:
  1. Survei dan pemetaan.
  2. Survei penegasan batas wilayah administrasi, pertambangan dan lain-lain.
  3. Geodesi, Geodinamika dan Deformasi.
  4. Navigasi dan transportasi.
  5. Telekomunikasi.
  6. Studi troposfir dan ionosfir.
  7. Pendaftaran tanah, Pertanian.
  8. Photogrametri & Remote Sensing.
  9. GIS (Geographic Information System).
  10. Studi kelautan (arus, gelombang, pasang surut).
  11. Aplikasi olahraga dan rekreasi.



Sumber:

http://pelagis.net/download/Modul_ArcGIS_I.rar

3. Komponen Pembentuk MapServer

Pengembangan MapSever sebagai sebuah aplikasi open source, banyak memanfaatkan aplikasi lain yang juga bersifat open source. Sedapat mungkin menggunakan aplikasi yang sudah tersedia jika memang memenuhi kebutuhan untuk menghemat sumber daya dan waktu pengembangan

3.1 Komponen Untuk Akses Data Spasial

Komponen pada kelompok ini bertugas untuk menangani baca/tulis data spasial, baik yang tersimpan sebagai file maupun tersimpan pada DBMS
  • Shapelib
    Shapefile merupakan library yang ditulis dalam bahasa C, untuk keperluan baca/tulis format data Shapefile (*.SHP) yang didefinisikan ESRI (Enviromental System Research Institute). Format Shapefile umum digunakan oleh berbagai aplikasi Sistem Informasi Geografik untuk menyimpan data vector simple (tanpa topologi) dengan atribut. Pada MapSever, format data Shapefile merupakan format data default.
  • GDAL/OGR
    GDAL (Geographic Data Abstraction LibraryI) merupakan library yang berfungsi sebagai penerjemah untuk berbagai format data raster. Library ini memungkinkan abstraksi untuk semua format data yang didukung, sehingga beragam format data tadi akan terlihat sebagai sebuah data model abstrak. Keberadaan data model abstrak tunggal akan memudahkan pengembang aplikasi karena dapat menggunkan antarmuka yang seragam untuk semua format data.. OGR merupakan library dengan fungsionalitas yang identik, untuk beragam format data vektor. Kode OGR sekarang ini digabung dalam kode library GDAL.

2. Pengenalan Mapserver

2.1 Pengenalan Mapserver

MapServer merupakan aplikasi freeware dan open source yang memungkinkan kita menampilkan data spasial (peta) di web. Aplikasi ini pertama kali dikembangkan di Universitas Minesotta, Amerika Serikat untuk proyek ForNet (sebuah proyek untuk menajemen sumber daya alam) yang disponsori NASA (Nasional Aeronautics and Space Administration). Dukungan NASA dilanjutkan dengan dikembangkan proyek TerraSIP untuk menajemen data lahan. Saat ini, karena sifatnya yang terbuka (open source), pengembangan MapServer dilakukan oleh pengembang dari berbagai negara

Pengembangan MapServer menggunakan berbagai aplikasi open source atau freeware seperti Shapelib untuk baca/tulis format data Shapefile, FreeType untuk merender karakter, GDAL/OGR untuk baca/tulis berbagai format data vektor maupun raster, dan Proj.4 untuk menangani beragam proyeksi peta.

Pada bentuk paling dasar, , MapServer berupa sebuah program CGI (Common Gateway Interface). Program tersebut akan dieksekusi di web server dan berdasarkan beberapa parameter tertentu (terutama konfigurasi dalam bentuk file *.MAP) akan menghasilkan data yang kemudian akan dikirim ke web browser, baik dalam bentuk gambar peta atau bentuk lain.

MapServer mempunyai fitur-fitur berikut :
  • Menampilkan data spasial dalam format vektor seperti : Shapefile (ESRI), ArcSDE (ESRI), PostGIS dan berbagai format data vektor lain dengan menggunakan library OGR
  • Menampilkan data spasial dalam format raster seperti TIFF/GeoTIFF, EPPL7 dan berbagai format data raster lain dengan menggunakan library GDAL
  • Menggunakan quadtree dalam indexing data spasial, sehingga operasi-operasi spasial dapat dilakukan dengan cepat.
  • Dapat dikembangkan (customizable), dengan tampilan keluaran yang dapat diatur menggunakan file-file template
  • Dapat melakukan seleksi objek berdasar nilai, berdasar titik, area, atau berdasar sebuah objek spasial tertentu
  • Mendukung rendering karakter berupa font TrueType
  • Mendukung penggunaan data raster maupun vektor yang di-tiled (dibagi-bagi menjadi sub bagian yang lebih kecil sehingga proses untuk mengambil dan menampilkan gambar dapat dipercepat)
  • Dapat menggambarkan elemen peta secara otomatis , skala grafis, peta indeks dan legenda peta
  • Dapat menggambarkan peta tematik yang dibangun menggunakan ekspresi logik maupun ekspresi reguler
  • Dapat menampilkan label dari objek spasial, dengan label dapat diatur sedemikian rupa sehingga tidak saling tumpang tindih
  • Konfigurasi dapat diatur secara on the fly melalui parameter yang ditentukan pada URL
  • Dapat menangani beragam system proyeksi secara on the fly

Saat ini, selain dapat mengakses MapServer sebagai program CGI, kita dapat mengakses MspServer sebagai modul MapScript, melalui berbagai bahasa skrip : PHP, Perl, Phyton atau Java. Akses fungsi-fungsi MapServer melalui skrip akan ebih memudahkan pengembangan aplikasi. Pengembang dapat memilih bahasa yang paling familiar.

2.2 Arsitektur Mapserver


Arsitektur Mapserver

Gb.1 Gambar arsitektur dasar dari aplikasi MapServer
Aplikasi mapserver sederhana terdiri dari:
  • Map File - Konfigurasi tfile teks yang terstruktur untuk sebuah aplikasi mapserver. Mendefiniskan bentuk area peta, memberitahukan dimana data peta dan konfigurasi dan juga output gambar peta, dan temporary folder peta. Juga mendefinisikan informasi layer termasuk layer peta dan data atributnya, termasuk juga sumber data (data source), proyeksi dan penyimbolan (symbology). Ekstensi filenya harus berupa .map atau kalo tidak mapserver tidak akan bisa mengenalinya.
  • Geographic Data - MapServer can utilize many geographic data source types. The default format is the ESRI shapefile. Many other data formats can be supported, this is discussed further below in Adding data to your site.
  • HTML Pages - the interface between the user and MapServer . They normally sit in Web root. In it’s simplest form, MapServer can be called to place a static map image on a html page. To make the map interactive, the image is placed in an html form on a page.
    CGI programs are ‘stateless’, every request they get is new and they don’t remember anything about the last time that they were hit by your application. For this reason, every time your application sends a request to MapServer, it needs to pass context information (what layers are on, where you are on the map, application mode, etc.) in hidden form variables or URL variables.
    A simple MapServer CGI application may include two html pages:
    • Initialization File - uses a form with hidden variables to send an initial query to the http server and MapServer. This form could be placed on another page or be replaced by passing the initialization information as variables in a URL.
    • Template File - controls how the maps and legends output by MapServer will appear in the browser. By referencing MapServer CGI variables in the template html, you allow MapServer to populate them with values related to the current state of your application (e.g. map image name, reference image name, map extent, etc.) as it creates the html page for the browser to read. The template also determines how the user can interact with the MapServer application (browse, zoom, pan, query).
      See also
  • MapServer CGI - The binary or executable file that receives requests and returns images, data, etc. It sits in the cgi-bin or scripts directory of the http server. The Web server user must have execute rights for the directory that it sits in, and for security reasons, it should not be in the web root. By default, this program is called mapserv
  • HTTP Server - serves up the html pages when hit by the user’s browser. You need a working HTTP (Web) server, such as Apache or Microsoft Internet Information Server, on the machine on which you are installing MapServer.

Arsitektur aplikasi pemetaan di web dibagi menjadi dua pendekatan sebagai berikut :
  • Pendekatan Thin Client
    Pendekatan ini menfokuskan diri pada sisi server. Hampir semua proses dan analisis data dilakukan berdasarkan request di sisi server. Data hasil pemrosesan kemudian dikirimkan ke klien dalam format standard HTML, yang di dalamnya terdapat file gambar dalam format standard (misalnya GIF, PNG atau JPG) sehingga dapat dilihat menggunakan sembarang web browser. Kelemahan utama pendekatan ini menyangkut keterbatasan opsi interaksi dengan user yan kurang fleksibel.
  • Pendekatan Thick Client
    Pada pendekatan ini, pemrosesan data dilakuakn di sisi klien menggunakan beberapa teknologi seperti kontrol ActiveX atau applet. Kontrol ActiveX atau applet akan dijalankan di klien untuk memungkinkan web browser dengan format data yang tidak dapat ditangani oleh web browser dengan kemampuan standard. Dengan adanya pemrosesan di klien, maka transfer data antara klien dengan web server akan berkurang

MapServer menggunakan pendekatan thin client. Semua pemrosesan dilakukan di sisi sever. Informasi peta dikirinkan ke web browser di sisi klien dalam bentuk file gambar (JPG, PNG, GIF atau TIFF).

File dokumentasi MapServer lebih lengkap bisa diunduh http://www.mapserver.org/documentation.html

Sumber:
  • http://student.eepis-its.edu/~syafur/IES/Syafur/buku_ta/Arifinbuku.doc
  • Dokumentasi MapServer: http://www.mapserver.org/documentation.html

Jumat, 27 Januari 2012

konfigurasi Gammu dengan HP nokia berbagai TIPE



1. install gammu lihat pada tutorial disini
2. install nokia  PC suite sebagai driver sebagai driver yang menghubungkan PC dengan HP (download).
3. cobalah tes koneksi denga n menggunakan HP sebagai modem
4. Jika koneksi ok maka dapat dipastika bahwa HP tersebut support dengan gammu
5. langkah konfigurasi selanjutnya disini

Memasang ReCaptcha di PHP

Anda sebel karena sering mendapati kiriman spam di buku tamu Anda? atau secara umum dari halaman form yang bisa diakses oleh publik? Kini spam-spam tersebut bisa kita filter dengan cara yang mudah menggunakan ReCaptcha. ReCaptcha ini tidak sembarang Captcha biasa, karena dia merupakan layanan API untuk penangkal Spam. Sehingga Anda tidak perlu repot-repot membuat anti spam tersebut. Anda hanya cukup registrasi di situs recaptcha.net selanjutnya taruh kode dan key pada script PHP yang kita buat, beres deh :-) Untuk contoh anti spam yang saya pasang menggunakan ReCaptcha

OK, sekarang kita bahas bagaimana cara memasang ReCaptcha tersebut. Untuk mudahnya, misalkan kita punya form berikut ini:
input.php
<html>
  <head>
    <title>Contoh Form</title>
  </head>
  <body>
     <h1>Contoh Form</h1>
     <form method="post" action="submit.php">
     Masukkan Input Text <input type="text" name="teks">
     <input type="submit" name="submit" value="Submit">
     </form>
  </body>
</html>
submit.php
<?php
   $input = $_POST['teks'];
   echo "Anda telah memasukkan input teks ".$input;
?>
Script contoh di atas cukup simpel yaitu akan menampilkan input teks yang dimasukkan dalam form. Nah sekarang kita akan menambahkan captcha pada form di atas. Selanjutnya jika kode captcha yang dimasukkan salah maka input teks yang dimasukkan tidak muncul, melainkan pesan peringatan bahwa kode yang dimasukkan salah.
Nah… sekarang langkah menambahkan script captcha dengan ReCaptcha adalah sbb:
Langkah pertama, silakan lakukan registrasi dahulu di http://ReCaptcha.net.
Langkah ke dua, untuk registrasi silakan klik ‘Use ReCaptcha on Your Site’
Captcha PHP
Langkah ke tiga, silakan klik ‘Sign UP’. Jika Anda sudah mempunyai akun Google langsung saja login.
Langkah ke empat, isikan nama domain situs Anda pada kotak yang disediakan. Jika Anda ingin memasang di banyak domain situs, harap dicentang ‘Enable this key on all domains (global key)’.

Nah… setelah disubmit, Anda akan mendapat Public Key dan Private Key. Harap dicatat baik-baik kedua key ini karena nantinya akan digunakan untuk mengakses API nya ReCaptcha.
Langkah ke lima, download file ‘recaptchalib.php’. File ini merupakan library ReCaptcha. Untuk mendownload file ini, silakan kunjungi situs ini.
Langkah ke enam, letakkan file ‘recaptchalib.php’ ini dalam direktori script form dan script pemrosesan formnya.
Langkah ke tujuh, sisipkan kode ini di dalam form untuk menampilkan kode captcha nya
input.php
<html>
  <head>
    <title>Contoh Form</title>
  </head>
  <body>
     <h1>Contoh Form</h1>
     <form method="post" action="submit.php">
     Masukkan Input Text <input type="text" name="teks"><br>
     <?php
        require_once('recaptchalib.php');
        $publickey = "...";
        echo recaptcha_get_html($publickey);
     ?>
     <br>
     <input type="submit" name="submit" value="Submit">
     </form>
  </body>
</html>
Keterangan:
Isikan Public Key Anda pada $publickey nya.
Langkah ke delapan, kita modif sedikit script submit.php nya sbb
submit.php
<?php
  require_once('recaptchalib.php');
  $privatekey = "...";
  $resp = recaptcha_check_answer ($privatekey,
                $_SERVER["REMOTE_ADDR"],
                $_POST["recaptcha_challenge_field"],
                $_POST["recaptcha_response_field"]);

  if (!$resp->is_valid)
  {
      // output jika kode captcha salah
      echo "Maaf kode captcha yang Anda masukkan tidak valid";
  }
  else
  {
      // proses jika kode captcha benar
      $input = $_POST['teks'];
      echo "Anda telah memasukkan input teks ".$input;
  }
?>
Keterangan:
Isikan Private Key Anda pada $privatekey
Berikut ini adalah tampilan form input setelah diberikan captcha dengan ReCaptcha.
Captcha PHP

Script PHP Untuk Backup MySQL

Melalui artikel ini saya akan mencoba memaparkan bagaimana cara membuat sendiri script PHP untuk keperluan backup MySQL menggunakan fasilitas mysqldump. Meskipun kita dapat dengan mudah membackup (dump) data-data yang tersimpan di MySQL menggunakan phpMyAdmin, tapi mungkin diantara Anda ingin membuat sendiri script untuk backup sebagai salah satu fitur aplikasi web yang sedang Anda buat.

Berikut ini tampilan script backup data MySQL yang nanti akan kita buat
script dump mysql
Pada tampilan di atas, kita bisa memilih tabel-tabel yang kita ingin backup dengan melakukan check pada pilihan yang disediakan. Setelah tombol ‘Backup Data’ diklik, maka kita bisa mendownload file backupnya.
script dump mysql
Seperti yang saya sampaikan di atas bahwa untuk keperluan backup data (dumping) MySQL ini nanti kita akan manfaatkan fitur mysqldump yang sudah tersedia di MySQL. Hanya saja mysqldump ini bentuknya adalah executable file yang harus dijalankan melalui shell. Anda dapat melihat file ini di dalam folder mysql/bin. Jika Anda menggunakan AppServ, maka mysqldump ini terletak di folder C:\AppServ\mysql\bin
Terus… bagaimana cara menjalankan mysqldump ini? Berikut ini perintahnya

mysqldump -u[user] -p[password] [namadb] [tabel1 tabel2 ...] > filebackup.sql

Perintah di atas digunakan untuk melakukan backup tabel1, tabel2, … dst yang ada di database bernama ‘namadb‘. Hasil backup tersebut disimpan di file bernama ‘filebackup.sql‘. Sedangkan [user] dan [password] itu adalah user dan password untuk koneksi ke mysqlnya.
OK.. sekarang kita mulai membuat script PHP nya. Pertama kita siapkan dahulu script untuk koneksi ke MySQL nya
koneksi.php

<?php
$dbUser = "...";
$dbPass = "...";
$dbName = "...";
$dbHost = "localhost";

mysql_connect($dbHost, $dbUser, $dbPass);
mysql_select_db($dbName);
?>

Berikutnya kita buat script untuk menampilkan daftar tabel yang ada di database yang kita sudah kita tentukan di $dbName pada file koneksi.php di atas. Daftar tabel ini nanti kita letakkan dalam sebuah form.
Untuk menampilkan semua tabel dalam sebuah database, gunakan query SQL

SHOW TABLES;

Ini dia script untuk menampilkan daftar tabel dalam formnya
dump.php

<?php
// membaca file koneksi.php
include "koneksi.php";

echo "<h1>Dump MySQL</h1>";
echo "<h3>Nama Database: ".$dbName."</h3>";
echo "<h3>Daftar Tabel</h3>";

// query untuk menampilkan semua tabel dalam database
$query = "SHOW TABLES";
$hasil = mysql_query($query);

// menampilkan semua tabel dalam form
echo "<form method='post' action='proses.php'>";
echo "<table>";
while ($data = mysql_fetch_row($hasil))
{
echo "<tr><td><input type='checkbox' name='tabel[]' value='".$data[0]."'></td><td>".$data[0]."</td></tr>";
}
echo "</table><br>";
echo "<input type='submit' name='submit' value='Backup Data'>";
echo "</form>";

?>

Terakhir… kita buat script proses.php untuk memproses backupnya. Dalam proses.php ini nanti, terdapat 2 bagian perintah, yaitu bagian untuk proses dump (backup) data serta bagian untuk proses download file hasil backup. Di sini diasumsikan nama file hasil backup adalah sama dengan nama databasenya.
proses.php

<?php
// membaca file koneksi.php
include "koneksi.php";

// membaca tabel-tabel yang dipilih dari form
$tabel = $_POST['tabel'];

// proses untuk menggabung nama-nama tabel yang dipilih
// sehingga menjadi sebuah string berbentuk 'tabel1 tabel2 tabel3 ...'

$listTabel = "";
foreach($tabel as $namatabel)
{
$listTabel .= $namatabel." ";
}

// membentuk string command menjalankan mysqldump
// diasumsikan file mysqldump terletak di dalam folder C:\AppServ\MySQL\bin

$command = "C:\AppServ\MySQL\bin\mysqldump -u".$dbUser." -p".$dbPass." ".$dbName." ".$listTabel." > ".$dbName.".sql";

// perintah untuk menjalankan perintah mysqldump dalam shell melalui PHP
exec($command);

// bagian perintah untuk proses download file hasil backup.

header("Content-Disposition: attachment; filename=".$dbName.".sql");
header("Content-type: application/download");
$fp = fopen($dbName.".sql", 'r');
$content = fread($fp, filesize($dbName.".sql"));
fclose($fp);

echo $content;

exit;
?>

Sederhana bukan membuatnya?

Related articles :