2011年4月18日月曜日

8 PostGIS-Debian6 2 - データベースの作成準備

8-3 データベースの作成準備

データベースを作成し、一般ユーザを登録します。
PostGISホームページ
http://postgis.refractions.net/

の Documentation 1.5(html)の

PostGIS Manual
http://postgis.refractions.net/docs/



Chapter 2. Installation
http://postgis.refractions.net/docs/ch02.html

の 2.5. Create a spatially-enabled database を参考に東京都のデータのデータベースを作成します。
これには3つのステップがあります。

1:データベースの作成
2:PostgreSQLのpl/pgsql言語サポートの有効化
3:postgis.sqlの読み込み
4:spatial_ref_sys.sqlの読み込み
5:postgis_comments.sqlの読み込み(ver.1.3.3にはありませんでした)

です。
pl/pgsql は PostGIS 関数でも使われる(手続き型)プログラミング言語です。
postgis.sql は PostGIS のオブジェクトと関数定義ファイルです。
spatial_ref_sys.sql は投影法(EPSG)に関する定義ファイルです。
postgis_comments.sql は postgis が持つ関数についてのコメント(ヘルプ)文章です。


次に、2.6 Creating PostGIS spatially-enabled databases from a template を参考にテンプレートを作成してデータベースを作成します。

postgres@deb6-vmw:~$ createdb template_postgis
postgres@deb6-vmw:~$ createlang plpgsql template_postgis
postgres@deb6-vmw:~$ psql -d template_postgis -f /usr/share/postgresql/8.4/contrib/postgis-1.5/postgis.sql
---
DROP FUNCTION
postgres@deb6-vmw:~$ psql -d template_postgis -f /usr/share/postgresql/8.4/contrib/postgis-1.5/spatial_ref_sys.sql
---
INSERT 0 1
COMMIT
ANALYZE

作成したtemplate_postgisをテンプレートとしてオーナーが user で nippon_dnli というデータベースを作成します。

postgres@deb6-vmw:~$ createdb -T template_postgis -O user nippon_dnli
postgres@deb6-vmw:~$ psql -l

データベース一覧
名前 | 所有者 | エンコーディング | 照合順序 | Ctype(変換演算子) | アクセス権
------------------+----------+------------------+-------------+-------------------+-----------------------

nippon_dnli | user | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 |
postgres | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 |
template0 | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres
: postgres=CTc/postgres
template1 | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres
: postgres=CTc/postgres
template_postgis | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 |
(5 行)
(stdin):q

nippon_dnli データベースの geography_columns テーブルと geometry_column テーブル、 spatial_ref_sys テーブルのオーナーを user に変更します。

postgres@deb6-vmw:~$ psql nippon_dnli
psql (8.4.7)
"help" でヘルプを表示します.

nippon_dnli=# \d

リレーションの一覧
スキーマ | 名前 | 型 | 所有者
----------+-------------------+----------+----------
public | geography_columns | ビュー | postgres
public | geometry_columns | テーブル | postgres
public | spatial_ref_sys | テーブル | postgres
(3 行)

PostGIS マニュアルの

Chapter 4. Using PostGIS: Data Management and Querie
http://postgis.refractions.net/documentation/manual-1.5/ch04.html

の 4.2 PostGIS Geography によると
geography_columns は、2点間の最短距離を球面上で計算するデータ型です。
実際の距離に近くなりますが、計算が複雑で、現在は EPSG:4326(WGS84)だけ装備されています。
geometry_columns は、2点間の最短距離を平面上で計算するデータ型です。

nippon_dnli=# ALTER VIEW geography_columns OWNER TO user;
ALTER TABLE
nippon_dnli=# ALTER TABLE geometry_columns OWNER TO user;
ALTER TABLE
nippon_dnli=# ALTER TABLE spatial_ref_sys OWNER TO user;
ALTER TABLE
nippon_dnli=# \d

リレーションの一覧
スキーマ | 名前 | 型 | 所有者
----------+-------------------+----------+--------
public | geography_columns | ビュー | user
public | geometry_columns | テーブル | user
public | spatial_ref_sys | テーブル | user
(3 行)


nippon_dnli データベースに一般ユーザuserを追加します。

nippon_dnli=# CREATE USER user;
ERROR: ロール"user"はすでに存在します
nippon_dnli=# ALTER USER user with password 'balanced';
ALTER ROLE
nippon_dnli=# \q
postgres@deb6-vmw:~$ exit
logout
user@deb6-vmw:~$

続けて東京都のデータを登録します。

0 件のコメント: