Ruang Web Hosting Indonesia - Solusi Handal, Cepat dan Murah

Archive for the ‘PostgreSQL’ Category

Bikin Trigger untuk Insert/Update the_geom

October 26, 2009 - 5:34 am 2 Comments

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

PostgreSQL / PostGIS Mapfile

July 1, 2008 - 7:05 am 2 Comments

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”

Compile PostgreSQL/PostGIS

April 18, 2008 - 11:49 pm 6 Comments

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