空間テーブルの作成とデータの挿入
これで空間データベースが準備できたので、地理データを格納するテーブルを作成できます。このステップでは、cities テーブルを作成し、いくつかの主要都市の座標を挿入します。
まだ psql シェルに接続しており、spatial_db データベースに接続しているはずです。
まず、cities という名前のテーブルを作成します。このテーブルには、標準の id と name に加えて、GEOMETRY 型の location 列があります。
GEOMETRY(Point, 4326) の理解
GEOMETRY: これは、空間フィーチャを格納するための PostGIS の基本的なデータ型です。
Point: これは、ジオメトリ列がポイントのみを格納することを指定します。他のタイプには LINESTRING や POLYGON があります。
4326: これは空間参照系識別子 (SRID) です。SRID 4326 は、GPS や Google マップで使用される標準の座標系である WGS 84 に対応します。
以下のコマンドを実行してテーブルを作成します。
CREATE TABLE cities (
id SERIAL PRIMARY KEY,
name VARCHAR(50),
location GEOMETRY(Point, 4326)
);
確認メッセージが表示されます。
CREATE TABLE
次に、cities テーブルにデータを挿入します。Well-Known Text (WKT) 形式のポイント表現をジオメトリオブジェクトに変換するために ST_GeomFromText 関数を使用します。フォーマットは POINT(経度緯度) です。
INSERT INTO cities (name, location) VALUES
('New York', ST_GeomFromText('POINT(-74.0060 40.7128)', 4326)),
('London', ST_GeomFromText('POINT(-0.1278 51.5074)', 4326)),
('Tokyo', ST_GeomFromText('POINT(139.6917 35.6895)', 4326));
出力は、3 行が挿入されたことを示します。
INSERT 0 3
データが正しく挿入されたことを確認するには、テーブルをクエリできます。ST_AsText 関数を使用して、ジオメトリオブジェクトを人間が読めるテキスト形式に戻します。
SELECT id, name, ST_AsText(location) FROM cities;
出力には、挿入したデータが表示されるはずです。
id | name | st_astext
----+----------+-----------------------------
1 | New York | POINT(-74.006 40.7128)
2 | London | POINT(-0.1278 51.5074)
3 | Tokyo | POINT(139.6917 35.6895)
(3 rows)
空間テーブルの作成とデータ投入に成功しました。