Mar
31
PostGIS Sample
Filed Under PostGIS
PostGIS Dynamic Input Dengan Mapserver CGI Mode
Pada script .map Anda, mungkin menggunakan koneksi PostGIS untuk mengakses data dan geometry. Pertanyaan yang muncul, bagaimana pada data yang ingin kita tampilkan bersifat dinamis. Misalnya saja untuk klasifikasi peta dalam NQuery Mode ataupun layer khusus yang menampilkan data dengan masukan (input) dari website.
Salah satu koneksi statis menampilkan data pada salah satu layer misalnya seperti ini:
CONNECTIONTYPE postgis CONNECTION "host=localhost dbname=bandung user=eric password=password" DATA "the_geom from bandung"
Sekarang kita ingin menambah satu layer lagi dengan klasifikasi kepadatan penduduk satu daerah kecamatan yang lebih dari 50rb orang. Kita tentu membuat kondisi khusus seperti ini:
CONNECTIONTYPE postgis CONNECTION "host=localhost dbname=bandung user=eric password=password" DATA "the_geom from bandung WHERE 'POPULASI' >= 50"
Atau menggunakan beberapa klasifikasi dengan pewarnaan yang berbeda:
CONNECTIONTYPE postgis CONNECTION "host=localhost dbname=bandung user=eric password=password" DATA "the_geom from bandung" CLASSITEM 'POPULASI' CLASS NAME 'Populasi Rendah' EXPRESSION ([POPULASI] >= 0 AND [POPULASI] < 50) COLOR 255 0 0 OUTLINECOLOR 0 0 0 END CLASS NAME 'Populasi Sedang' EXPRESSION ([POPULASI] >= 50 AND [POPULASI] < 200) COLOR 255 255 0 OUTLINECOLOR 0 0 0 END CLASS NAME 'Populasi Tinggi' EXPRESSION ([POPULASI] >= 200) COLOR 0 255 0 OUTLINECOLOR 0 0 0 END END
Lebih ke depan, setelah mempelajari dan menerapkan fungsi routing dijkstra, kita ingin menampilkan source_id dan target_id yang dinamis:
CONNECTIONTYPE postgis CONNECTION "host=localhost dbname=roads user=routing password=password" DATA "the_geom from (SELECT gid, the_geom from shortest_path_as_geometry('route', 1, 4567)) as route using unique gid using srid=-1"
Ganti angka 1 dan 4567 berdasarkan masukan. Katakan saja variabel srcID dan trgID.
Ganti saja parameter kondisi dengan suatu variabel. Contoh untuk kasus routing misalnya titik awal routing diberi variabel srcID dan titik tujuan diberi variabel trgID. Ubah sintaks di mapfile menjadi:
CONNECTIONTYPE postgis CONNECTION "host=localhost dbname=roads user=routing password=password" DATA "the_geom from ( SELECT gid, the_geom from shortest_path_as_geometry('route', %srcID%,%trgID%) ) as route using unique gid using srid=-1"
Dan jangan lupa pada template html dimasukkan variabel srcID dan trgID:
<input type="hidden" value="[srcID]" name="srcID" /> <input type="hidden" value="[trgID]" name="trgID" />
Metoda ini sangat simpel dan dapat dikembangkan misalnya dengan menggunakan javascript.
salam kenal
ric, gw doni. sekarang gw lagi belajar bikin aplikasi web gis pake mapserver. dan gw pake database MySQL. nanya ya, menurut lu, mending pake mana Postgre atau MySQL? apa kelebihan dan kekurangan masing2? alasan gw pake MySQL karena lebih umum dan banyak buku tentang itu. gimana menurut lu?
thanks
-don-
klo saranku sih mendingan pake 2 database, postgresql dan mysql. Untuk database spasialnya mendingan pake pgsql karena lebih fleksibel aja. Ya alasan untuk mysql karena umum itu. Kalau mau yang gak sedikit umum dan lebih powerful jelas pake postgresql karena supportnya banyak dan agak2 restrict (sepertinya). Ato kalo mau modal dikit pake Oracle yang commercial version aja minta support dari mereka
huehuehue
mas eric yg baik hati.
saya mo nanya maksud dr NQuery Mode tuh apa yah?
bagaimana cara membuatnya? n kegunaannya dimana?
wah, makasih dibilang baek hati wuehehehe…
NQuery Mode itu artinya banyak query yang dieksekusi secara bersamaan.
misalnya nandai (highlight) daerah sumatera utara dan jawa barat sebagai daerah terpilih secara bersamaan.
Atau highlight daerah dengan tingkat kepadatan penduduk antara 12 s/d 20 misalnya.
ya begitu2 lah
banyak kondisi yang diinginkan dalam satu waktu