21-Map Server-Intro - Elista

advertisement
Map Server + PHP/MapScript
Catur Iswahyudi
Pendahuluan
• 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
• Sebagai web mapping service, mapserver dapat
melakukan berbagai kegiatan:
– Membuat CGI yang berfungsi sebagai jembatan
antara mapserver – web server.
– Mencari basis data informasi dengan perantara peta.
– Membuat laporan berdasarkan data tabular (attribut)
GIS.
• 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.
• Dari kegiatan-kegiatan tersebut aplikasi mapserver
terbagi menjadi dua:
– Map file
– Map script / Map server CGI
• Map file berguna untuk mengubah database spasial
menjadi bentuk peta.
• Map script berguna untuk membuat tools aplikasi
webGIS seperti panning, zooming, identify, dan lainnya.
• Sebagai server, mapserver memiliki beberapa
komponen pembentuk untuk menunjang
pembentukan sistem informasi geografis.
– Komponen Penggambaran Peta
– Komponen Proyeksi Peta, dan
– Komponen Akses Data Spasial
• Ketiga komponen tersebut memiliki library masingmasing.
• Untuk penggambaran peta, server akan menampilkan
kepada user peta dalam format vektor maupun raster.
Libpng; library untuk penampilan peta dalam bentuk
.png. Libjpeg; library untuk penampilan dalam bentuk
.jpeg, dan GD; library untuk penampilan peta raster dan
vektor.
• Proyeksi peta memiliki satu library yang populer yaitu
Proj.4. yang memberikan informasi sistem referensi
koordinat dan datum yang digunakan dalam data
spasial.
• Sedangkan komponen akses data spasial, terdapat
Shapelib; library untuk mengakses data spasial dalam
bentuk .shapefile (bentukan format file vector produksi
ESRI), dan GDAL/OGR; library untuk mengakses data
spasial berbagai format yang disetujui oleh OGC (Open
Geospatial Consortium).
• Saat ini, selain dapat mengakses MapServer
sebagai program CGI, kita dapat mengakses
MapServer sebagai modul MapScript, melalui
berbagai bahasa skrip : PHP, Perl, Phyton atau
Java.
• Akses fungsi-fungsi MapServer melalui skrip akan
lebih memudahkan pengembangan aplikasi.
Pengembang dapat memilih bahasa yang paling
familiar.
Fitur MapServer
• 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.
Fitur MapServer (2)
• 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)
Fitur MapServer (3)
• 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
Arsitektur Umum Aplikasi Web GIS
Client Side
Server Side
Database
Server
Web Browser
Web Server
Application
Server
Map Server
• Interaksi antara client-server (request-respon).
• Web server menerima request client, akan tetapi web server
tidak memiliki kemampuan pemrosesan peta, maka diteruskan
ke application server dan map server.
• Hasil dikembalikan ke web server berupa paket file HTML atau
applet.
14
Arsitektur MapServer
Aplikasi mapserver sederhana
terdiri dari:
• Map File - Konfigurasi file 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.
• 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 dapat menangani
berbagai macam tipe data geografis.
• The default format is the ESRI shapefile.
• Ref:
http://www.mapserver.org/introduction.html#ad
ding-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.
• 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 Web Mapping
• 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 yang 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).
Komponen Pembentuk MapServer
• Kebutuhan MapServer: Webserver (Apache, IIS) dan
komponen MapServer.
• Komponen MapServer dibagi menjadi 4 kategori:
1.
2.
3.
4.
Komponen utk akses data spasial
Komponen utk penggambaran peta
Komponen utk menangani proyeksi peta on the fly
Komponen pendukung
Komponen Pembentuk MapServer (2)
1. Komponen untuk Akses Data Spasial
• Digunakan utk baca/tulis data spasial
(file/DBMS).
• Meliputi:
– Shapelib: library ditulis bahasa C, utk keperluan
baca/tulis format data Spahefile (*.SHP) by ESRI.
Format Shapefile digunakan utk menyimpan data
vektor sederhana (tanpa topologi) + atribut. Pada
MapServer shapefile adalah default data type.
25
Komponen Pembentuk MapServer (2)
– GDAL/OGR (Geofraphic Data Abstraction
Library):
•
•
GDAL: library sbg penterjemah berbagai format data
raster. (misal utk akses data: Arc/Info, ESRI, .gif,
TIFF/GeoTIFF, GRASS raster, dll.
OGR: library utk membaca beragam format data
vektor. Kode OGR digabung dgn library GDAL utk
membaca format data vektor: Arc/Info, .csv, ESRI,
Mapinfo file, MySQL, ODBC, Oracle Spatial,
PostgreSQL, SQLite, dll.
26
Komponen Pembentuk MapServer (2)
2. Komponen untuk Penggambaran Peta
• Digunakan utk membentuk gambar peta oleh
MapServer
• Meliputi:
– libpng: library utk baca/tulis gambar format PNG.
– Libjpeg: library utk baca/tulis format gambar JPG/JPEG.
– GD: library utk menggambar obyek geografis (garis,
poligon, atau bentuk geometris lain). Juga utk
menghasilkan format gambar PNG, JPEG.
– FreeType: library utk menampilkan tulisan font TrueType.
27
Komponen Pembentuk MapServer (2)
3. Komponen untuk Menangani Proyeksi Peta
• Library Proj.4 yg digunakan utk menangani sistem
proyeksi peta.
4. Komponen Pendukung
• Meliputi:
– Zlib: dibutuhkan library GD utk kepentingan kompresi
data gambar.
– Regex: library utk menangani regular expression.
28
Map File
• Untuk memanfaatkan fungsionalitasnya yang
paling sederhana sekalipun, MapServer akan
selalu membutuhkan minimal sebuah mapfile.
• Mapfile merupakan file teks biasa yang
berekstensi *.map yang akan mendeskripsikan
apa dan dimana sumber datanya, dan bagaimana
cara data tersebut harus ditampilkan.
• Oleh karena itu, penting bagi kita untuk
memahami struktur mapfile
Tentang Map File
• Sebelum benar-benar menggunakan MapServer untuk pertama kalinya,
pengguna harus membuat file teks yang berekstensi *.map. File yang disebut
mapfile tersebut memiliki ketentuan-ketentuan penulisan sebagai berikut:
– Teks pada mapfile tidak bersifat case-sensitive.
– Penulisan string yang berisi campuran beberapa karakter nonalphanumerik (selain karakter huruf dan angka) atau keywords milik
MapServer harus diapit oleh tanda petik ganda ( “ ).
– Setiap mapfile dapat digunakan untuk mendefinisikan (secara default)
maksimal 50 layer peta.
– Penulisan path lokasi file bisa dilakukan secara absolut maupun relatif.
– Susunan atau isi mapfile memiliki hierarki struktur dengan objek “MAP”
sebagai “root”. Sementara objek-objek lainnya berada di bawah objek ini.
– Pengguna dapat menambahkan baris-baris komentar di dalam mapfile
dengan cara mengawali komentar tersebut dengan karakter pagar (#).
Contoh MapFile
• Sebagai contoh, berikut ini adalah isi mapfile
sederhana yang dapat digunakan untuk
menampilkan sebuah layer peta di dalam
program aplikasi browser internet.
Penjelasan
• MapFile tersebut memiliki objek MAP yang bernama “Indonesia”
File sementara yang dihasilkan oleh MapServer nantinya berupa
file JPEG (bisa juga berupa GIF maupun PNG).
• Jangkauan batas koordinat peta adalah (73.33,-10.28);
(160.20,5.80). Nilai-nilai tersebut diambil dari (sebagian) cakupan
peta aslinya.
• Semua layer dimunculkan (STATUS ON).
• Satuan koordinat peta dalam derajat (DD). Digunakan untuk
menentukan scalebar dan komputasi lainnya yang terkait dengan
koordinat & skala.
• Ukuran (resolusi) gambar yang dihasilkan adalah 600×400 pixel.
• Data spasial yang digunakan berlokasi di “../data/asean”
(relatif terhadap folder dimana mapfile berada).
• Warna latar pada peta adalah warna biru muda (RGB:
108 166 205). Untuk memudahkan dalam memilih
warna, Anda bisa menggunakan tool ColorPic yang
dapat di download di internet.
• Pada peta “Indonesia” tersebut, terdapat layer yang
bernama “Asean”. Nama shapefile yang digunakan
untuk layer “Asean” tersebut adalah “Aseanoceania.shp”.
• Layer tersebut statusnya dimunculkan (STATUS ON).
• Di dalam layer “Asean” terdapat unsur-unsur
spasial yang bertipe poligon dengan nama
“Asean” juga.
• Kelas “Asean” akan disajikan dengan warna latar
putih (RGB: 255 255 255) dengan garis tepi
warna biru muda yang sama dengan warna latar
peta.
Objek dalam MapFile
• Pada contoh sederhana di bagian sebelumnya,
kita lihat bahwa secara garis besar mapfile terdiri
dari 5 bagian: Map, Layer, Class, Label, dan Style.
Kita akan bahas 5 bagian tersebut satu-per-satu.
Map
• Objek ini mendefinisikan objek master milik
mapfile, yang isinya adalah parameter-parameter
global untuk peta yang akan ditampilkan.
Layer
• Objek ini paling sering digunakan untuk
mendefinisikan layer-layer yang kemudian
membentuk peta.
• Urutan penempatan layer di peta adalah sesuai
dengan urutan penulisannya.
• Artinya, layer yang paling dulu dituliskan akan
ditempatkan di bagian paling bawah dari peta.
Class
• Objek ini digunakan untuk mendefinisikan kelas
tematik untuk suatu layer. Setiap layer pasti
memiliki sedikitnya satu kelas.
• Ketika layer memiliki lebih dari satu kelas, maka
kelas-kelas tersebut dibedakan oleh nilai-nilai
yang terkait beserta ekspresi yang digunakan
untuk mengevaluasinya.
Label
• Objek ini digunakan untuk mendefinisikan anotasi suatu unsur
dalam peta. Selain itu, label juga dapat dijadikan sebagai simbol.
Style
• Objek ini digunakan untuk menentukan
parameter-parameter simbol yang dipakai.
Dengan adanya objek ini, setiap kelas dapat
memiliki simbol dengan tipe, ukuran, dan warna
tersendiri.
Menampilkan Peta
• buat suatu file html yang isinya adalah sebagai berikut
• Simpanlah dengan nama file peta.html di direktori
C:\ms4w\apps\latih\htdocs\
• Selanjutnya, buatlah file html baru yang isinya
adalah sebagai berikut:
• Simpanlah dengan nama file contoh_01.html
dan simpan di C:\ms4w\apps\latih\htdocs\
• Pada browser bukalah alamat
http://localhost:1111/latih/peta.html sehingga akan muncul
tampilan seperti berikut ini.
• Ketika link yang ada pada halaman tsb di klik, akan muncul
tampilan peta seperti pada gambar berikut
• Oke… selamat… sampai tahap ini Anda sudah
berhasil menampilkan peta di browser…
• itu sudah disebut dengan “WebGIS” meskipun
masih amat-sangat-sederhana-sekali
Layer Ganda
• Pada kenyataannya, jarang sekali suatu peta
hanya terdiri dari satu layer saja.
• Karena informasi geografis yang sesungguhnya
adalah gabungan dari beberapa layer sehingga
membentuk suatu informasi peta yang lengkap.
• Bagaimana caranya menampilkan beberapa layer
dalam satu peta ?
Skema MapFile
Contoh MapFile 2 Layer
• Lanjutan ...
• Simpanlah mapfile tersebut dengan nama kab_kota.map di
direktori C:\ms4w\apps\latih\map\
Menampilkan Layer Ganda
• Buka kembali file
c:\ms4w\apps\latih\htdocs\peta.html dan ubahlah
menjadi seperti berikut ini:
• Kemudian, buatlah file html baru dengan isinya
sebagai berikut:
• Simpan file tersebut dengan nama contoh_02.html dan
simpan di c:\ms4w\apps\latih\htdocs\
• Pada browser bukalah alamat
http://localhost:1111/latih/peta.html sehingga akan muncul
tampilan seperti berikut ini.
• Ketika link “Menampilkan Layer Ganda” di klik, akan muncul
tampilan peta dengan 2 layer seperti gambar berikut ini.
• Pada peta tersebut terlihat ada 2 peta yang
ditampilkan, yaitu peta “Asean-oceania.shp”
yang berlatar putih dan peta “Propinsi.shp” yang
berlatar abu-abu.
• Mudah kan?
• Jika ingin menambahkan layer lagi, tinggal
tambah saja blok LAYER … END pada mapfile
sesuai kebutuhan.
• Selamat mencoba
Selanjutnya ?
• Simbol dan Font
(https://arioss.wordpress.com/2012/05/15/webgis-5simboldan-font/)
• Peta Tematik (https://arioss.wordpress.com/2012/05/21/webgis6-pembuatan-peta-tematik/)
Chameleon
• Chameleon merupakan framework yang dapat
digunakan untuk mengembangkan aplikasi GIS
berbasis mapserver secara cepat.
• Sudah ada banyak widget yang dapat disisipkan
pada file html untuk template.
• Dengan chameleon setiap perancang web-GIS
dapat mengembangkan aplikasinya dengan
mudah hanya dengan cara menambahkan
beberapa tags (widget) ke halaman file template
html
Komponen Chameleon
• CWC (chameleon web-mapping components)
Kumpulan widget, didefinisikan sebagai tags CWC dalam halaman
web html template.
• Chameleon server
Berkomunikasi dengan mapserver untuk menghasilkan dan
mengintegrasikan bagian-bagian yang kemudian membentuk
komposisi peta
• Mapserver
Mesin peta menghasilkan map image, mengelola data yang
tepetakan dan menangani pemrosesan geografis.
Chameleon Widgets
•
•
•
•
•
•
•
CursorPos
KeepSessionAlive
LegendTemplate
MapDHTMLWidget
MapSize
MapTitle
PanMap
•
•
•
•
•
•
•
Query
Scalebar
SharedResource
UpdateMap
ZoomAllLayers
ZoomIn
ZoomOut
http://www.gommap.org/gommap/docs/gommap_widget_reference.html
Contoh
• Membuat situs webGIS menggunakan
mapserver dan phpmapscript
• Aplikasi GIS berbasis web yang menggunakan
teknologi mapserver.
• Interface menggunakan bahasa dan fungsi
php/mapscript.
• Databasenya menggunakan mysql.
• Komponen :
– Database
– Peta Digital
– Web GIS
• Database
• Screenshot
Note !
• Database menggunakan MySQL untuk
menyimpan content web; untuk peta digitalnya
digunakan hanya untuk menyimpan alamat file
.map .
• Karena MS4W tidak terdapat database mysql,
maka install mysql terlebih dahulu. Disarankan
menggunakan xampp 1.6. yang cocok dengan
ms4w karena masih menggunakan PHP4.
Selamat Belajar
Ini Amunisinya
Referensi
Tools:
• http://www.maptools.org
• http://www.mapserver.org
Learning:
• http://www.pribadiraharja.com/trihartanto/e-book/
• http://mapserver.wordpress.com
• http://ri32.wordpress.com
• https://arioss.wordpress.com/2011/02/07
Final Project
• Buat kelompok (anggota maks. 5 mhsw)
• Buat map file untuk layer Map_province, Map_street dan
Map_town.
• Sebelumnya, buat tampilan Map_provice menjadi per-bagian
propinsi.
• Tampilkan di web menggunakan MapServer.
• Buat tampilan di web:
– Label nama kota masing-masing
– Warna masing-masing poligon propinsi berbeda-beda
– Pemberian fitur arah mata angin dan skala
• Presentasi Minggu depan (29 Des 2014)
Download