重要
翻訳は あなたが参加できる コミュニティの取り組みです。このページは現在 100.00% 翻訳されています。
16.1. レッスン: PostGISの設定
PostGIS機能を設定することで、PostgreSQLの中から空間関数にアクセスできるようになります。
このレッスンの目的: 空間関数をインストールし, それらの効果を簡単にデモする.
注釈
この演習では、PostGIS バージョン 2.1 以降を使用することを想定しています。古いバージョンでは、インストールとデータベース設定が異なりますが、このモジュールの残りの部分はそのまま使用できます。インストールとデータベース設定のヘルプについては、お使いのプラットフォームのドキュメントを参照してください。
16.1.1. Ubuntuでのインストール
PostGISはaptから簡単にインストールできます.
$ sudo apt install postgresql
$ sudo apt install postgis
本当に簡単です...
注釈
インストールされる正確なバージョンは、使用しているUbuntuのバージョンと、設定したリポジトリに依存します。インストール後、psqlや他のツールで select PostGIS_full_version(); クエリを発行して、バージョンを確認することができます。
特定のバージョン(例えば、PostgreSQLバージョン13とPostGIS 3)をインストールする場合は、以下のコマンドを使用します。
$ sudo apt install wget ca-certificates
$ sudo lsb_release -a
$ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'
$ sudo apt-get update
$ sudo apt install postgis postgresql-13-postgis-3
16.1.2. Windowsでのインストール
Windowsへのインストールは、バイナリパッケージから通常のWindowsのインストールダイアログを使って行うことができます。
まず、 ダウンロードページ にアクセスします。次に、このガイド に従ってください。
Windowsへのインストールに関する詳しい情報は、PostGISウェブサイト に掲載されています。
16.1.3. その他のプラットフォームへのインストール
PostGISウェブサイトのダウンロード には、macOSを含む他のプラットフォームや他のLinuxディストリビューションへのインストールについての情報があります
16.1.4. PostGISを使うためにデータベースを設定する
一度PostGISがインストールされたら、拡張機能を使用するようにデータベースを設定する必要があります。PostGISのバージョン> 2.0をインストールしている場合、これが前の演習からアドレスデータベースを使用してpsqlで次のコマンドを発行するのと同じくらい簡単です。
$ psql -d address -c "CREATE EXTENSION postgis;"
注釈
バージョンによっては、データベースを空間的に有効にする方法について、https://postgis.net/docs/postgis_administration.html#create_spatial_db で多くの説明を見つけることができるでしょう。
16.1.5. インストールされたPostGIS機能を見る
PostGISは、空間データを扱えるようにPostgreSQLのコア機能を拡張する、データベース機能の集まりと考えることができます。「扱える」とは、格納、取得、クエリおよび操作を意味します。これを行うために、多数の機能が、データベースにインストールされています。
私たちのPostgreSQLの address住所 データベースはPostGISのおかげで地理空間的に有効になりました。次のセクションではこれについてもっと深く掘り下げていきますが、ここでちょっと味見しましょう。テキストからポイントを作成したいとしましょう。最初に、psqlコマンドを使ってポイントに関連する関数を見つけます。address住所 データベースにまだ接続していない場合は、今すぐ実行してください。次に、
\df *point*
これが探しているコマンドです: st_pointfromtext 。 リストをページ送りするには、下矢印を使用し、 Q を押して psql シェルに戻ります。
次のコマンドを実行してみてください:
select st_pointfromtext('POINT(1 1)');
結果:
st_pointfromtext
--------------------------------------------
0101000000000000000000F03F000000000000F03F
(1 row)
注目すべき3点:
POINT(1 1)を使って、ポイントの位置を 1,1 (EPSG:4326 を想定)と定義しましたどのテーブル上でもなく、SQLプロンプトから入力されたデータでSQL文を実行しました
結果の行はあまり意味がありません。
得られた行は、'Well Known Binary' (WKB) と呼ばれるOGCフォーマットで記述されています。次のセクションではこのフォーマットを詳細に見ていきます。
結果をテキストに戻すため、関数リストをすばやくスキャンしてテキストを返す何かを探します:
\df *text
私たちが探しているクエリは st_astext です。先のクエリと組み合わせてみましょう:
select st_astext(st_pointfromtext('POINT(1 1)'));
結果:
st_astext
------------
POINT(1 1)
(1 row)
文字列 POINT(1,1) を入力し、 st_pointfromtext() を使用してポイントに変え、 st_astext() で人が読める形式に戻すと、元の文字列が返ってきました。
PostGISの使い方の詳細に入る前の最後の例です:
select st_astext(st_buffer(st_pointfromtext('POINT(1 1)'),1.0));
これは何をしたでしょうか?それはポイントを中心に1度のバッファを作成し、結果をテキストとして返しました。
16.1.6. 空間参照系
この拡張は、PostGIS機能だけでなく、欧州石油調査グループ(EPSG)によって定義された空間参照システム(SRS)の定義のコレクションを含んでいます。これらは、座標参照系(CRS)変換などの操作に使用されます。
これらのSRSの定義は通常のデータベーステーブルに格納されているので、データベースの中にそれを調べることができます。
まず、psqlプロンプトで次のコマンドを入力して、テーブルのスキーマを見てみましょう。
\d spatial_ref_sys
結果はこうなります:
Table "public.spatial_ref_sys"
Column | Type | Modifiers
-----------+-------------------------+-----------
srid | integer | not null
auth_name | character varying(256) |
auth_srid | integer |
srtext | character varying(2048) |
proj4text | character varying(2048) |
Indexes:
"spatial_ref_sys_pkey" PRIMARY KEY, btree (srid)
このテーブルを表示および操作するために、(入門セクションから学んだように)標準のSQLクエリを使用できます - ただし何をしているのか分からなければ、任意のレコードを更新または削除するのは良い考えではありません。
興味のあるSRIDは、EPSG:4326 - WGS 84楕円体を使用した地理/緯度経度参照系でしょう。それを見てみましょう:
select * from spatial_ref_sys where srid=4326;
結果:
srid | 4326
auth_name | EPSG
auth_srid | 4326
srtext | GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS
84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],TOWGS84[0,
0,0,0,0,0,0],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,
AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,
AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]]
proj4text | +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs
srtext はwell known text(WKT)で記述された投影法の定義です(シェープファイルの集まりにある.prjファイルからこれを認識できるでしょう)。
16.1.7. 結論
これでPostGISの関数はPostgreSQLのコピーにインストールされました。これによりPostGISの豊富な空間関数を利用できるようになります。
16.1.8. 次は?
次はデータベースにおける空間地物の表現方法について学習しましょう。