postgis - 1 ( 入門編)

44
PostGIS - 1 ( 入入入

Upload: vance-merrill

Post on 31-Dec-2015

148 views

Category:

Documents


0 download

DESCRIPTION

PostGIS - 1 ( 入門編). PostGIS - 1 (入門編). PostGIS と PostgreSQL について ( PostGIS とは何か) DBMS と SQL ( 基本的な SQL 構文について) PostGIS ジオメトリーと SRS ( PostGIS のジオメトリーと投影系について) 様々なジオメトリータイプ PostGIS ジオメトリーの作り方 EPSG コード PostGIS データの作り方 (一番簡単なジオメトリーを実際に手で作って見る。ポイントデータだけ) - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: PostGIS  - 1 ( 入門編)

PostGIS - 1( 入門編)

Page 2: PostGIS  - 1 ( 入門編)

PostGIS - 1(入門編)• PostGISと PostgreSQL について ( PostGISとは何か)

• DBMSと SQL (基本的な SQL構文について)• PostGISジオメトリーと SRS ( PostGISのジオメトリーと投影系について)

– 様々なジオメトリータイプ– PostGISジオメトリーの作り方– EPSGコード

• PostGISデータの作り方 (一番簡単なジオメトリーを実際に手で作って見る。ポイントデータだけ)– ポイントデータは、http://www.geocoding.jp を使って様々な対象物の座標を取り出す。

• PostGISへのデータの取り込み (既存のデータの取り込み方)– QGIS– shp2pgsql– そのほか

• 実習– シェープファイルの取り込み (ポイント、ライン、ポリゴン)– 非空間情報と空間クエリー(単一テーブル)– 課題

Page 3: PostGIS  - 1 ( 入門編)

PostGIS と PostgreSQL について ( PostGIS とは何か)

• PostGIS とは、 PostgreSQL データーベースを機能拡張させ、空間情報を扱えるようにした空間データベース

• 空間情報の検索、作成、操作ができる• 現在は、ベクターデータのみを扱える– 近い将来、ラスターも扱える

Page 4: PostGIS  - 1 ( 入門編)

DBMS と SQL

• PostGIS を使うには、データベースの基礎知識が必要となる。

• そのためここでは少し、データベース操作の基礎となる、データベースマネージメントと SQL について pgAdmin III を使って勉強する

Page 5: PostGIS  - 1 ( 入門編)

pgAdmin III

• pgAdmin は、 PostgreSQL の操作をグラフィカルユーザーインターフェース( GUI )で可能にする

• コマンドライン( CUI )のpsqlよりも使いやすい!

• PostGIS のコマンドはすべて pgAdmin から可能

Page 6: PostGIS  - 1 ( 入門編)

pgAdmin III

データベースサーバー

データベース

データベースの中身

スキーマ

テーブル

Page 7: PostGIS  - 1 ( 入門編)

スキーマとは?1. データベース内に作られるディレクトリーのよう

なもの

2. スキーマ間の情報検索が可能 (データベース間は不可能)

3. 例えば、基本的なデータは、 ‘ base’ というスキーマに保存し、プロジェクト A に関するデータは、’ project_a’ というスキーマに保存する。

4. データのバックアップなど、維持管理が簡単になる。

CREATE SCHEMA project_a;

Page 8: PostGIS  - 1 ( 入門編)

ファンクションPostGIS のすべてのファンクションが収められている

ジオメトリーコラムテーブル

各テーブルのジオメトリーについての情報が収められる

空間参照系テーブル

空間参照系( SRS)についての情報が収められている

Page 9: PostGIS  - 1 ( 入門編)

空間参照 ID (SRID)

• 座標参照系( CRS )が標準化されている• 代表的なコード系は EPSG (European Petroleum

Survey Group ) コード• 例えば、

• www.spatialreference.org

参照系名 EPSGコードWGS84 4326

日本測地系 2000 : JGD2000 4612

Tokyo / UTM zone 54N 3095

Page 10: PostGIS  - 1 ( 入門編)

PostGIS が動くデータベースを作る

1.データベースのルートで右クリックして、まずは、すべてのデータベースを更新する2.続いて、同じ場所で右クリックをして、データベースを新規に作成する。

日本語を使う場合

Page 11: PostGIS  - 1 ( 入門編)

データベース用語• データベース– スキーマ

– データベースの下に作られるディレクトリー構造のようなもの

• テーブル– データを収める入れ物

• ビュー– データ自身ではなく、データを検索するクエリーを保存

したもの

Page 12: PostGIS  - 1 ( 入門編)

テーブルの作成• テーブルの作成、削除、修正、検索など

は SQL ( Structures Query Language )を用いて行う。

• SQL はプログラム言語ではなく、データベースと話をするための言葉

Page 13: PostGIS  - 1 ( 入門編)

テーブルの作成• 例えば、下のようなテーブルを作るとする

と、

CREATE TABLE my_table (id int4, place varchar (20));

Id place

Page 14: PostGIS  - 1 ( 入門編)

データの挿入• 先ほどのテーブルにデータを格納するに

は、

INSERT INTO my_table VALUES (1, 'Tokyo');

Id place

1 Tokyo

2 Sapporo

3 Sendai

INSERT INTO my_table VALUES (2, 'Sapporo');INSERT INTO my_table VALUES (3, 'Sendai');

Page 15: PostGIS  - 1 ( 入門編)

ジオメトリー列の挿入• 先ほどのテーブルに、ジオメトリーを保存

するための列を挿入する。

SELECT ADDGEOMETRYCOLUMN ('public', 'my_table', 'the_geom', 4326, 'POINT', 2);

Id place the_geom

1 Tokyo

2 Sapporo

3 Sendai

Page 16: PostGIS  - 1 ( 入門編)

ジオメトリーを挿入• 先ほど挿入したジオメトリー列に実際の

場所の情報を格納する

UPDATE my_table SET the_geom = ST_GeomFromText ( POINT (′ 139.691701 35.689506) 4326)′ WHERE place = Tokyo ;′ ′

Id place the_geom

1 Tokyo 0101000020E6………

2 Sapporo 0101000020E6………

3 Sendai 0101000020E6………

UPDATE my_table SET the_geom = ST_GeomFromText ( POINT (′ 141.350801 43.068625) 4326)′ WHERE place = Sappro ;′ ′

UPDATE my_table SET the_geom = ST_GeomFromText ( POINT (′ 140.882049 38.260297) 4326)′ WHERE place = Sendai ;′ ′

Page 17: PostGIS  - 1 ( 入門編)

プライマリーキーの設定• プライマリーキーとは、テーブルの各行

を一意に識別するための列。 QGIS でデータを見るために必要。この場合、 Id をキーに設定。

ALTER TABLW my_table ADD CONSTRAINT pkey_my_table PRIMARY KEY (Id);

Id place the_geom

1 Tokyo 0101000020E6………

2 Sapporo 0101000020E6………

3 Sendai 0101000020E6………

Page 18: PostGIS  - 1 ( 入門編)
Page 19: PostGIS  - 1 ( 入門編)

テーブルの作成

CREATE TABLE my_table (id int4, place varchar (20));

Id place

テーブルを作るコマンドテーブル名

列名とデータタイプ 列名とデータタイプセミコロン

Page 20: PostGIS  - 1 ( 入門編)

テーブルの作成• PostgreSQL のデータタイプ

データタイプ 説明 例int4 整数 3

float4 浮動小数点数 1.023

varchar() テキスト ‘Tokyo’

geometry ジオメトリー 010200002E6****

date 日付 Wed Dec 17

time 時間 07:37:16 1997 PST

Page 21: PostGIS  - 1 ( 入門編)

データの挿入

INSERT INTO my_table VALUES (1, 'Tokyo');

データを挿入するコマンド

データを挿入するテーブル

データを挿入するコマンド

挿入するデータ各列の順番に対応

Id place

1 Tokyo

2 Sapporo

3 Sendai

Page 22: PostGIS  - 1 ( 入門編)

挿入したデータの検索• テーブル内のすべての行と列を表示

• Tokyo の id を表示 -> テーブルから、列 place が‘ Tokyo’ である id の行を表示

SELECT * FROM my_table;

SELECT id FROM my_table WHERE place = ‘Tokyo’;

行を検索するコマンド

テーブルの指定

テーブル名

Page 23: PostGIS  - 1 ( 入門編)

ジオメトリー列の挿入SELECT ADDGEOMETRYCOLUMN ('public', 'my_table', 'the_geom', 4326, 'POINT', 2);

Id place the_geom

1 Tokyo

2 Sapporo

3 Sendai

Id Schema Table Name

Geometry Column

SRID Geometry Type

Dimension

1 Public my_table the_geom 4326 POINT 2

my_table

geometry_columns

1. my_table にジオメトリーを保存するための列を挿入

2. geometry_columns テーブルに挿入したジオメリー列とそのテーブルに関する情報を挿入

Page 24: PostGIS  - 1 ( 入門編)

ジオメトリー列の挿入

• ADDGEOMETRYCOLUMN は PostGIS コマンド• 必要な情報は、– スキーマ名 ( 省略可 ) : ‘public’– テーブル名 : ‘my_table’– ジオメトリー列名 : ‘the_geom’– 地理参照系 ID  ( EPSG ) : 4326– ジオメトリータイプ : ‘POINT’– 地理参照系の次元 : 2

SELECT ADDGEOMETRYCOLUMN ('public', 'my_table', 'the_geom', 4326, 'POINT', 2);

Page 25: PostGIS  - 1 ( 入門編)

ジオメトリータイプ• ジオメトリーとは、表現したい対象の幾何的

な形状• 実際の世界をモデル化するためにいくつかのジ

オメトリーが考えられるが、点、線、面であらわすのが一般的

• PostGIS のジオメトリータイプには、点、線、面、に対応する、 POINT 、 LINESTRING 、 POLYGONが用意されて いる。

• PostGIS では、代表的な 3 タイプの他に多数のジオメトリータイプがある

Page 26: PostGIS  - 1 ( 入門編)

ジオメトリータイプ• POINT

• LINESTRING

• POLYGON

Page 27: PostGIS  - 1 ( 入門編)

ジオメトリーを挿入UPDATE my_table SET the_geom = ST_GeomFromText ( POINT (′ 139.691701 35.689506) 4326)′ WHERE place = Tokyo ;′ ′

Id place the_geom

1 Tokyo 0101000020E6………

UPDATE my_table SET the_geom = XXX;

既存の行の内容を変更するコマンド

Page 28: PostGIS  - 1 ( 入門編)

ジオメトリーを挿入• じST_GeomFromText ( POINT (′ 139.691701 35.689506) 4326)′

ジオメトリーをテキスト表現から作るコマンド

ジオメトリーをテキストで表現

SRID

UPDATE my_table SET the_geom = ST_GeomFromText ( POINT (′ 139.691701 35.689506) 4326)′ WHERE place = Tokyo ;′ ′

Page 29: PostGIS  - 1 ( 入門編)

ジオメトリーを挿入

ST_GeomFromText ( POINT (′ 139.691701 35.689506) 4326)′

(139.691701 35.689506)

(経度 緯度)

スペース!

Page 30: PostGIS  - 1 ( 入門編)

ジオメトリーを挿入UPDATE my_table SET the_geom =

ST_GeomFromText ( POINT (′ 139.691701 35.689506) 4326)′ WHERE place = Tokyo ;′ ′

Id place the_geom

1 Tokyo 0101000020E6………

Page 31: PostGIS  - 1 ( 入門編)

プライマリーキーの設定• データ(各行)が一意であることを保障

する仕組み

ALTER TABLE my_table ADD CONSTRAINT pkey_my_table PRIMARY KEY (Id);

Id place the_geom

1 Tokyo 0101000020E6………

2 Sapporo 0101000020E6………

3 Sendai 0101000020E6………

プライマリーキーを設定する列名

制限名。この場合プライマリーキー名

テーブルに何かしらの規制を加えるためのコマンド

規制がプライマリーキーであることの宣言

Page 32: PostGIS  - 1 ( 入門編)

データベース

class2010スキーマ

public

テーブルmy_table

列Id, place, the_geom

制限プライマリーキー

コメントテーブルについてコメントを残

せる

インデックス

Page 33: PostGIS  - 1 ( 入門編)

実際のテーブル

Page 34: PostGIS  - 1 ( 入門編)
Page 35: PostGIS  - 1 ( 入門編)

実際には、、、• テーブルを一から作り上げることは少な

い• 既存のデータを使うことが多い

• ということで、、、

• PostGIS へのデータの取り込み方を知る必要がある

Page 36: PostGIS  - 1 ( 入門編)

PostGIS へのデータの取り込み• psql2shp– コマンドラインツール、 shapefile のみ

• QGIS– SPIT   (Shapefile to PostGIS Import Tool)

• ogr2ogr– コマンドラインツール、さまざまなフォー

マット• ogr2gui– ogr2ogr の GUI バージョン

Page 37: PostGIS  - 1 ( 入門編)

shp2pgsql

• PostGIS と共にインストールされる shapefileをインポートするためのプログラム

• C:\Program Files\PostgreSQL\8.4\bin\  あたりにある shp2pgsql.exe がその正体

• このプログラムを使うには、プログラムのディレクトリーへ移動するか、パスを設定する

• 今回は、 shp2pgsql.bat を C:\OSGeo4W\etc\ini\ に保存して、 OSGeo4W から使う

Page 38: PostGIS  - 1 ( 入門編)

shp2pgsql

shp2pgsql -s SRID -I shapefile tableame > sql_file_name

コマンド SRID を指定空間インデックスを作成

Shapefile 名 テーブル名 作成される SQL 文の保存先とファイル名

SQL 文の作成 ファイルとして保存

Page 39: PostGIS  - 1 ( 入門編)

shp2pgsql

• Shp2pgsql で作った SQL 文をパイプ(|)を使って psql というプログラム渡し、データベースに shapfile の中身をインポート

• 途中の産物がない

shp2pgsql -s SRID -I shapefile テーブル名 | psql -h localhost -p 5432 -d データベース名 -U postgres

Page 40: PostGIS  - 1 ( 入門編)

QGIS を使った Shapefile の取り込み

• QGIS のアドインマネージャーで、 SPIT を使えるようにする。

Page 41: PostGIS  - 1 ( 入門編)

インポート先のデータベースの設定

インポートするデータの形式設定

Shapefile の選択・追加

Page 42: PostGIS  - 1 ( 入門編)

PostGIS からエクスポート• pgsql2shp• QGIS

Page 43: PostGIS  - 1 ( 入門編)

pgsql2shp

• PostGIS データーを shapefile に変換

Pgsql2shp -f shepefile 名 -h localhost -u postgres  データベース名 テーブル名

Page 44: PostGIS  - 1 ( 入門編)

Shapefile として保存 を選択