Apabila kita mempunyai Layer yang bertipe point, maka kita bisa menambahkan/mengupdate point tersebut dalam database PostgreSQL.
Misal kita mempunyai tabel map_point yang mempunyai field2 sebagai berikut:
TABLE map_point
(
id character varying(254),
nama character varying(254),
x double precision,
y double precision,
the_geom geometry,
)
dimana x dan y adalah koordinat titik tersebut dan the_geom adalah koordinat dalam format PostGIS.
Kita bisa menambah/mengupdate titik tersebut tanpa menyentuh field the_geom dengan membuat Trigger.
Pertama kita membuat function yang bernama map_point_change(), seperti dibawah ini :
CREATE OR REPLACE FUNCTION map_point_change()
RETURNS trigger AS
$BODY$DECLARE
the_geom_insert text;
the_geom_update text;
BEGIN
IF (TG_OP = ‘INSERT’) THEN
the_geom_insert = ST_GeomFromText(’POINT(’|| new.x || ‘ ‘ || new.y ||’)', 4326);
UPDATE map_aset SET the_geom = the_geom_insert WHERE gid=new.gid;
ELSIF (TG_OP = ‘UPDATE’) THEN
IF new.x <> old.x OR new.y <> old.y THEN
the_geom_update = ST_GeomFromText(’POINT(’|| new.x || ‘ ‘ || new.y ||’)', 4326);
UPDATE map_aset SET the_geom = the_geom_update WHERE gid=new.gid;
END IF;
RETURN NEW;
END IF;
RETURN NEW;
END;
$BODY$
LANGUAGE ‘plpgsql’ VOLATILE
COST 100;
ALTER FUNCTION map_point_change() OWNER TO postgres;
Lalu buat Trigger seperti dibawah ini :
CREATE TRIGGER map_point_change
AFTER INSERT OR UPDATE
ON map_point FOR EACH ROW
EXECUTE PROCEDURE map_point_change();
Share on Facebook
PostGIS di support secara langsung oleh MapServer dan harus dicompile dalam MapServer agar dapat bekerja. Dalam banyak kasus , library PostgreSQL dan PostGIS (.dll atau .so) harus ada di environment path sistem agar fungsi library dapat bekerja. Hal ini termasuk library libpq dan libpostgis.
Contoh Map File:
LAYER NAME pg_test
STATUS ON
TYPE POLYGON
CONNECTIONTYPE POSTGIS
CONNECTION “host=localhost dbname=gmap user=julio password=julio port=5432″
DATA “wkb_geometry FROM province”
CLASS …
END
END
parameter CONNECTION dapat tidak sesuai dengan urutan. dbname harus diisi. host default adalah localhost, port default 5432 – standard port untuk PostgreSQL.
MapServer memiliki bug berkaitan dengan penulisan mapfile. Sebaiknya menggunakan huruf kecil untuk menghindari kesalahan. Geometrycolumn secara default bernama the_geom jika utility shp2pgsql digunakan untuk load data, atau wkb_geometry jika ogr2ogr digunakan.
Untuk informasi lebih lanjut tentang PostGIS dan MapServer bisa melihat dokumentasi PostGIS : http://postgis.refractions.net/docs/
menggunakan PostGIS views dengan Mapserver
Jika Anda ingin menggunakan PostGIS views dengan Mapserver pastikan Anda :
1) anda perlu field oid dalam view
2) masukan data dalam tabel geometry_columns untuk view
Contoh:
create view milieu.vw_bedrijven_publiek as select bedrijven.oid, * from milieu.bedrijven as bedrijven where vertrouwelijk=0;
INSERT INTO geometry_columns VALUES(”, ‘milieu’, ‘vw_bedrijven_publiek’, ‘the_geom’, 2, 28992, ‘POINT’);
Menggunakan Tabel tanpa oid
Jika tabel Anda tidak memiliki field oid, Anda dapat menetapkan pada objek data seperti ini :
DATA “your_geometric_column from your_table_name using unique your_geometric_column”
Share on Facebook
PostgreSQL/PostGIS
PostGIS (http://postgis.refractions.net)
PostGIS merupakan plugin untuk database PostgreSQL yang berfungsi untuk menyimpan dan melakukan analisis data geospasial. Fungsi dan kegunaannya sama dengan SDE (Spatial Data Engine) ESRI dan Oracle Spasial.
Untuk menginstall database PostgreSQL/PostGIS terlebih dahulu kita harus mengcompile komponen pendukungnya yaitu : PROJ dan GEOS.
Proj
Proj4 (http://proj.maptools.org) – Cartographic Projections Library
Library untuk proyeksi peta, menyediakan lebih dari 100 macam proyeksi.
Geos
GEOS (http://geos.refractions.net) – Geometry Engine Open source
Library untuk topology data vektor.
Compile Proj
Buka console/terminal untuk memulai installasi
Pindah ke direktori dimana file aplikasi disimpan
Ekstract file PROJ dengan mengetikkan
tar -xvf proj-[versi aplikasi].tar.gz
Pindah ke dalam folder aplikasi proj dengan mengetikkan perintah
cd proj-[versi aplikasi]/
Compile aplikasi dengan mengetikkan perintah
./configure
make
make install
Compile Geos
Buka console/terminal untuk memulai installasi
Pindah ke direktori dimana file aplikasi disimpan
Ekstract file Geos dengan mengetikkan
tar -xvf geos-[versi aplikasi].tar.gz
Pindah ke dalam folder aplikasi Geos dengan mengetikkan perintah
cd geos-[versi aplikasi]/
Compile aplikasi dengan mengetikkan perintah
./configure
make
make install
Tambahkan baris /usr/local/lib pada file /etc/ld.so.conf
/sbin/ldconfig
Compile PostgreSQL
Buka console/terminal untuk memulai installasi
Pindah ke direktori dimana file aplikasi disimpan
Ekstract file PostgreSQL dengan mengetikkan
tar -xvf postgresql-[versi aplikasi].tar.gz
Pindah ke dalam folder aplikasi PostgreSQL dengan mengetikkan perintah
cd postgresql-[versi aplikasi]/
Compile aplikasi dengan mengetikkan perintah
./configure
gmake
su
gmake install
adduser postgres
mkdir /usr/local/pgsql/data
chown postgres /usr/local/pgsql/data
su - postgres
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data >logfile 2>&1 &
/usr/local/pgsql/bin/createdb test
/usr/local/pgsql/bin/psql test
/usr/local/pgsql/bin/pg_ctl start -l logfile -D /usr/local/pgsql/data
createlang plpgsql [yourdatabase]
psql -d [yourdatabase] -f lwpostgis.sql
psql -d [yourdatabase] -f spatial_ref_sys.sql
Share on Facebook