P. 1
Tutorial WebGIS

Tutorial WebGIS

|Views: 46|Likes:
Published by Made Mayane

More info:

Published by: Made Mayane on Jun 06, 2012
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

11/09/2012

pdf

text

original

I .

LATAR BELAKANG

Teknologi GIS (Georaphic Information System) telah berkembang pesat. Saat ini telah dikenal istilah-istilah Desktop GIS, WebGIS, dan Database Spatial yang merupakan wujud perkembangan teknologi Sistem Informasi Geografis, untuk mengakomodir kebutuhan solusi atas berbagai permasalahan yang hanya dapat dijawab dengan tekhnologi GIS ini.

Saat ini ada beberapa teknologi yang dapat digunakan untuk membangun sistem WebGIS. Salah satu yang paling populer adalah MapServer, yang menggunakan konsep Open Source. Sedangkan untuk pilihan teknologi Database Spatial, PostgreSQL merupakan pilihan database Open Source yang paling populer, dengan dukungan ekstensi spatial yang bernama POSTGIS.

Akan tetapi pemahaman akan bagaimana mengembangkan WebGIS dengan Mapserver dan PostGIS belum banyak dipahami oleh para pengembang teknologi informasi. Hal ini turut dipengaruhi dengan minimnya jumlah tutorial yang dipublikasi di internet dengan bahasa Indonesia.

Oleh karena itu, kali ini kami akan mencoba melakukan riset sedherhana tentang bagaimana mengembangkan aplikasi WebGIS dengan MapServer – PostGIS, yang hasilnya akan kami publikasikan di internet. Dengan harapan tutorial dan sample aplikasi WebGIS yang kami kembangkan akan dapat bermanfaat bagai rekan-rekan sesama pengembang teknologi informasi untuk dapat lebih mudah menguasai bagaimana membangun sistem WebGIS dengan MapServer – PostGIS. Sehingga dapat bermanfaat bagi kemajuan teknologi informasi di Indonesia.

Hasil dari penelitian ini akan dituliskan menjadi delapan bab yang masing-masingnya dapat didownload secara bebas pada situs www.hatma.info/download/gis/webgis/ , yaitu : I . LATAR BELAKANG II. PENDAHULUAN III. INSTALASI MS4W, MAPLAB DAN CHAMELEON IV. MEMBUAT APLIKASI DEMO WEBGIS MAPSERVER V. INSTALASI POSTGRESQL DAN SEKILAS TENTANG POSTGIS

II. PENDAHULUAN

MS4W (MapServer For Windows) adalah bundle instalasi MapServer untuk platform Windows. Dimana MapServer ( http://mapserver.gis.umn.edu ) merupakan aplikasi freeware dan Open Source untuk dapat menampilkan Sistem Informasi Geografis di web.

MS4W dilengkapi dengan berbagai modul tambahan (optional) yang mempermudah kita membangun dan mengadministrasi sistem WebGIS. Antara lain : MapLab, KaMap, Chameleon, dan lain-lain. MapLab digunakan untuk mempermudah kita membuat file konfigurasi MapServer ( *.map ) pada aplikasi WebGIS yang kita kembangkan. Sedang Chameleon adalah framework yang menyediakan berbagai class dan method yang mempermudah kita membangun interface aplikasi WebGIS yang kita kembangkan, seperti menambahkan fitur zoom, pan, dsb. Informasi mengenai MS4W, MapLab dan Chameleon dapat diperoleh di situs www.maptools.org

Saat ini, selain dapat mengakses MapServer sebagai program CGI, kita dapat mengakses MapServer sebagai modul MapScript, melalui berbagai bahasa pemrograman, seperti PHP, Perl, Python, Java dan lain sebagainya. Akses fungsi-fungsi MapServer melalui skrip akan lebih memudahkan pengembangan aplikasi WebGIS.

PostgreSQL adalah database Open Source yang cukup populer, karena ketangguhan dan kemampuannya dalam mengelola data. PostgreSQL mempunyai ekstensi PostGIS, yang menawarkan kemampuan untuk mengelola data spatial untuk aplikasi Sistem Informasi Geografis. Informasi mengenai PostgreSQL dapat diperoleh pada situs www.postgresql.org . Sedang informasi untuk PostGIS dapat diperoleh dari situs http://postgis.refraction.net .

WebgGIS dengan MapServer – MapLab – Chameleon - PostGIS

VI. KONVERSI DATA SHP KE DALAM POSTGIS UNTUK DIGUNAKAN DALAM APLIKASI SAMPLE/DEMO WEBGIS VII. MEMBUAT APLIKASI DEMO WEBGIS MAPSERVER - POSTGIS VIII. KESIMPULAN IX. DAFTAR PUSTAKA

www.hatma.info

1

MAPLAB DAN CHAMELEON MS4W MS4W dapat di download di www.Akan tetapi jika kita hendak menggunakan framework chameleon.zip.hatma.x . Ada dua buah versi yang MS4W yang dapat didownload.10. sehingga seluruh isi paket MS4W terletak di C:/ms4w atau D:/ms4w. maka akan terlihat process httpd.PostGIS III.org .” pada ”. Setelah anda berhasil mendownload ms4w_1. Map Server dan berbagai library yang dibutuhkan untuk membangun sistem WebGIS. versi 1. PHP. hilangkan karakter ”.dll”.bat. Di dalamnya sudah menyatu aplikasi Apache Web Server. Apabila service sudah berjalan.ini yang terletak di D:\ms4w\Apache\cgi-bin\php. Kemudian restart Apache dengan mengeksekusi apache-restart. maka instalasi anda berhasil.x (yang digunakan saat ini adalah versi 1. kita harus melakukan sedikit perubahan pada konfiurasi php.exe pada jendela Task Manager Windows.extension=php_mapscript_4. Kemudian eksekusi apache-install. www.0.6.x .WebgGIS dengan MapServer – MapLab – Chameleon . Cek dengan membuka http://localhost pada web browser anda. lebih baik pilih MS4W versi 1. INSTALASI MS4W.x dan versi 2.6) karena Chameleon belum mendukung secara sempurna PHP5 pada paket MS4W versi 2.info 1 . selanjutnya extract isinya kedalam root dari partisi harddisk ( misal C:/ atau D:/ ).maptools.ini. Apabila muncul halaman depan MS4W. Halaman depan ms4w PHP MapScript Untuk mengaktifkan modul PHP/Mapscript.bat untuk menginstal service Apache.

php pada folder D:\ms4w\Apache\htdocs yang berisi : ”<?php echo ms_getVersion().1 dan Chameleon 2.maptools. Jika benar.4.hatma. maka MapScript telah berjalan dengan baik.WebgGIS dengan MapServer – MapLab – Chameleon .zip pada direktori http. dan perhatikan apakah pada http://localhost telah terlihat link url MapLab 2.4. Restart Apache. dibutuhkan JRE (Java Runtime Environment) terinstal pada computer anda.org.php dengan web browser.d. Msinfo. Kemudian letakkan isi dari chameleon_ms4w-2.1. apps. Apabila muncul report versi dari mapserver. Link URL chameleon. ?>”.2. pada halaman utama www. Supaya Maplab dapat berjalan dengan sempurna.php MapLab dan Chameleon Download paket MapLab dan Chameleon untuk MS4W pada website www. dan apache/htdocs pada director ms4w anda. buat file msinfo.2.info 2 . kemudian buka http://localhost/msinfo. pada halaman utama Link URL MapLab.1-20060906. maka instalasi MapLab dan Chameleon pada MS4W telah berhasil.PostGIS Untuk mengecek instalasi Mapscript.zip dan maplab_ms4w-2.

info/download/gis/Demo_MapServer.info 1 . yaitu : apps.hatma.hatma. Buka http://localhost dengan web browser. http.phtml ) Link URL demo program. pada halaman utama Tampilan Demo Web GIS www. ekstrak isi nya ke direktori yang sesuai.bat. kemudian klik link demo pada “Hatma Suryotrisongko Demo Web GIS URLs:“ ( http://localhost/demo/demo.zip . MEMBUAT APLIKASI DEMO WEBGIS MAPSERVER Untuk lebih mudahnya.WebgGIS dengan MapServer – MapLab – Chameleon . pada direktori ms4w anda. kita akan menggunakan demo aplikasi Web GIS berbasis MapServer dan framework Chameleon yang dapat di download di http://www.PostGIS IV. Kemudian restart Apache dengan mengeksekusi apache-restart. Setelah download selesai.d dan Apache/htdocs.

.. dengan ciri-ciri dibuka dekan tag <cwc2 .......................php" )....hatma...................................MapDHTML --> <cwc2 type="MapDHTML" visible="true" width="400" height="300" allowresize="true" marqueecolor="FF3333" marqueewidth="2" minscale="1" bordercolor="#0000ff" borderwidth="0"/></div> ... <!-.. dengan kode program/tag HTML standard dan program/tag framework chameleon.............................WebgGIS dengan MapServer – MapLab – Chameleon ...........info 2 . yaitu : demo...... dst . dst .... //--> </script> <link href="sample................../...... mendefinisikan file template dan file map <?php include( "....> dan ditutup dengan </cwc2> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4......PostGIS FILE HTML DAN PHTML Dua buah file utama yang terletak pada D:\ms4w\apps\demo\samples\htdocs .............../htdocs/chameleon............01 Transitional//EN"> <html> <head> <title>Demo Web GIS</title> <meta http-equiv="Content-Type" content="text/html........include the javascript code that manages the DHTML layers --> <script language="JavaScript" src="sample..js" type="text/javascript"></script> </form> </body> </html> Isi dari file demo......html Berisi template untuk interface aplikasi........css" rel="stylesheet" type="text/css"> </head> <body onLoad="myOnLoad()"> <form method="post"> ... <script language="JavaScript" type="text/javascript"> . dst ........phtml Berisi pemanggilan class utama chameleon......... charset=iso-8859-1"> .. <div id="MainMapLayer" name="MainMapLayer"> <!-.................. dst ........................... www.........html demo.......

o point : layer popplace (popplace.. layer drainage (drainage. yang terdiri dari beberapa bagian.shp).shp).shp). $oApp->registerSkin( 'skins/sample' ). o image raster : layer bathymetry (bath_mapserver. class SampleApp extends Chameleon { function SampleApp() { parent::Chameleon().map). $oApp->CWCExecute(). layer drain_fn (drain_fn.info 3 .shp). } } $oApp = new SampleApp().html".shp). $oApp->CWCInitialize( $szTemplate./map/chameleon. $szMapFile ). $this->moMapSession = new MapSession_RW./demo.map) terletak pada D:\ms4w\apps\demo\samples\map. $szMapFile = ".shp). $this->moMapSession->setTempDir( getSessionSavePath()).hatma.PostGIS $szTemplate = ". layer fedlimit (fedlimit. ?> Isi dari file demo. layer road (road.WebgGIS dengan MapServer – MapLab – Chameleon . (chameleon.shp) o line : layer prov_bound (province.phtml DATA SHP Data spatial peta disimpan dengan format ESRI shp pada direktori D:\ms4w\apps\demo\samples\data .tif) o polygon : layer land_fn (land_fn. layer park (park.shp). o grid : layer grid (grid.shp) FILE KONFIGURASI (CHAMELEON. Antara lain : • definisi umum # # Start of map file # # Sample map file for a chameleon app.MAP) File konfigurasi (*.shp). layer rail (rail.map". www.

# IMAGEPATH "/ms4w/tmp/ms_tmp/" IMAGEURL "/ms_tmp/" # LOG "/tmp/gmap.WebgGIS dengan MapServer – MapLab – Chameleon .gif EXTENT -2594561 -712631 3467361 3840000 STATUS ON COLOR -1 -1 -1 OUTLINECOLOR 255 0 0 SIZE 120 90 END • skala # # Start of scalebar # www.PostGIS # NAME DEMO STATUS ON SIZE 400 300 SYMBOLSET ./etc/symbols.hatma.sym EXTENT -2594561 -712631 3467361 3840000 UNITS METERS SHAPEPATH "....txt TRANSPARENT FALSE • definisi web interface # # Start of web interface definition # WEB #MINSCALE 2000000 #MAXSCALE 50000000 # # On Windows systems./etc/fonts. /tmp and /tmp/ms_tmp/ should be created at the root # of the drive where the .log" METADATA END END • peta referensi # # Start of reference map # REFERENCE IMAGE images/keymap./data" IMAGECOLOR 255 255 255 FONTSET .MAP file resides.info 4 .

WebgGIS dengan MapServer – MapLab – Chameleon .tif PROJECTION "init=epsg:42304" END END • Contoh layer bertipe polygon : layer land_fn (land_fn. raster image LAYER GROUP "Raster" NAME bathymetry METADATA "DESCRIPTION" "Elevation/Bathymetry" "GROUP" "Raster" "LAYER" "bathymetry" END TYPE RASTER STATUS ON DATA bath_mapserver.shp) www.hatma.PostGIS SCALEBAR IMAGECOLOR 255 255 255 LABEL COLOR 0 0 0 SIZE SMALL END SIZE 150 5 COLOR 255 255 255 BACKGROUNDCOLOR 0 0 0 OUTLINECOLOR 0 0 0 UNITS kilometers INTERVALS 5 STATUS ON END • mekanisme penggambaran peta sebagai hasil proses query QUERYMAP STYLE HILITE COLOR 255 0 0 END • sistem proyeksi peta PROJECTION "init=epsg:42304" END Definisi Layer: • layer bathymetry (bath_mapserver.tif).info 5 .

shp) LAYER GROUP "Line" NAME prov_bound METADATA "DESCRIPTION" "Province" "GROUP" "Line" "LAYER" "prov_bound" END TYPE LINE STATUS ON DATA province CLASS NAME "Province" COLOR 120 120 120 END PROJECTION "init=epsg:42304" END END • Contoh layer bertipe point : layer popplace (popplace.PostGIS LAYER GROUP "Polygon" NAME land_fn METADATA "DESCRIPTION" "Foreign Lands" "GROUP" "Polygon" "LAYER" "land_fn" END TYPE POLYGON STATUS ON DATA land_fn CLASS NAME "Foreign Lands" COLOR 240 240 240 OUTLINECOLOR 199 199 199 END PROJECTION "init=epsg:42304" END END • Contoh layer bertipe line : layer prov_bound (province.shp) LAYER GROUP "Point" NAME popplace METADATA "DESCRIPTION" "Cities" www.WebgGIS dengan MapServer – MapLab – Chameleon .info 6 .hatma.

WebgGIS dengan MapServer – MapLab – Chameleon .html" SYMBOL 7 SIZE 6 NAME "Cities" LABEL COLOR 0 0 0 FONT fritqat TYPE truetype SIZE 8 POSITION AUTO PARTIALS FALSE OUTLINECOLOR 255 255 255 END COLOR 0 0 0 END TOLERANCE 5 PROJECTION "init=epsg:42304" END END www.info 7 .PostGIS "RESULT_FIELDS" "NAME" "GROUP" "Point" "LAYER" "popplace" END TYPE POINT STATUS ON DATA popplace LabelItem "Name" CLASSITEM "Capital" CLASS EXPRESSION "1" TEMPLATE "ttt_query.hatma.html" SYMBOL 2 SIZE 8 NAME "Cities" LABEL COLOR 255 0 0 FONT fritqat-italic TYPE truetype SIZE 8 POSITION AUTO PARTIALS FALSE OUTLINECOLOR 255 255 255 END COLOR 0 0 0 END CLASS EXPRESSION /2|3/ TEMPLATE "ttt_query.

Walaupun ada 3 fitur utama (MapEdit. disediakan halaman administrasi berbasis web yang dapat diakses dengan alamat http://localhost/maplab/. untuk membuat/merubah file konfigurasi peta (*.PostGIS • layer grid (grid. Gambar halaman awal MapEdit www.hatma. MapBrowser dan GmapFactory).map ADMINISTRASI FILE KONFIGURASI MENGGUNAKAN MAPLAB Supaya lebih memudahkan dan menghindari penulisan file konfigurasi yang salah.map pada D:\ms4w\apps\demo\samples\map\chameleon.shp) LAYER GROUP "Grid" NAME "grid" METADATA "DESCRIPTION" "Grid" "GROUP" "Grid" "LAYER" "grid" END TYPE LINE STATUS OFF DATA "grid" CLASS NAME "Graticule" COLOR 0 0 0 END PROJECTION "init=epsg:42304" END END Selengkapnya lihat file chameleon.info 8 .WebgGIS dengan MapServer – MapLab – Chameleon .map) kita menggunakan menu MapEdit.

info 9 .hatma.WebgGIS dengan MapServer – MapLab – Chameleon .PostGIS MapEdit sedang membuka file konfigurasi peta dari sample web GIS diatas Tes konfigurasi yang telah kita buat. dengan klik tombol preview Preview file konfigurasi chameleon.map pada MapEdit www.

3DM dan 4D koordinat.V.(1 1.1 2.5 4)) MULTIPOLYGON(((0 0. 2 1.1 2) POLYGON((0 0.(1 1.pdf).LINESTRING((2 3. jangan lupa kunjungi situs PostGIS untuk informasi lebih lengkap.2 1.0 0).0 4.-1 -2.3 4))) .-2 -1.4 4. Kemudian. Akan tetapi cara mudahnya adalah menggunakan postgresql-8.1 1)).opengis.1 1.4 0. WKB and WKT OpenGIS menspesifikasikan ada2 cara standard untuk mengexpresikan objek spasial : format Well-Known Text (WKT) dan Well-Known Binary (WKB).org.-1 -1))) GEOMETRYCOLLECTION(POINT(2 3).POSTGIS Ada berbagai cara untuk membangun database PostgreSQL yang mendukung data spasial (postgis). pada platform Windows INSTALASI POSTGRESQL .opengis.2 2. Contoh WKT : POINT(0 0) LINESTRING(0 0.org/techno/specs/99-049.org) OBJEK SPASIAL PostGIS mendukung semua objek spasial yang di spesifikasikan oleh OpenGIS Consortium (http://www. termasuk download dokumentasi/manual posGIS (http://www.0 0).2.2.1 1.1 1)) MULTIPOINT(0 0.(2 3.-2 -2. ((-1 -1.postgis.3 2.4 0. 1 2. Database yang digunakan : postgresql-8. Postgis juga mengembangkan kapabilitasnya dengan 3DZ.4 4.org) pada dokumen Simple Features for Specification for SQL (http://www.1 2).3-1 . termasuk PostGIS) yang dapat di download di situsnya : http://www.1 2) MULTILINESTRING((0 0. 2 2.0 4. INSTALASI POSTGRESQL DAN SEKILAS TENTANG POSTGIS Bagian ini akan mengulas secara sederhana tentang POSTGIS (ekstensi spasial untuk database PostgreSQL).msi (installer windows dengan fitur PostgreSQL lengkap.postgresql.

Kita dapat memanipulasi format Input/Output. MEMBUAT TABEL SPASIAL Langkah pertama adalah membuat database seperti biasa.info 1 . pilih menu Edit New Object New Database. MEMBUAT DATABASE SPASIAL Cara paling mudah. Misal: CREATE TABLE ROADS_GEOM ( ID int4.32)’.WebgGIS dengan MapServer – MapLab – Chameleon . NB : SRID = spatial referencing system identifier.hatma. Akan tetapi data spasial disimpan pada database dengan format heksadesimal. text WKT = asText(geometry). SRID). NAME varchar(25) ) www. geometry = GeomFromWKB(bytea WKB. Setelah pgAdmin dijalankan. ’A Place’ ) . Masukkan pilihan database template : template_postgis TABEL SPATIAL_REF_SYS DAN TABEL GEOMETRY_COLUMNS Kita akan melihat pada database kita ada beberapa table yang telah terbuat. yang shortcut nya sudah tersedia pada start menu Windows. sebagai berikut: bytea WKB = asBinary(geometry). SRID).PostGIS Input data pada database biasanya menggunakan format WKT seperti diatas. geometry = GeometryFromText(text WKT. select * from geometry_columns . adalah menggunakan pgAdmin. contoh query insert : INSERT INTO SPATIALTABLE ( THE_GEOM. pada folder PostgreSQL. 312). Yang digunakan untuk menyimpan informasi meta dari objek spasial yang kita buat.4 45. select * from spatial_ref_sys . THE_NAME ) VALUES ( GeomFromText(’POINT(-126. Salah satunya SPATIAL_REF_SYS dan GEOMETRY_COLUMNS.

Sehingga bagian dimension cukup kita beri nilai 2. ’geom’.hatma.WebgGIS dengan MapServer – MapLab – Chameleon . Jika tidak ingin pusing dengan SRID (Spatial Reference ID). 2).info 2 . ’LINESTRING’. Misal : SELECT AddGeometryColumn(’public’. Dengan format : “SELECT AddGeometryColumn(<table_name>.PostGIS Langkah kedua adalah menambahkan kolom spasial dengan fungsi AddGeometryColumn. ROAD_NAME varchar(128) ). Misal : select isvalid(’LINESTRING(0 0. berikan nilai SRID = -1. Salah satunya dengan fungsi IsValid(). 423. SELECT AddGeometryColumn( ’roads_geom’. MEMASUKKAN DATA SPATIAL Ada beberapa metode yang bisa kita gunakan. ’LINESTRING’. <column_name>. Misal : ALTER TABLE mytable ADD CONSTRAINT geometry_valid_check CHECK (isvalid(the_geom)). <srid>. 3 ). <dimension>)”. ’roads_geom’. -1. <type>. check constraint juga akan dibuat secara otomatis apabila kita menambahkan kolom geometris dengan perintah AddGeometryColumn(). ’GEOMETRY’. 423. Misal kita membuat file (roads. isvalid(’LINESTRING(0 0.sql) yang berisi : www. Misal: CREATE TABLE roads ( ROAD_ID int4. yaitu dengan membuat satu check constraint . MENJAGA KONSISTENSI DATA PADA KOLOM SPASIAL Pastikan kolom geometri kita memenuhi spesifikasi standard OpenGIS. 2). isvalid | isvalid ---------+--------t |f Ada cara untuk mempermudah kita menjaga data supaya tetap memenuhi standar. SELECT AddGeometryColumn( ’roads’.0 0)’). 1 1)’). ’roads_geom’. Perhatikan bahwa OGC geometries tidak memperbolehkan nilai Z atau M. ’geom’. Cara pertama adalah dengan menggunakan perintah query insert seperti biasa.

GeomFromText(’LINESTRING(198231 263418.191108 243242)’.-1).GeomFromText(’LINESTRING(189141 244158.GEOM.189265 244817)’.NAME ) VALUES(6.’Graeme Ave’).-1).NAME ) VALUES (4.GEOM.’Paul St’). INSERT INTO ROADS_GEOM (ID. INSERT INTO ROADS_GEOM (ID.-1). kita gunakan perintah SELECT.sql MENGGUNAKAN SHP2PGSQL Jika kita telah mempunyai file shp yang berisi data-data spasial kita.GEOM.WebgGIS dengan MapServer – MapLab – Chameleon . INSERT INTO ROADS_GEOM (ID. Shp2pgsql dapat kita jalankan pada "psql" SQL terminal monitor.-1).GeomFromText(’LINESTRING(191232 243118.NAME ) VALUES (3.roadstable > roads.GeomFromText(’LINESTRING(189412 252431. Misal : SELECT id.’Phil Tce’).192612 229814)’.NAME ) VALUES (2.189631 259122)’.’Geordie Rd’).-1).GeomFromText(’LINESTRING(190131 224148.190871 228134)’. INSERT INTO ROADS_GEOM (ID.info 3 .sql Atau : shp2pgsql shaperoads myschema.hatma.’Jeff Rd’).roadstable | psql -d roadsdb MENAMPILKAN DATA SPASIAL Untuk menampilkan data spatial. name FROM ROADS_GEOM.198213 268322)’. INSERT INTO ROADS_GEOM (ID. COMMIT.GEOM.NAME ) VALUES (1. INSERT INTO ROADS_GEOM (ID.-1).sql psql -d roadsdb -f roads.GEOM.PostGIS BEGIN. Misal : shp2pgsql shaperoads myschema.GeomFromText(’LINESTRING(192783 228138.NAME ) VALUES(5. AsText(geom) AS geom. lebih mudah menggunakan shp2pgsql data loader yang akan mengkonversi file ESRI shp ke dalam SQL. Kemudian eksekusi dengan perintah pada "psql" SQL terminal monitor: psql -d [database] -f roads.GEOM.’Dave Cres’). Kita bisa menggunakan beberapa operator pada query kita : www.

191232 243119.]<table> pgsql2shp [<options>] <database> <query> MEMBUAT INDEX SPATIAL Index digunakan untuk mempercepat pencarian data. membutuhkan waktgu komputasi 1 jam.1 0.191234 243117. NAME FROM ROADS_GEOM WHERE GEOM && GeomFromText(’POLYGON((191232 243117. o ~= Mengetes apakah 2 buah geometry adalah identik. CREATE INDEX [indexname] ON [tablename] USING GIST ( [geometryfield] GIST_GEOMETRY_OPS ).WebgGIS dengan MapServer – MapLab – Chameleon .0 0))’ identik dengan ’POLYGON((0 0. Contoh : SELECT ID.1 0.0 0))’ o = Mengetes apakah batas luar 2 buah geometry adalah identik (ya).PostGIS o && Mengatakan apakah batas luar geometry sebuah objek intersects / beririsan dengan batas luar geometry objek lain. SELECT ID.info 4 .-1). Misal.-1). pada mesin 300MHz Solaris. PostGIS Menggunakan GiST (Generalized Search Trees) indexes. NAME FROM ROADS_GEOM WHERE GEOM ~= GeomFromText(’LINESTRING(191232 243118.1 1.shp pgsql2shp [<options>] <database> [<schema>. www. MENGGUNAKAN PGSQL2SHP Kita dapat menggunakan pgsql2shp untuk mengkonversi tabel (atau data spasial tertentu pada database kita) ke dalam format file ESRI .hatma.1 1.191232 243117))’. apakah ’POLYGON((0 0. Tabel dengan 1 juta barisdata.191108 243242)’.

Fungsi spasial selengkapnya dapat dilihat pada manual/postGIS reference.WebgGIS dengan MapServer – MapLab – Chameleon . untuk optimasi eksekusi query oleh database. Sebaiknya Vacuum Database dilakukan secara rutin. VACUUM ANALYZE [table_name] ( [column_name] ).GEOCOLUMN) < 100.hatma.100) AND Distance(GeomFromText(’POINT(1000 1000)’.-1). name VARCHAR ) SELECT AddGeometryColumn('public'. 2) . CREATE TABLE bc_roads ( gid INTEGER PRIMARY KEY.info 5 . -1. 'bc_roads'. SELECT the_geom FROM geom_table WHERE distance( the_geom. www.-1). -1 ) ) < 100 Kita dapat menggunakan fungsi expand() untuk menemukan objek geometri dalam radius dari suatu objek: SELECT * FROM GEOTABLE WHERE GEOCOLUMN && Expand(GeomFromText(’POINT(1000 1000)’. seperti pada kebanyakan PostgreSQL DBA melakukan VACUUM dengan cron job secara periodic. Misalkan fungsi distance() yang digunakan untuk mengukur jarak antar 2 buah objek geometry. 'the_geom'. untuk menjaga agar index dapat berfungsi secara baik dalam mempercepat query. GeomFromText( ’POINT(100000 200000)’. CONTOH IMPLEMENTASI SQL SPATIAL Buat table dan isinya dengan perintah sebagai berikut. 'LINESTRING'. COMPLEX QUERIES Kita dapat menggunakan fungsi-fungsi geometry dalam perintah query kita.PostGIS Kemudian eksekusi perintah untuk membuat / mengupdate geometry statistic yang sangat penting.

area(the_geom)/10000 AS LUAS_HEKTAR FROM bc_municipality LIMIT 1 . 4 4. GeomFromText('MULTIPOLYGON(((1 1.info 6 . Apakah kota terbesar ? SELECT name. 3 4. 3 2.'AREA KEDUA'. 4 4. code INTEGER UNIQUE. 'the_geom'. 'JALAN PERTAMA'. Luas Kota bernama ‘AREA PERTAMA’ (dalam hektar) SELECT area(the_geom)/10000 AS LUAS_HEKTAR FROM bc_municipality WHERE name='AREA PERTAMA' . insert into bc_municipality values (3. www. -1. 2) . 4 4)))') ) . Letak perpotongan semua jalan dengan titik (1 1) SELECT ASTEXT( INTERSECTION(the_geom. 2 2)))') ) . 2 2). 103. CREATE TABLE bc_municipality ( gid INTEGER PRIMARY KEY. 4 3. 4 2. CONTOH PERMASALAHAN SEDERHANA 1. 2 4. 3 3) ) )') ) . 'bc_municipality'. insert into bc_municipality values (2. insert into bc_municipality values (4. 4 2. 104. 1 5. 4 3)') ) . 101.'AREA KETIGA'. GeomFromText('MULTIPOLYGON(((2 2. 2. (3 3. GeomFromText('MULTIPOLYGON(((4 4. GeomFromText('MULTIPOLYGON( ( (2 2. 4 0)') ) . GeomFromText('LINESTRING(1 1. 6 6. 5 5. 4 4. 4 6.PostGIS insert into bc_roads values (1. GeomFromText('LINESTRING(2 4. 5 1. 6 4. 'JALAN KEDUA'. 'MULTIPOLYGON'. insert into bc_municipality values (1.hatma.'AREA KEEMPAT'. insert into bc_roads values (2.'AREA PERTAMA'. 3. 2 4. name VARCHAR ) SELECT AddGeometryColumn('public'. 4. Mencari total panjang jalan (dalam kilometer)? SELECT sum(length(the_geom))/1000 AS PANJANG_JALAN FROM bc_roads . 102. GeomFromText('POINT( 1 1 )')) ) FROM bc_roads. 1 1)))') ) .WebgGIS dengan MapServer – MapLab – Chameleon .

info 7 .WebgGIS dengan MapServer – MapLab – Chameleon .the_geom && r.name = 'JALAN PERTAMA' AND m.the_geom)/1000 AS "PANJANG ASLI JALAN (KM)" FROM WHERE AND bc_roads r.the_geom.the_geom) AND m. area(the_geom)/1000 AS "LUAS KOTA" FROM bc_municipality WHERE nrings(the_geom) > 1 ORDER BY "LUAS KOTA" DESC LIMIT 1 www. ASTEXT( INTERSECTION(r.the_geom))/1000 AS "KM PANJANGNYA =" FROM bc_roads r.the_geom. Buat table baru dengan isi : semua jalan pada kota ’AREA PERTAMA’ dengan tambahan kolom panjang jalan tersebut disemua kota . m. CREATE TABLE pg_roads AS SELECT r.name. 7.the_geom) AND m. dan titik perpotongannya dengan kota AREA PERTAMA. Berapa panjang jalan pada masing-masing kota? SELECT m.hatma. r. bc_municipality m WHERE m. 6. 5.the_geom && r.name = 'AREA PERTAMA' AND r.the_geom)) AS "PERPOTONGAN DI :".name .the_geom && m.the_geom.PostGIS Atau SELECT max(area(the_geom)/10000) AS LUAS_HEKTAR FROM bc_municipality . bc_municipality m WHERE CONTAINS(m.the_geom GROUP BY m. LENGTH(r. bc_municipality m r. SUM(LENGTH(r.name = 'AREA PERTAMA' . Cari kota terbesar yang memiliki lubang SELECT gid. r.the_geom 8.the_geom CONTAINS(m. Berapa kilometer panjang jalan “JALAN PERTAMA” di kota “AREA PERTAMA” ? SELECT SUM(LENGTH(r.the_geom))/1000 AS KM_JALAN FROM bc_roads r.*.

info 1 .hatma. Jalankan PgAdmin.shp).shp) o line : layer prov_bound (province. MEMBUAT DATABASE SPATIAL 1. LANGKAH I. KONVERSI DATA SHP KE DALAM POSTGIS UNTUK DIGUNAKAN DALAM APLIKASI SAMPLE/DEMO WEBGIS Pada pembahasan diatas kita telah mempunyai beberapa data shp yang digunakan dalam sample/demo WebGIS.shp).WebgGIS dengan MapServer – MapLab – Chameleon .tif) o polygon : layer land_fn (land_fn.shp).shp). layer road (road.shp). layer drainage (drainage.PostGIS VI. layer fedlimit (fedlimit. o grid : layer grid (grid. layer park (park.shp) Selanjutnya kita akan mengubah data shp diatas menjadi bentuk tabel didalam database PostgreSQL.shp).shp). o point : layer popplace (popplace.shp). layer drain_fn (drain_fn. layer rail (rail. kemudian buat user baru www. antara lain : o image raster : layer bathymetry (bath_mapserver.

hatma.WebgGIS dengan MapServer – MapLab – Chameleon . dengan menggunakan template_postgis www.PostGIS Kemudian masukkan data user baru 2.info 2 . Buat database baru.

Copy file-file shp yang ada digunakan pada aplikasi sample demo WebGIS diatas.PostGIS 3. Masukkan detail database 4.sql shp2pgsql fedlimit tfedlimit > fedlimit.sql shp2pgsql drain_fn tdrain_fn > drain_fn. Kemudian jalankan "psql" SQL terminal monitor.sql shp2pgsql province tprovince > province. o o o o o o o o o o shp2pgsql road troad > road.WebgGIS dengan MapServer – MapLab – Chameleon . Sehingga diperoleh sepuluh file sql. 5.sql shp2pgsql popplace tpopplace > popplace.sql shp2pgsql park tpark > park.hatma.sql shp2pgsql grid tgrid > grid.info 3 .sql www. dan lakukan konversi dari semua file shp diatas kedalam bentuk *.sql shp2pgsql rail trail > rail.2\bin ).sql shp2pgsql land_fn tland_fn > land_fn.sql shp2pgsql drainage tdrainage > drainage. dari folder D:\ms4w\apps\demo\samples\data ke dalam direktori bin pada instalasi server PostgreSQL (C:\Program Files\PostgreSQL\8.sql.

'31779. ………………………….'MULTILINESTRING'.sql psql -d dbspatialdemo -f drainage.sql psql -d dbspatialdemo -f popplace.sql psql -d dbspatialdemo -f land_fn. CREATE TABLE "troad" (gid serial PRIMARY KEY. "road_" int8.info 4 ."lpoly_".NULL.'74'. INSERT INTO "troad" ("fnode_"."tnode_". "name_f" varchar(26)). • • Kolom geometry bertipe POINT terdapat pada tabel : tpopplace Kolom geometry bertipe MULTILINESTRING terdapat pada tabel : troad ."road_".'1'.sql psql -d dbspatialdemo -f fedlimit.'-1'. tfedlimit www. "f_code" int2.2).sql) : BEGIN.'01050000000100000001020000000400000000000000164F414100000060EB773 341000000A0EC494141000000808A71334100000080DF2B414100000080CE3E334100000000C41F414100000000E0273341').sql psql -d dbspatialdemo -f province. "tnode_" int8. "road_id" int8.sql psql -d dbspatialdemo -f park.'troad'. "length" float8.260'."name_f".sql psql -d dbspatialdemo -f drain_fn.sql psql -d dbspatialdemo -f grid.'1'. contoh isi file sql (road."name_e".'the_geom'.WebgGIS dengan MapServer – MapLab – Chameleon ."length". "fnode_" int8. tgrid .hatma. SELECT AddGeometryColumn(''. "lpoly_" int8."f_code".'70'.'3'. "name_e" varchar(26).NULL. "rpoly_" int8.PostGIS 6. load semua file sql tersebut kedalam database postgreSQL dengan cara mengeksekusi perintah dengan format “psql -d [target_database] -f [file_sql] ” pada SQL terminal monitor o o o o o o o o o o psql -d dbspatialdemo -f road. yang isinya akan membuat table dan isinya sesuai dengan file shp.sql Amati hasilnya.'3'.sql psql -d dbspatialdemo -f rail. Amati file sql.the_geom) VALUES ('65'."road_id"."rpoly_". trail . 7.

VACUUM ANALYZE tgrid (the_geom) . maka diperlukan suatu kolom yang unique pada suatu table geometry. tland_fn . VACUUM ANALYZE tdrain_fn (the_geom) . tdrainage . dengan index yang telah didefinisikan padanya : o o o o o o CREATE INDEX troad_gid ON troad ( gid ).WebgGIS dengan MapServer – MapLab – Chameleon .hatma. o CREATE INDEX tpark_gist_index ON tpark USING GIST ( the_geom GIST_GEOMETRY_OPS ). CREATE INDEX tpark_gid ON tpark ( gid ). o CREATE INDEX tprovince_gist_index ON tprovince USING GIST ( the_geom GIST_GEOMETRY_OPS ). o CREATE INDEX tpopplace_gist_index ON tpopplace USING GIST ( the_geom GIST_GEOMETRY_OPS ). o CREATE INDEX tland_fn_gist_index ON tland_fn USING GIST ( the_geom GIST_GEOMETRY_OPS ). o CREATE INDEX tdrain_fn_gist_index ON tdrain_fn USING GIST ( the_geom GIST_GEOMETRY_OPS ). o CREATE INDEX tfedlimit_gist_index ON tfedlimit USING GIST ( the_geom GIST_GEOMETRY_OPS ). Buat index GIST pada masing-masing kolom yang bertipe geometry pada masing-masing tabel. VACUUM ANALYZE tdrainage (the_geom) . VACUUM ANALYZE trail (the_geom) . Karena untuk mempercepat query. VACUUM ANALYZE tpark (the_geom) . VACUUM ANALYZE tland_fn (the_geom) .PostGIS • Kolom geometry bertipe MULTIPOLYGON terdapat pada tabel : tprovince . CREATE INDEX tpopplace_gid ON tpopplace ( gid ). untuk mengupdate statistik geometry (lakukan vacuum secara rutin. VACUUM ANALYZE tpopplace (the_geom) . tdrain_fn 8. CREATE INDEX tprovince_gid ON tprovince ( gid ). 9. Buat gid index pada masing-masing table. o CREATE INDEX trail_gist_index ON trail USING GIST ( the_geom GIST_GEOMETRY_OPS ). terlebih ketika ada perubahan pada data spatial) o CREATE INDEX troad_gist_index ON troad USING GIST ( the_geom GIST_GEOMETRY_OPS ). CREATE INDEX trail_gid ON trail ( gid ). o CREATE INDEX tgrid_gist_index ON tgrid USING GIST ( the_geom GIST_GEOMETRY_OPS ). o CREATE INDEX tdrainage_gist_index ON tdrainage USING GIST ( the_geom GIST_GEOMETRY_OPS ).info 5 . VACUUM ANALYZE troad (the_geom) . Kemudian lakukan vacuum analyze. tpark . CREATE INDEX tland_fn_gid ON tland_fn ( gid ). www. VACUUM ANALYZE tprovince (the_geom) . VACUUM ANALYZE tfedlimit (the_geom) .

10. Lihat pada pgAdmin. CREATE INDEX tdrain_fn_gid ON tdrain_fn ( gid ).PostGIS o o o o CREATE INDEX tgrid_gid ON tgrid ( gid ). CREATE INDEX tfedlimit_gid ON tfedlimit ( gid ). apakah sepuluh table dan isinya telah masuk dalam database.hatma. Jika benar.info 6 . CREATE INDEX tdrainage_gid ON tdrainage ( gid ). maka anda telah berhasil memasukkan data shp ke dalam table di database.WebgGIS dengan MapServer – MapLab – Chameleon . www.

Sisipkan definisi pengambilan data dari database CONNECTIONTYPE POSTGIS CONNECTION "user=[nama user] dbname=[nama database] host=[host database] port=[port database : 5432] password=[password anda]" DATA "[nama kolom geometry] FROM [nama table] USING UNIQUE [unique index / primary key]" FILTER "[kondisi / persyaratan]" www.info/download/gis/Demo_MapServer_PostGIS. sehingga pengambilan data langsung dari database.PostGIS VII.WebgGIS dengan MapServer – MapLab – Chameleon . Aplikasi ini juga bisa di download di : http://www. Kemudian load data sql ke dalam database postgreSQL anda. Kita akan merubah baris pemanggilan data shp pada baris definisi layer.phtml Link URL demo program kedua. ekstrak isi nya ke direktori yang sesuai. buka http://localhost dengan web browser. http. MEMBUAT APLIKASI DEMO WEBGIS MAPSERVER .PostGIS Spatial Database URLs: “ : http://localhost/demo2/demo. Secara umum.zip .bat .MAP) DARI SAMPLE/DEMO APLIKASI DIATAS. yaitu : apps. Setelah download selesai.d dan Apache/htdocs .hatma. beri tanda komentar (#) pada baris definisi data # DATA (data file shp) Langkah II.POSTGIS Kita akan mengubah demo/sample aplikasi Web GIS yang sudah kita buat diatas. kita akan mengubah dengan cara sebagai berikut : Langkah I.info 1 . pada halaman utama MENGUBAH FILE KONFIGURASI PERTA (CHAMELEON. Lalu restart Apache anda dengan mengeksekusi apache-restart. kemudian klik link demo pada “ Hatma Suryotrisongko Demo Web GIS . MENJADI APLIKASI WEBGIS YANG MENGAMBIL DATA DARI SERVER DATABASE POSTGRESQL.hatma. menjadi aplikasi webgis mapserver yang mengambil data geometri dan atribut dari postgreSQL server yang sudah mendukung POSTGIS.

Sehingga berikut ini perubahan yang terjadi pada file konfigurasi perta (.PostGIS Harap diperhatikan.html" SYMBOL 2 SIZE 8 NAME "Cities" COLOR 0 0 0 END Harap diperhatikan. Langkah III. bahwa penulisan nama kolom. harus sesuai dengan penulisan perintah yang dimengerti oleh database postgresql. dan lain-lain harus menggunakan huruf kecil. Sesuaikan baris definisi lain LabelItem "name" CLASSITEM "capital" CLASS EXPRESSION "1" TEMPLATE "ttt_query. bahwa penulisan nama kolom data atribut pada LABELITEM. sedangkan untuk lainnya menggunakan huruf besar (perhatikan pada bagian ”DATA” dan ”FILTER” diatas).map) Layer land_fn #DATA land_fn CONNECTIONTYPE POSTGIS CONNECTION "user=hatma_s dbname=dbspatialdemo host=localhost port=5432 password=2006bedogtelu" DATA "the_geom FROM tland_fn USING UNIQUE gid" Layer park #DATA park CONNECTIONTYPE POSTGIS www.WebgGIS dengan MapServer – MapLab – Chameleon . “USING UNIQUE [unique index / primary key]” pada baris definisi DATA digunakan untuk mempercepat query menggunakan index. sedang pada definisi FILTER tidak menggunakan syntax WHERE). CLASSITEM.hatma. nama table HARUS menggunakan huruf kecil. selain itu juga harus sesuai dengan penulisan perintah yang dimengerti oleh database postgresql (pada definisi DATA tidak menggunakan syntax SELECT.info 2 . Begitu juga dengan isi dari definisi EXPRESSION.

PostGIS CONNECTION "user=hatma_s dbname=dbspatialdemo host=localhost port=5432 password=2006bedogtelu" DATA "the_geom FROM tpark USING UNIQUE gid" Layer drain_fn #DATA drain_fn CONNECTIONTYPE POSTGIS CONNECTION "user=hatma_s dbname=dbspatialdemo host=localhost port=5432 password=2006bedogtelu" DATA "the_geom FROM tdrain_fn USING UNIQUE gid" FILTER "poly_featu = 16 OR poly_featu = 21" CLASSITEM "poly_featu" Layer drainage #DATA drainage CONNECTIONTYPE POSTGIS CONNECTION "user=hatma_s dbname=dbspatialdemo host=localhost port=5432 password=2006bedogtelu" DATA "the_geom FROM tdrainage USING UNIQUE gid" FILTER "poly_featu = 0" CLASSITEM "poly_featu" Layer prov_bound #DATA province CONNECTIONTYPE POSTGIS CONNECTION "user=hatma_s dbname=dbspatialdemo host=localhost port=5432 password=2006bedogtelu" DATA "the_geom FROM tprovince USING UNIQUE gid" Layer fedlimit #DATA fedlimit CONNECTIONTYPE POSTGIS CONNECTION "user=hatma_s dbname=dbspatialdemo host=localhost port=5432 password=2006bedogtelu" DATA "the_geom FROM tfedlimit USING UNIQUE gid" Layer rail #DATA rail CONNECTIONTYPE POSTGIS CONNECTION "user=hatma_s dbname=dbspatialdemo host=localhost port=5432 password=2006bedogtelu" DATA "the_geom FROM trail USING UNIQUE gid" Layer road #DATA road CONNECTIONTYPE POSTGIS www.WebgGIS dengan MapServer – MapLab – Chameleon .hatma.info 3 .

www.info 4 .PostGIS CONNECTION "user=hatma_s dbname=dbspatialdemo host=localhost port=5432 password=2006bedogtelu" DATA "the_geom FROM troad USING UNIQUE gid" Layer popplace #DATA popplace CONNECTIONTYPE POSTGIS CONNECTION "user=hatma_s dbname=dbspatialdemo host=localhost port=5432 password=2006bedogtelu" DATA "the_geom FROM tpopplace USING UNIQUE gid" FILTER "capital >= 1 AND capital <= 3" LabelItem "name" CLASSITEM "capital" Layer "grid" #DATA "grid" CONNECTIONTYPE POSTGIS CONNECTION "user=hatma_s dbname=dbspatialdemo host=localhost port=5432 password=2006bedogtelu" DATA "the_geom FROM tgrid USING UNIQUE gid" Beberapa perubahan pada file chameleon.hatma. dan apakah data yang ditampilkan sama dengan data yang ditampilkan pada aplikasi demo yang masih mengambil data dari file shp. selanjutnya kita ujicoba apakah aplikasi yang sudah kita buat dapat berjalan dengan baik.php Setelah file konfigurasi selesai dirubah.WebgGIS dengan MapServer – MapLab – Chameleon .

info 5 .hatma.WebgGIS dengan MapServer – MapLab – Chameleon .PostGIS Tampilan program dengan mengambil data dari database www.

VIII.sg. Dengan harapan untuk dapat memberikan sumbangsih pada dunia pendidikan teknologi informasi di indonesia. Aplikasi yang pertama memperagakan WebGis – MapServer dengan pengambilan data dari file ESRI shp dan table dbf (http://www. supaya dapat lebih mudah memahami dan menguasai pengembangan Sistem Informasi Geografis berbasis Web (WebGIS).info/?p=96 .info/download/gis/Demo_MapServer_PostGIS. Apabila ada masukan ataupun pertanyaan. jangan sungkan-sungkan menghubungi penulis di hatma_s@yahoo.zip). Publikasi tersebut dapat dilihat pada link sebagai berikut http://hatma.zip). KESIMPULAN Penelitian ini berhasil mengembangkan 2 buah aplikasi demo WebGis.info/download/gis/Demo_MapServer.info. Sedangkan hasil dari penelitian sederhana ini telah berhasil dipulikasikan di internet pada situs http://www.hatma.hatma. Sedangkan aplikasi kedua memperagakan WebGis – MapServer – PostGIS dengan pengambilan data dari database (http://www.hatma.com.

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->