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