PostGISを使おう

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の使い方はまだわかってません。

カテゴリー: FreeBSD, GPS, GIS, Install, Software パーマリンク