Bayu Kurniawan R

Think about GIS, Linux and Oracle

Bikin Trigger untuk Insert/Update the_geom

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();

Tags: , , ,

Posted in GIS and MapServer and PostGIS and PostgreSQL.

8 comments

8 Replies

  1. wa..thanx buat share bro..lagi perlu ne hehehe

  2. bayu_kr Oct 27th 2009

    Sorry,, script kemarin masih salah,,
    sekarang sudah diperbaiki..

  3. candra Jun 3rd 2010

    mas gimana caranya install mapserver di xampp?

  4. bayu_kr Jun 3rd 2010
  5. Nice posting bos :)
    btw, punya shapefile kodepos se-Indo ga?
    bagi dong hehe…

  6. bayu_kr Jun 28th 2010

    data kodepos ada sih, tapi datanya gak detil sih…
    gak apa2?

  7. gpp. yg penting ada latlon nya aja.
    cuma buat geocoding service aja, sebagai data pelengkap aja.
    email bos yak. ke alamat imel ini aja.
    tengkiu…

  8. bayu_kr Jul 1st 2010

    ok, besok aku coba email


Leave a Reply