第1章 導入

目次

1.1. PostGIS ってなに?

PostGISは PostgreSQL を拡張して、データベース内での空間データの格納、インデックス、クエリー、処理を可能にするものです。通常の関係データ内に位置データを保持することで、空間クエリーが同じ SQL、トランザクション、制約、アクセス制御、バックアップツール、アプリケーションからの接続を利用できるようになります。

postgis エクステンションは次の物を追加します:

  • 平面座標系用の geometry と地理座標系用の geography

  • 位置によるフィルタリングが可能な時に PostgreSQL の平面において全タプルのスキャンを避ける空間インデックス。

  • 計測関数、関係関数、オーバーレイ関数、ジオメトリー構築関数、ジオメトリー編集関数、座標変換関数、クラスタリング関数、空間データ交換関数。

  • WKT、WKB、GeoJSON、GML、KML、FlatGeobuf、Geobuf、Mapbox Vector Tilesなどの一般的な空間データの符号化と書式への対応。

PostgreSQL 空間データベースを作ります。アプリケーションは別の GIS 処理システムに移動させることなく普通の問合せも位置に関係した問い合わせもできます。デスクトップ GIS、地図サーバー、ETL ツール、アプリケーションフレームワークは通常の PostgreSQL インターフェイスを通じて接続することができます。

1.2. PostGIS ディストリビューションとは ?

このマニュアルでは PostGIS ソースのディストリビューションについて書いています。PostGIS がどのようにビルドされたか、またパッケージされたかによりますが、いくつかの PostgreSQL エクステンションとコマンドラインツールが供給されています:

postgis

中核となるジオメトリー型とジオグラフィー型、空間インテックス、ほとんどの空間関数。

postgis_raster

ラスターの保存、分析、ロード、エクスポート。ラスター機能は GDAL を使用しています。ビルドから除外することもできます。

postgis_topology

SQL/MM ノード、エッジ、フェイスの共有を基にしたモデルのトポロジータイプと関数。

postgis_sfcgal

任意ライブラリの SFCGAL を裏で使った2次元と3次元の追加機能。

ローダーとユーティリティ

shp2pgsqlpgsql2shpraster2pgsql は一般的なファイル書式とPostGISとの間のデータ移動をするものです。他のユーティリティとしてはアップグレード、プロファイリング、開発を補助するものがあります。

ソースツリーは liblwgeomlibpgcommon といった内部ライブラリーも持ちます。これらは PostGIS コンポーネントで共有される実装レイヤーであって、PostgreSQL エクステンションと別に配布されるものではありません。ほとんどのユーザーは中核エクステンションを CREATE EXTENSION postgis で有効化することで利用開始します。有効なコンポーネントと構築オプションについては 2章PostGISインストール を参照して下さい。

1.3. PostGIS プロジェクトファミリー

このマニュアルは主要ディストリビューション postgis/postgis を対象にしています。公式の PostGIS source organization では全プロジェクトのホスティングまたはミラーリングを行っています。これらのプロジェクトのリリースサイクル、インストール手順、文書はそれぞれ独自です。また、中核エクステンションはこれらのインストールを行いません。

  • Address Standardizer は、住所の構文解析と正規化を行います。PostGIS 3.7 で PostGIS 主要ソースツリーから分離されました。

  • PostGIS TIGER Geocoder は、米国国勢調査局の TIGER データを使って米国住所のジオコーディング機能と逆ジオコーディング機能を提供します。これも主要ディストリビューションから分離して維持管理されるようになりました。

  • H3-pg は H3 階層型六角形インデックスシステムの PostgreSQL 利用とPostGIS との相互運用を提供しています。

  • PostGIS Java は Java での PostGIS の型のバインディングを提供しています。

  • Introduction to PostGIS は PostGIS プロジェクトが管理するハンズオンワークショップです。

その他の PostgreSQL 空間エクステンションは、独立したプロジェクトを維持すると同時に PostGIS を補完するものです。例えば pgRouting は経路探索やグラフ解析の機能を追加します。プロジェクトごとに独自のマニュアルやサポートポリシーがあります。

1.4. このマニュアルの使い方

このマニュアルは PostGIS データモデルのガイドであり、かつ SQL インターフェースの完全な参照です。開始点は皆さんの行おうとしていることに応じて次から選択します:

空間 SQL が初めての場合

チュートリアルとして Introduction to PostGIS workshop から始めるといいでしょう。その後 4章データ管理 を使って空間型、座標系、妥当性、ロード、インデックスといったことを理解していきます。

PostGISのインストールまたはアップグレードを行う場合

2章PostGISインストール3章PostGIS管理 を読んで下さい。パッケージ独自のインストールとサポート対象リリース情報は PostGIS website にあります。

空間クエリーを書く場合

空間関係とインデックスを意識したクエリーパターンについては 5章空間クエリ を、また一般的な効率上の問題については 6章性能向上に関する技法 を読んで下さい。

特定の関数が必要な場合

7章PostGISリファレンス または 13章PostGIS関数索引 を使います。関数のページでは受け付ける型、次元対応、標準準拠、必要ライブラリー、利用可能なバージョンが書かれています。

任意コンポーネントを使う場合

9章トポロジ10章ラスタデータの管理、クエリ、アプリケーション11章ラスタ リファレンス8章SFCGAL 関数リファレンス を読んで下さい。

問題が発生した場合

PostGIS_Full_Version でバージョン情報を得たうえで 14章問題を報告する に従ってください。リリース系列間でふるまいが異なる時は 付録A リリースノート を確認して下さい。

1.5. 標準への対応

このマニュアルでは個々の関数について空間関係の標準に準拠している場合にはその旨を表示します。どの振る舞いが移植可能でどの振る舞いが PostGIS 独自かを知ることができます。PostGISは、ジオメトリー型、Well-Known Text (WKT)、Well-Known Binary (WKB)、一般的な空間アクセス関数、コンストラクター関数、述語関数、処理関数からなる OGC Simple Features for SQL モデルを実装しています。PostGIS は多数の SQL/MM Spatial 準拠の型と関数の実装もされています。

PostGIS は新しい標準で定義されているジオメトリーファミリーに対応しています。SQL/MM 曲線ジオメトリーや OGC Simple Features Access 1.2 の多面体サーフェス、三角形、TIN があたります。これらのジオメトリーファミリーへの対応状況は関数ごとに決まっています、各関数のページで対応する入力タイプと適合水準について記載があります。

PostGIS は幅広く使われている拡張と統合を含んでいます。PostGIS 拡張の例としては SRID メタデータを含んだ拡張書式の Extended WKT (EWKT)、Extended WKB (EWKB)、ジオグラフィー、ラスターが当てはまります。PostGIS はまた、GeoJSON、GML、KML といった他の標準データ交換書式の入出力に対応しています。これらの機能は別途文書化されていて、特定の関数や書式で書かれていない限りは、OGC Simple Features や SQL/MM 要求とは別と考えてください。

When the implementation intentionally differs from a standard, or when a standard leaves behavior ambiguous, the relevant function page describes the PostGIS behavior. 13章PostGIS関数索引 summarizes SQL/MM compliance and geometry-type support across functions.

1.6. Project and Community

PostGIS began in 2001 as a spatial database research project at Refractions Research. It is now an OSGeo project developed by contributors and organizations around the world. The Project Steering Committee coordinates releases, project policy, and the general direction of development. The complete contributor and sponsor record is in 15章Credits and Acknowledgments at the end of this manual.

The manual is the authoritative reference for the released SQL interface. The project website and source tree provide the surrounding material:

  • Documentation routes readers to getting-started instructions, versioned manuals, tips, training material, and the FAQ.

  • Community lists mailing lists, chat, events, videos, and other support channels.

  • Developer documentation covers development environments, testing, coding style, internals, maintenance, governance, releases, and website work.