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 name="srcID" type="hidden" value="[srcID]" />
<input name="trgID" type="hidden" value="[trgID]" />

Metoda ini sangat simpel dan dapat dikembangkan misalnya dengan menggunakan javascript.

Selamat Mencoba

Freelance Web Developer