Download presentation
Presentation is loading. Please wait.
1
PostGIS - 1 (入門編)
2
PostGIS - 1(入門編) PostGISとPostgreSQLについて (PostGISとは何か)
DBMSとSQL (基本的なSQL構文について) PostGISジオメトリーとSRS (PostGISのジオメトリーと投影系について) 様々なジオメトリータイプ PostGISジオメトリーの作り方 EPSGコード PostGISデータの作り方 (一番簡単なジオメトリーを実際に手で作って見る。ポイントデータだけ) ポイントデータは、 PostGISへのデータの取り込み (既存のデータの取り込み方) QGIS shp2pgsql そのほか 実習 シェープファイルの取り込み (ポイント、ライン、ポリゴン) 非空間情報と空間クエリー(単一テーブル) 課題
3
PostGISとPostgreSQLについて (PostGISとは何か)
空間情報の検索、作成、操作ができる 現在は、ベクターデータのみを扱える 近い将来、ラスターも扱える
4
DBMSとSQL PostGISを使うには、データベースの基礎知識が必要となる。
そのためここでは少し、データベース操作の基礎となる、データベースマネージメントとSQLについてpgAdmin III を使って勉強する
5
pgAdmin III pgAdminは、PostgreSQLの操作をグラフィカルユーザーインターフェース(GUI)で可能にする
コマンドライン(CUI)のpsqlよりも使いやすい! PostGISのコマンドはすべてpgAdminから可能
6
pgAdmin III データベースの中身 データベースサーバー データベース スキーマ テーブル
7
スキーマとは? CREATE SCHEMA project_a; データベース内に作られるディレクトリーのようなもの
スキーマ間の情報検索が可能 (データベース間は不可能) 例えば、基本的なデータは、 ‘base’というスキーマに保存し、プロジェクトAに関するデータは、’project_a’というスキーマに保存する。 データのバックアップなど、維持管理が簡単になる。 CREATE SCHEMA project_a;
8
ファンクション PostGISのすべてのファンクションが収められている ジオメトリーコラム テーブル 各テーブルのジオメトリーについての情報が収められる 空間参照系 テーブル 空間参照系(SRS)についての情報が収められている
9
空間参照ID (SRID) 座標参照系(CRS)が標準化されている
代表的なコード系はEPSG (European Petroleum Survey Group) コード 例えば、 参照系名 EPSGコード WGS84 4326 日本測地系2000:JGD2000 4612 Tokyo / UTM zone 54N 3095
10
PostGISが動くデータベースを作る 1.データベースのルートで右クリックして、まずは、すべてのデータベースを更新する 日本語を使う場合
2.続いて、同じ場所で右クリックをして、データベースを新規に作成する。 日本語を使う場合
11
データベース用語 データベース スキーマ テーブル ビュー データベースの下に作られるディレクトリー構造のようなもの データを収める入れ物
データ自身ではなく、データを検索するクエリーを保存したもの
12
テーブルの作成 テーブルの作成、削除、修正、検索などはSQL(Structures Query Language)を用いて行う。
13
テーブルの作成 例えば、下のようなテーブルを作るとすると、
Id place CREATE TABLE my_table (id int4, place varchar (20));
14
データの挿入 先ほどのテーブルにデータを格納するには、 INSERT INTO my_table VALUES (1, 'Tokyo');
Id place 1 Tokyo 2 Sapporo 3 Sendai INSERT INTO my_table VALUES (1, 'Tokyo'); INSERT INTO my_table VALUES (2, 'Sapporo'); INSERT INTO my_table VALUES (3, 'Sendai');
15
ジオメトリー列の挿入 先ほどのテーブルに、ジオメトリーを保存するための列を挿入する。
Id place the_geom 1 Tokyo 2 Sapporo 3 Sendai SELECT ADDGEOMETRYCOLUMN ('public', 'my_table', 'the_geom', 4326, 'POINT', 2);
16
ジオメトリーを挿入 先ほど挿入したジオメトリー列に実際の場所の情報を格納する
Id place the_geom 1 Tokyo E6……… 2 Sapporo 3 Sendai UPDATE my_table SET the_geom = ST_GeomFromText (′POINT ( ) ′ 4326) WHERE place = ′Tokyo′; UPDATE my_table SET the_geom = ST_GeomFromText (′POINT ( ) ′ 4326) WHERE place = ′Sappro′; UPDATE my_table SET the_geom = ST_GeomFromText (′POINT ( ) ′ 4326) WHERE place = ′Sendai′;
17
プライマリーキーの設定 プライマリーキーとは、テーブルの各行を一意に識別するための列。QGISでデータを見るために必要。この場合、Idをキーに設定。 Id place the_geom 1 Tokyo E6……… 2 Sapporo 3 Sendai ALTER TABLW my_table ADD CONSTRAINT pkey_my_table PRIMARY KEY (Id);
19
テーブルの作成 CREATE TABLE my_table (id int4, place varchar (20));
テーブルを作るコマンド 列名とデータタイプ 列名とデータタイプ テーブル名 セミコロン Id place
20
テーブルの作成 PostgreSQLのデータタイプ データタイプ 説明 例 int4 整数 3 float4 浮動小数点数 1.023
varchar() テキスト ‘Tokyo’ geometry ジオメトリー E6**** date 日付 Wed Dec 17 time 時間 07:37: PST …
21
データの挿入 INSERT INTO my_table VALUES (1, 'Tokyo'); データを挿入するコマンド
挿入するデータ 各列の順番に対応 データを挿入するテーブル Id place 1 Tokyo 2 Sapporo 3 Sendai
22
挿入したデータの検索 テーブル内のすべての行と列を表示
Tokyoのidを表示 -> テーブルから、列placeが‘Tokyo’であるidの行を表示 SELECT * FROM my_table; 行を検索 するコマンド テーブルの指定 テーブル名 SELECT id FROM my_table WHERE place = ‘Tokyo’;
23
ジオメトリー列の挿入 SELECT ADDGEOMETRYCOLUMN ('public', 'my_table', 'the_geom', 4326, 'POINT', 2); my_table my_tableにジオメトリーを保存するための列を挿入 geometry_columns テーブルに挿入したジオメリー列とそのテーブルに関する情報を挿入 Id place the_geom 1 Tokyo 2 Sapporo 3 Sendai ADDGEOMETRYCOLUMNはPostGISコマンド 必要な情報は、 スキーマ名(省略可) : ‘public’ テーブル名 : ‘my_table’ ジオメトリー列名 : ‘the_geom’ 地理参照系ID (EPSG) : 4326 ジオメトリータイプ : ‘POINT’ 地理参照系の次元 : 2 geometry_columns Id Schema Table Name Geometry Column SRID Geometry Type Dimension 1 Public my_table the_geom 4326 POINT 2
24
ジオメトリー列の挿入 ADDGEOMETRYCOLUMNはPostGISコマンド 必要な情報は、
SELECT ADDGEOMETRYCOLUMN ('public', 'my_table', 'the_geom', 4326, 'POINT', 2); ADDGEOMETRYCOLUMNはPostGISコマンド 必要な情報は、 スキーマ名(省略可) : ‘public’ テーブル名 : ‘my_table’ ジオメトリー列名 : ‘the_geom’ 地理参照系ID (EPSG) : 4326 ジオメトリータイプ : ‘POINT’ 地理参照系の次元 : 2
25
ジオメトリータイプ ジオメトリーとは、表現したい対象の幾何的な形状
ジオメトリーとは、表現したい対象の幾何的な形状 実際の世界をモデル化するためにいくつかのジオメトリーが考えられるが、点、線、面であらわすのが一般的 PostGISのジオメトリータイプには、点、線、面、に対応する、POINT、LINESTRING、POLYGONが用意されて いる。 PostGISでは、代表的な3タイプの他に多数のジオメトリータイプがある
26
ジオメトリータイプ POINT LINESTRING POLYGON
27
ジオメトリーを挿入 UPDATE my_table SET the_geom = ST_GeomFromText (′POINT ( ) ′ 4326) WHERE place = ′Tokyo′; UPDATE my_table SET the_geom = XXX; 既存の行の内容を変更するコマンド Id place the_geom 1 Tokyo E6………
28
ジオメトリーを挿入 じ ST_GeomFromText (′POINT (139.691701 35.689506) ′ 4326)
ジオメトリーをテキスト表現から作るコマンド SRID ジオメトリーをテキストで表現 UPDATE my_table SET the_geom = ST_GeomFromText (′POINT ( ) ′ 4326) WHERE place = ′Tokyo′;
29
ジオメトリーを挿入 (経度 緯度) スペース!
ST_GeomFromText (′POINT ( ) ′ 4326) ( ) スペース! (経度 緯度)
30
ジオメトリーを挿入 UPDATE my_table SET the_geom =
ST_GeomFromText (′POINT ( )′ 4326) WHERE place = ′Tokyo′; Id place the_geom 1 Tokyo E6………
31
プライマリーキーの設定 データ(各行)が一意であることを保障する仕組み
制限名。この場合プライマリーキー名 テーブルに何かしらの規制を加えるためのコマンド ALTER TABLE my_table ADD CONSTRAINT pkey_my_table PRIMARY KEY (Id); 規制がプライマリーキーであることの宣言 プライマリーキーを設定する列名 Id place the_geom 1 Tokyo E6……… 2 Sapporo 3 Sendai
32
データベース class2010 スキーマ public コメント テーブルについてコメントを残せる テーブル my_table 列 Id, place, the_geom インデックス 制限 プライマリーキー
33
実際のテーブル
35
実際には、、、 テーブルを一から作り上げることは少ない 既存のデータを使うことが多い ということで、、、
PostGISへのデータの取り込み方を知る必要がある
36
PostGISへのデータの取り込み psql2shp QGIS ogr2ogr ogr2gui コマンドラインツール、shapefileのみ
SPIT (Shapefile to PostGIS Import Tool) ogr2ogr コマンドラインツール、さまざまなフォーマット ogr2gui ogr2ogrのGUIバージョン
37
shp2pgsql PostGISと共にインストールされるshapefileをインポートするためのプログラム
C:\Program Files\PostgreSQL\8.4\bin\ あたりにあるshp2pgsql.exeがその正体 このプログラムを使うには、プログラムのディレクトリーへ移動するか、パスを設定する 今回は、shp2pgsql.batをC:\OSGeo4W\etc\ini\ に保存して、OSGeo4Wから使う
38
shp2pgsql shp2pgsql -s SRID -I shapefile tableame > sql_file_name
コマンド SRIDを指定 空間インデックスを作成 Shapefile名 テーブル名 作成されるSQL文の 保存先とファイル名 SQL文の作成 ファイルとして保存
39
shp2pgsql shp2pgsql -s SRID -I shapefile テーブル名 | psql -h localhost -p d データベース名 -U postgres Shp2pgsqlで作ったSQL文をパイプ(|)を使ってpsqlというプログラム渡し、データベースにshapfileの中身をインポート 途中の産物がない
40
QGISを使ったShapefileの取り込み
QGISのアドインマネージャーで、SPITを使えるようにする。
41
インポート先のデータベースの設定 インポートするデータの形式設定 Shapefileの選択・追加
42
PostGISからエクスポート pgsql2shp QGIS
43
pgsql2shp PostGISデーターをshapefileに変換
Pgsql2shp -f shepefile名 -h localhost -u postgres データベース名 テーブル名
44
Shapefileとして保存 を選択
Similar presentations
© 2024 slidesplayer.net Inc.
All rights reserved.