Anda di halaman 1dari 6

WebgGIS dengan MapServer MapLab Chameleon - PostGIS

VI. 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, antara lain : o image raster : layer bathymetry (bath_mapserver.tif) o polygon : layer land_fn (land_fn.shp); layer park (park.shp); layer drain_fn (drain_fn.shp); layer drainage (drainage.shp) o line : layer prov_bound (province.shp); layer fedlimit (fedlimit.shp); layer rail (rail.shp); layer road (road.shp); o point : layer popplace (popplace.shp); o grid : layer grid (grid.shp)

Selanjutnya kita akan mengubah data shp diatas menjadi bentuk tabel didalam database PostgreSQL.

LANGKAH I. MEMBUAT DATABASE SPATIAL 1. Jalankan PgAdmin, kemudian buat user baru

www.hatma.info

WebgGIS dengan MapServer MapLab Chameleon - PostGIS

Kemudian masukkan data user baru

2. Buat database baru, dengan menggunakan template_postgis

www.hatma.info

WebgGIS dengan MapServer MapLab Chameleon - PostGIS

3. Masukkan detail database

4. Copy file-file shp yang ada digunakan pada aplikasi sample demo WebGIS diatas, dari folder D:\ms4w\apps\demo\samples\data ke dalam direktori bin pada instalasi server PostgreSQL (C:\Program Files\PostgreSQL\8.2\bin ).

5. Kemudian jalankan "psql" SQL terminal monitor, dan lakukan konversi dari semua file shp diatas kedalam bentuk *.sql. Sehingga diperoleh sepuluh file sql.

o o o o o o o o o o

shp2pgsql road troad > road.sql shp2pgsql rail trail > rail.sql shp2pgsql province tprovince > province.sql shp2pgsql popplace tpopplace > popplace.sql shp2pgsql park tpark > park.sql shp2pgsql land_fn tland_fn > land_fn.sql shp2pgsql grid tgrid > grid.sql shp2pgsql fedlimit tfedlimit > fedlimit.sql shp2pgsql drainage tdrainage > drainage.sql shp2pgsql drain_fn tdrain_fn > drain_fn.sql

www.hatma.info

WebgGIS dengan MapServer MapLab Chameleon - PostGIS

6. Amati file sql, yang isinya akan membuat table dan isinya sesuai dengan file shp. contoh isi file sql (road.sql) :
BEGIN; CREATE TABLE "troad" (gid serial PRIMARY KEY, "fnode_" int8, "tnode_" int8, "lpoly_" int8, "rpoly_" int8, "length" float8, "road_" int8, "road_id" int8, "f_code" int2, "name_e" varchar(26), "name_f" varchar(26)); SELECT AddGeometryColumn('','troad','the_geom','-1','MULTILINESTRING',2); INSERT INTO "troad" ("fnode_","tnode_","lpoly_","rpoly_","length","road_","road_id","f_code","name_e","name_f",the_geom) VALUES ('65','70','3','3','31779.260','1','1','74',NULL,NULL,'01050000000100000001020000000400000000000000164F414100000060EB773 341000000A0EC494141000000808A71334100000080DF2B414100000080CE3E334100000000C41F414100000000E0273341'); .

7. 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.sql psql -d dbspatialdemo -f rail.sql psql -d dbspatialdemo -f province.sql psql -d dbspatialdemo -f popplace.sql psql -d dbspatialdemo -f park.sql psql -d dbspatialdemo -f land_fn.sql psql -d dbspatialdemo -f grid.sql psql -d dbspatialdemo -f fedlimit.sql psql -d dbspatialdemo -f drainage.sql psql -d dbspatialdemo -f drain_fn.sql

Amati hasilnya. Kolom geometry bertipe POINT terdapat pada tabel : tpopplace Kolom geometry bertipe MULTILINESTRING terdapat pada tabel : troad ; trail ; tgrid ; tfedlimit

www.hatma.info

WebgGIS dengan MapServer MapLab Chameleon - PostGIS

Kolom geometry bertipe MULTIPOLYGON terdapat pada tabel : tprovince ; tpark ; tland_fn ; tdrainage ; tdrain_fn

8. Buat index GIST pada masing-masing kolom yang bertipe geometry pada masing-masing tabel. Kemudian lakukan vacuum analyze, untuk mengupdate statistik geometry (lakukan vacuum secara rutin, terlebih ketika ada perubahan pada data spatial)

CREATE INDEX troad_gist_index ON troad USING GIST ( the_geom GIST_GEOMETRY_OPS ); VACUUM ANALYZE troad (the_geom) ;

CREATE INDEX trail_gist_index ON trail USING GIST ( the_geom GIST_GEOMETRY_OPS ); VACUUM ANALYZE trail (the_geom) ;

CREATE INDEX tprovince_gist_index ON tprovince USING GIST ( the_geom GIST_GEOMETRY_OPS ); VACUUM ANALYZE tprovince (the_geom) ;

CREATE INDEX tpopplace_gist_index ON tpopplace USING GIST ( the_geom GIST_GEOMETRY_OPS ); VACUUM ANALYZE tpopplace (the_geom) ;

CREATE INDEX tpark_gist_index ON tpark USING GIST ( the_geom GIST_GEOMETRY_OPS ); VACUUM ANALYZE tpark (the_geom) ;

CREATE INDEX tland_fn_gist_index ON tland_fn USING GIST ( the_geom GIST_GEOMETRY_OPS ); VACUUM ANALYZE tland_fn (the_geom) ;

CREATE INDEX tgrid_gist_index ON tgrid USING GIST ( the_geom GIST_GEOMETRY_OPS ); VACUUM ANALYZE tgrid (the_geom) ;

CREATE INDEX tfedlimit_gist_index ON tfedlimit USING GIST ( the_geom GIST_GEOMETRY_OPS ); VACUUM ANALYZE tfedlimit (the_geom) ;

CREATE INDEX tdrainage_gist_index ON tdrainage USING GIST ( the_geom GIST_GEOMETRY_OPS ); VACUUM ANALYZE tdrainage (the_geom) ;

CREATE INDEX tdrain_fn_gist_index ON tdrain_fn USING GIST ( the_geom GIST_GEOMETRY_OPS ); VACUUM ANALYZE tdrain_fn (the_geom) ;

9. Buat gid index pada masing-masing table. Karena untuk mempercepat query, maka diperlukan suatu kolom yang unique pada suatu table geometry, dengan index yang telah didefinisikan padanya :

o o o o o o

CREATE INDEX troad_gid ON troad ( gid ); CREATE INDEX trail_gid ON trail ( gid ); CREATE INDEX tprovince_gid ON tprovince ( gid ); CREATE INDEX tpopplace_gid ON tpopplace ( gid ); CREATE INDEX tpark_gid ON tpark ( gid ); CREATE INDEX tland_fn_gid ON tland_fn ( gid );

www.hatma.info

WebgGIS dengan MapServer MapLab Chameleon - PostGIS

o o o o

CREATE INDEX tgrid_gid ON tgrid ( gid ); CREATE INDEX tfedlimit_gid ON tfedlimit ( gid ); CREATE INDEX tdrainage_gid ON tdrainage ( gid ); CREATE INDEX tdrain_fn_gid ON tdrain_fn ( gid );

10. Lihat pada pgAdmin, apakah sepuluh table dan isinya telah masuk dalam database. Jika benar, maka anda telah berhasil memasukkan data shp ke dalam table di database.

www.hatma.info

Anda mungkin juga menyukai