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