PostgreSQLもGISも初心者だけどPostGISに挑戦。PostGIS-1.05およびPostgreSQL-8.1はFreeBSDのportsでインストール済み。
まずはDBを作り、PostGISが使えるようにする。
# createdb –encoding=’EUC_JP’ postgistest
# createlang plpgsql postgistest
# psql -d postgistest -f /usr/local/share/postgis/lwpostgis.sql
# psql -d postgistest -f /usr/local/share/postgis/spatial_ref_sys.sql
日本語を使わなければ –encoding=’EUC_JP’は不要。
この段階でエラーを吐くようならば、PostGISがきちんとインストールされていないはず。PosgreSQL-8.0.xを入れていたときにはliblwgeom.so.*が/usr/local/lib/postgresql/に無くてここでエラーを吐いていた。
使えるようになったかPostGISのバージョン情報を表示させてチェック。
# psql postgistest
Welcome to psql 8.1.0, the PostgreSQL interactive terminal.
Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit
postgistest=# SELECT postgis_full_version();
postgis_full_version
——————————————————————————————————
POSTGIS=”1.0.5″ GEOS=”2.1.4″ PROJ=”Rel. 4.4.9, 29 Oct 2004″ USE_STATS DBPROC=”0.3.0″ RELPROC=”0.3.0″
(1 row)
こんなふうになればちゃんと動きそう。
続いて、地理情報を登録するTABLEを作成。二次元のPOINTデータ用のTABLEを作ろう。
postgistest=# CREATE TABLE gtestpoint ( ID int 4, NAME varchar(128) );
postgistest=# SELECT AddGeometryColumn(‘dbname’, ‘gtestpoint’, ‘geom’, -1, ‘POINT’, 2);
実はdbnameのところに入れるべきものがわかってない。三次元にしたいときには2の代わりに3にすればいいのだろう。次にPOINTデータを投入する
postgistest=# INSERT INTO gtestpoint (ID, NAME, GEOM) VALUES (1,
‘FirstPoint’, GeometryFromText(‘POINT(35.5053650 139.6856750)’, -1));
ID(上では1のところ)を指定しないと空欄になってしまうので、必ず指定する必要がありそう。あとはIDを変えて繰り返せば地理情報データを投入できそう。EUCにすれば日本語も使えるのかな?
SRIDの使い方はまだわかってません。