1. Pengantar MapServer
Dalam pengertian teknis yang paling dasar, MapServer adalah program CGI yang terpasang dan berjalan tapi tidak aktif dalam server (aktif hanya saat dipanggil). Saat rekues/permintaan dikirimkan ke mapserver, maka akan digunakan informasi yang dikirimkan lewat URL dan mapfile untuk membuat (generate) peta yang diinginkan. Permintaan ini bisa juga termasuk permintaan untuk membuat legenda, peta referensi, batang skala, dan variabel lain yang dikirimkan ke CGI tadi. Gambar berikut merupakan konsep dasar yang banyak digunakan pada aplikasi mapserver.

Mapserver sangat bisa dikembangkan dan dikustomisasi. Juga bisa dibangun untuk mendukung berbagai format data input dan output. Ini dilakukan saat file biner mapserver dikompilasi. Silakan kunjungi situs utama Mapserver untuk melihat daftar fitur lengkapnya. Banyak juga fitur yang didukung tetapi tidak secara built-in, dan bisa dipanggil dengan penggunaan OGR.
2. MapScript
Mapscript menyediakan antar muka pemrograman (scripting) pada Mapserver untuk membangun aplikasi webmapping. Penggunaan Mapscript tidak bergantung pada Mapserver CGI, artinya walaupun Mapserver CGI tidak ada tetapi jika mapscript tersedia, anda masih bisa mengembangkan webmapping berbasis mapserver dengan mapscript ini. Mapscript merupakan modul tambahan untuk bahasa pemrograman umum yang kita kenal untuk memanggil fungsi-fungsi yang disediakan mapserver.
3. Anatomi Aplikasi Mapserver
Sebuah aplikasi mapserver sederhana terdiri dari:
- Mapfile - adalah file konfigurasi terstruktur untuk aplikasi mapserver anda. Berisi konfigurasi wilayah peta anda, lokasi data dalam server dan format output dan lainnya. Juga berisi layer-layer peta anda, sumber data, proyeksi dan simbologi. Biasanya adalah file teks dengan ekstensi .map.
- Data Geografis - Mapserver bisa menggunakan beberapa jenis/format sumber data geografis. Format utama yang didukung adalah ESRI Shapefile.
- Halaman HTML - merupakan jembatan antara user dan mapserver. Berupa file HTML dalam server/hosting anda. Mapserver bisa dipanggil untuk membuat peta statis dalam halaman HTML anda, atau untuk membuatnya interaktif anda bisa membuat form dalam HTML ini.
CGI adalah program yang 'stateless', setiap rekues yang dikirim adalah selalu baru, dia tidak bisa mengingat apa yang sudah dilakukannya sebelumnya lewat permintaan anda. Itulah sebabnya, aplikasi anda harus mengirim terus parameter-parameter yang diinginkan (layer apa saja, di wilayah mana peta ditampilkan, mode aplikasi, dsb) yang bisa ditentukan lewat variabel tersembunyi dalam form atau lewat URL.
Aplikasi/form mapserver sederhana bisa terdiri dari dua halaman HTML:
- File inisialisasi - menggunakan form dengan variabel tersembunyi untuk mengirim kueri awal ke webserver dan mapserver. Form ini bisa ditempatkan secara terpisah atau digantikan dengan mengirim variabel lewat URL.
- File templat - untuk mengatur bagaimana tampilan peta, legenda dan informasi lainnya disajikan dalam halaman HTML lewat browser. Dengan mengirim referensi variabel Mapserver CGI pada templat HTML, anda akan meminta mapserver menerjemahkannya menjadi nilai variabel bergantung pada status terakhirnya (misalnya nama peta, peta referensi, besar/cakupan peta, dsb). Templat ini juga akan menentukan bagaimana nantinya pengunjung berinteraksi dengan aplikasi mapserver (perbesaran/pengecilan, menggeser peta, kueri, dsb).
- Mapserver CGI - file biner yang dieksekusi untuk menerima permintaan/rekues dan menerjemahkannya menjadi gambar peta, data, dsb. Berada di direktori cgi-bin atau direktori lain yang ditentukan pada webserver. Di RuangWeb.com ini berada di /cgi-sys pada domain anda.
- Webserver - aplikasi yang menyajikan halaman HTML pada browser. RuangWeb.com menggunakan Apache sebagai webservernya.
4. Memulai
Strategi terbaik dalam mempelajari cara membangun aplikasi Mapserver dan mengerti bagaimana cara kerjanya adalah memulainya dengan sederhana. Meskipun jika tujuan utama anda adalah membangun aplikasi yang rumit, dengan teknologi terkini, mulailah dengan langkah awal yang kecil. Coba dengan menginstal dan menjalankan demo, lalu sesuaikan sedikit demi sedikit dengan yang anda inginkan. Berikut adalah yang anda butuhkan untuk memulai.
- Hardware untuk server
RuangWeb sudah menyediakan server yang cukup bertenaga untuk aplikasi mapserver anda, anda bisa memilih shared mapserver gis hosting atau dengan VPS dan dedicated server sendiri. - Software
Jika anda memilih shared mapserver gis hosting, semua software yang dibutuhkan untuk menjalankan Mapserver sudah diinstal lengkap dengan seluruh pustaka/librari yang dibutuhkan. Jika anda saat ini menyewa VPS atau dedicated server, RuangWeb bisa menginstal semua software yang dibutuhkan dengan biaya yang terjangkau. - Kemampuan Teknis
Sebagai tambahan untuk mempelajari bagaimana semua komponen dalam Mapserver bekerja dan mempelajari cara penulisan/syntax mapfile, membangun aplikasi dasar, dibutuhkan beberapa pemahaman konsep dan keterampilan teknis tersendiri.
Anda harus mengerti cara membuat dan mengedit file HTML, dan mengerti bagaimana form HTML bekerja. Karena tujuan utama membangun aplikasi Mapserver adalah untuk membuat peta, maka dibutuhkan juga pemahaman data geografis dan proyeksi peta. Dan seiring dengan berkembangnya kebutuhan anda untuk membangun aplikasi yang lebih kompleks, maka kemudian akan dibutuhkan juga kemampuan dalam SQL, DHTML/JavaScript, database, ekspresi, kompilasi dan scripting.
5. Membangun Aplikasi Mapserver Pertama Anda
- Menginstal Mapserver
Download semua paket/kode sumber yang dibutuhkan untuk menginstal Mapserver pada sistem operasi anda dari OSGeo atau MapTools. Jika sudah terinstal anda bisa melihat fitur mapserver dengan menjalankan 'mapserv -v' sebagai berikut:
MapServer version 5.2.0 OUTPUT=GIF OUTPUT=PNG OUTPUT=JPEG OUTPUT=WBMP OUTPUT=SVG SUPPORTS=PROJ SUPPORTS=FREETYPE SUPPORTS=ICONV SUPPORTS=WMS_SERVER SUPPORTS=WMS_CLIENT SUPPORTS=WFS_SERVER SUPPORTS=WFS_CLIENT SUPPORTS=WCS_SERVER SUPPORTS=SOS_SERVER SUPPORTS=GEOS INPUT=EPPL7 INPUT=POSTGIS INPUT=OGR INPUT=GDAL INPUT=MYGIS INPUT=SHAPEFILEAnda juga bisa menguji apakah Mapserver terinstal dengan baik dengan mencoba mengakses http://domainanda/cgi-bin/mapserv lewat browser. Jika pesan yang muncul adalah 'No query information to decode. QUERY_STRING not set.', maka instalasi sudah berhasil.
- Mencoba demo
Download Mapserver Demo dan coba pasang pada hosting/vps/server anda. Unzip dan baca dokumentasinya, anda harus menguploadnya dan mengubah sedikit konfigurasi yang disesuaikan dengan lokasi pada hosting anda (biasanya edit file MAP atau HTML). Lalu arahkan browser anda pada http://demoanda/init.html dan klik tombol 'Initialize'. Jika masih ada kesalahan, pelajari dimana kesalahannya dan perbaiki supaya demo tersebut bisa berjalan dengan benar.
Anda bisa melihat contoh demo di http://mapserver.ruangweb.com/
6. Membuat Situs Webmapping Anda Sendiri
Sekarang, setelah and berhasil mencobanya dengan demo, anda bisa menggunakan aplikasi demo ini dengan menggunakan data anda sendiri. Tambahkan LAYER baru pada mapfile menurut data geografis milik anda (anda juga mungkin perlu menghapus data yang ada dalam demo tersebut, atau menonaktifkannya dengan membuat statusnya menjadi OFF).
Kecuali jika data milik anda berada pada wilayah yangasama dengan data pada demo, anda perlu mengubah MAP EXTENT untuk disesuaikan dengan cakupan wilayah data anda. Untuk mengetahui cakupan wilayah data, anda bisa menggunakan software GIS yang anda kuasai. UNIT yang digunakan pada MAP EXTENT ini harus dalam UNIT yang digunakan pada proyeksi peta hasil. Jika anda menambahkan data yang berbeda proyeksinya, maka anda perlu memproyeksikan layer data tersebut dengan menambah blok PROJECTION dalam map file pada setiap LAYER yang berbeda proyeksi.
-
Menambah Data
Mapserver mendukung beberapa format data secara default, format data lainnya bisa digunakan lewat GDAL dan OGR.
- Data Vektor
Data vektor berisi fitur yang terdiri dari titik, garis dan poligon. Secara default data vektor yang didukung adalah format ESRI Shapefile, tapi anda juga bisa menggunakan data vektor dari database seperti PostGIS, Geography Markup Language (GML), Mapinfo, delimited text file, dan format lainnya lewat OGR. - Data Raster
Data raster merupakan data dalam bentuk citra atau grid. Sebagai default Mapserver mendukung Tiff/GeoTiff dan EPPL7.
- Data Vektor
-
Proyeksi
Karena bumi berbentuk bulat dan permukaan peta atau monitor berbentuk datar, maka akan terjadi penyimpangan (distorsi) saat menampilkan data geografis pada media 2 dimensi. Untuk itu digunakan proyeksi untuk merepresentasikan bentuk bulat itu ke dalam 2 dimensi. Dalam melakukan representasi bentuk 3D ke 2D ini, beberapa atribut asli (misalnya luas, arah, jarak dan skala) akan mengalami penyimpangan/distorsi. Proyeksi yang berbeda akan menghasilkan akurasi atribut yang berbeda pula, tergantung pada lokasi dan proyeksi yang digunakan.
Dengan Mapserver, jika anda memiliki set data yang berproyeksi sama (atau tidak berproyeksi dengan sistem lintang dan bujur), anda tidak perlu menyertakan info proyeksi ke dalam mapfile. Dalam membangun aplikasi Mapserver pertama anda, penyederhanaan ini sangat disarankan.
Penentuan proyeksi juga bisa dilakukan sambil jalan (on the fly projection) dengan adanya dukungan librari Proj pada kompilasi Mapserver.
7. Menambah Fitur Pada Aplikasi Mapserver Anda
-
Menambahkan Kueri
Ada dua cara utama untuk melakukan kueri pada data spasial. Keduanya akan menghasilkan keluaran data dari penggunaan templat dan penggantian variabel CGI. Untuk menghasilkan peta hasil kueri bisa dilakukan dengan QUERYMAP.
Supya bisa dikueri, setiap LAYER pada mapfile (atau setiap CLASS pada LAYER) harus mempunyai templat. Informasi selengkapnya tentang variable CGI yng digunakan untuk menentukan kueri bisa anda lihat di Referensi Mapserver CGI.- Kueri Atribut
Pengunjung memilih fitur menurut data yang berasosiasi dengan fitur tersebut. Contoh: 'Tampilkan semua danau yang kedalamannya lebih dari 30 meter', dimana 'kedalaman' merupakan field pada .dbf shapefile atau database spasial. Atribut kueri didapat dengan mengirimkan informasi definisi kueri ke Mapserver lewat URL (atau lewat form). Mode=itemquery akan menghasilkan keluaran tunggal, sedang untuk mengkueri lebih dari satu variabel digunakan mode=itemnquery.
Rekues juga harus menyertakan QLAYER untuk menentukan LAYER apa yang akan dikueri, dan QSTRING yang merupakan nilai yang dicari. Kemudian juga bisa ditambahkan QITEM sebagai tambahan pada QSTRING untuk menentukan field mana yang dikueri. Kueri atribut hanya berlaku pada cakupan wilayah (EXTENT) yang ditentukan pada mapfile. - Kueri spasial
Pengunjung memilih fitur dengan klik atau membuat wilayah kueri (biasanya berupa kotak) pada peta. Sama seperti sebelumnya, rekues dikirim lewat URL atau lewat form. Dengan menentukan mode=QUERY, saat pengunjung meng-klik pada satu titik di peta, maka kueri akan dilakukan pada fitur yang terdekat dengan yang di-klik. Dengan mode=NQUERY, semua fitur yang ditemukan lewat klik atau membuat kotak pada peta akan dikueri. Opsi kueri selengkapnya bisa dilihat di Referensi Mapserver CGI.
- Kueri Atribut
-
Antarmuka
Setelah melewati pembuatan aplikasi Mapserver dasar, biasanya pengguna Mapserver ingin menambahkan fitur untuk mempercantik aplikasinya, yang sering tidak bisa didapat hanya dengan templat HTML saja. Anda bisa menggunakan DHTML, Java atau Flash pada sisi klien/pengunjung untuk mempercantik aplikasi webmapping anda. Demo untuk DHTML dan Flash bisa anda lihat untuk anda unduh dan coba. JBox adalah applet Java untuk membangun antarmuka Mapserver.
-
Optimasi Data
Organisasi data sama pentingnya dengan konfigurasi hardware dalam optimasi aplikasi Mapserver untuk mendapatkan kinerja yang baik. Mapserver merupakan aplikasi yang cukup efisien, tetapi dengan mengurangi jumlah proses yang dibutuhkan saat pengunjung melakukan rekues, anda akan bisa meningkatkan kinerja. Berikut ini adalah beberapa petunjuk untuk melakukan optimasi:
- Meng-indeks data - Dengan membuat indeks spasial pada shapefile anda dengan menggunakan shptree. Indeks spasial juga sebaiknya dilakukan jika anda menggunakan database spasial seperti PostGIS atau Oracle Spatial.
- Membuat Grid/Tile - Idealnya, data anda dipotong-potong menjadi bagian wilayah/kotak yanglebih kecil dari keseluruhan cakupan wilayah data anda. Ada kelemahan jika anda tidak melakukan ini, dimana server akan berusaha menerjemahkan dari data yang besar dan menampilkan hanya sebagiannya saja, selain waktu yang lebih lama juga penggunaan CPU dan memori menjadi lebih boros. Dengan memecah data anda dan membuat indeks grid/blad/tile Mapserver hanya membaca pada wilayah yang diperlukan. Data shapefile bisa dipecah menjadi beberapa bagian yang lebih kecil, kemudian shapefile tileindex tersebut bisa dibuat dengan "tile4ms", dan shapefile tileindex untuk data raster bisa dibuat dengan gdaltindex.
- Klasifikasi Awal Data - Dengan Mapserver kita bisa menggunakan EXPRESSION yang cukup kompleks untuk mengklasifikasikan data. Tetapi penggunaan ekspresi logis dan reguler ini membutuhkan resource server yang lebih banyak. Untuk meningkatkan efisiensi, kita bisa membagi data menjadi beberapa kelas, untuk menentukan field apa yang dipakai bisa menggunakan CLASSITEM dan mengisinya dengan nilai sederhana untuk mengindentifikasi kelas tersebut, misalnya kelas 1, 2, 3 atau 4 untuk data dengan empat kelas klasifikasi. Kemudian anda bisa melakukan perbandingan sederhana pada bagian EXPRESSION.
- Proses Awal Citra - Lakukan proses yang membutuhkan resource besar di awal. Selengkapnya, lihat Raster Howto.
- Generalisasi Peta Inset/Indeks - Buatlah peta indeks/inset yang sederhana dengan data yang digeneralisasi dan dengan skala rendah, kemudian gunakan layer seperlunya saja dengan memanfaatkan LAYER MINSCALE dan LAYERMAXSCALE untuk menampilkan data yang lebih detil menurut perbesarannya (zoom). Gunakan konsep yang sama pada citra.
8. Mendapatkan Bantuan tentang Mapserver
Bantuan atau dukungan atas Mapserver bisa didapatkan lewat beberapa cara:
-
Dokumentasi
Dokumentasi Mapserver bisa didapat dari beberapa bentuk:
- Referensi - dokumentasi resmi untuk cara penulisan/syntax, struktur, dsb.
- Howto - Panduan langkah demi langkah
- Tutorial - Tutorial detil
- FAQ - Pertanyaan umum tentang Mapserver
- Pesan Kesalahan
-
Arsip Milis
- Arsip mailing list Mapserver. Mohon periksa di sini dulu sebelum mengirimkan pertanyaan pada milis, ada kemungkinan pertanyaan anda sudah ada jawabanny.
- Arsip dengan fasilitas pencarian juga tersedia
-
Mengirim Pertanyaan
- Listserv
Daftar, dan kirim pertanyaan anda ke listserv Mapserver Users. Pertanyaan pada milis ini akan dijawab dengan cepat dan bahkan dijawab oleh pengembangnya langsung. Beberapa hal yang perlu diperhatikan:- Lakukan pencarian dulu pada Arsip, adalah wajar jika orang bosan dengan pertanyaan yang sama berulang-ulang.
- Berikan info tentang konfigurasi dan versi Mapserver anda, juga mapfile, templat dan info lain yang terkait dengan pertanyaan anda.
- Selalu informasikan hasil anda setelah mendapat tanggapan dari milis.
- IRC
Pengguna dan pengembang Mapserver juga bisa ditemui di Internet Relay Chat (IRC), pada channel #mapserver di irc.freenode.net.
- Listserv
-
Contoh Aplikasi
- Galeri
Contoh situs-situs Mapserver. - Tutorial
Perry Nacionales mengembangkan Tutorial yang sangat bagus tentang bagaimana cara membangun aplikasi Mapserver. Anda diajak untuk menambahkan koleksi contoh jika ada contoh kasus yang terlewat. - Test Suite
Demonstrasi beberapa fungsionalitas Mapserver. - Buku
- Web Mapping Illustrated, oleh Tyler Mitchell. Berisi panduan dan contoh penggunaan aplikasi web mapping, software GIS opensource, Mapserver, Web services dan PostGIS.
- Mapping Hacks, oleh Schuyler Erle, Rich Gibson dan Jo Walsh. Dengan kreatif mendemonstrasikan perangkat dan konsep pemetaan dijital. Mapserver merupakan salah satu dari 100 bagian yang dijelaskan, tetapi bagian lainnya berguna bagi pemahaman konsep dan inspirasi.
- Beginning MapServer: Opensource GIS Development, oleh Bill Kropla. Buku ini khusus membahas Mapserver, berisi cara instalasi, konfigurasi, topik dan fitur dasar Mapserver, keterhubunganny dengan data dinamis, topik lanjutan, Mapscript dan pembuatan aplikasi.
- Galeri