PostGIS
PostGIS は、 PostgreSQLの非常に人気のオープンソース拡張機能であり、 GIS地理情報システムオブジェクトをデータベースに保存し、 SQLを介して照会するためのサポートを導入します。
サポートされているインストール方法
環境PostgreSQLバージョン、Kubernetesバージョン、およびCloudNativePGバージョンによっては、PostGISをプロビジョニングする2つの主な方法があります。
**Image Volume Extensions** 拡張バイナリを読み取り専用ボリュームとしてOCIイメージから直接マウントしますPG 18+およびKubernetes 1.35+で推奨。
**PostGIS Operand Images** すでにPostGISライブラリを含む事前構築されたPostgreSQLイメージを使用します。
以下のいずれかの方法を使用してPostGISがシステムにプロビジョニングされた後、データベース内で有効にして管理する必要があります以下の 拡張機能の有効化 セクションを参照してください。
方法1イメージボリューム拡張
PostgreSQL 18 および Kubernetes 1.35 ImageVolume
機能ゲートが有効になっている1.33および1.34以降、 イメージボリューム拡張を使用したイメージカタログ
を活用できます。
これは、拡張機能のOCIイメージのコンテンツを読み取り専用ボリュームとしてPostgresコンテナに直接マウントすることにより、公式の最小限のPostgreSQLイメージを使用し、実行時にPostGISを「プラグイン」できるため、拡張機能を管理する最新の方法です。これにより、拡張機能のライフサイクルがベースのPostgreSQLイメージから分離され、オペランドイメージをスリムで安全な状態に保ちます。
CloudNativePGコミュニティは、
postgres-extensions-containers を介してPostGISのスタンドアロン拡張コンテナイメージを配布します
リポジトリ。
イメージカタログを介してCloudNativePG 1.29+の場合
CloudNativePG 1.29から、 image catalogs with image volume extensions を利用できます
これらのバージョンの管理を自動化します。
image volume extensions page を参照してください
postgis
キーを使用して、PostgreSQLクラスターに拡張機能を追加する方法については、
apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
name: cluster-postgis
spec:
# ... <snip>
imageCatalogRef:
apiGroup: postgresql.cnpg.io
kind: ClusterImageCatalog
name: postgresql-minimal-trixie
major: 18
postgresql:
extensions:
# ... <snip>
- name: postgis
# ... <snip>
Cluster リソースに直接
次の例は、 Cluster リソースに拡張機能を直接ロードすることにより、
PostGIS 3.6.2をPostgreSQL 18クラスターに追加する方法を示しています。
apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
name: cluster-postgis
spec:
imageName: ghcr.io/cloudnative-pg/postgresql:18.3-minimal-trixie
instances: 1
storage:
size: 1Gi
postgresql:
extensions:
- name: postgis
image:
reference: ghcr.io/cloudnative-pg/postgis-extension:3.6.2-18-trixie
ld_library_path:
- system
postgres-extensions-containers を参照してください。
この拡張機能の最新バージョンと手順のプロジェクト。
方法2 PostGISオペランド画像
専用のpostgis-containers
レジストリを使用し続けたいユーザー、またはイメージボリューム拡張をサポートしていないPostgreSQLまたはKubernetesの古いバージョンを使用しているユーザーの場合、コミュニティはプリインストールされたPostGIS
PostgreSQL Container images の上にビルドされてイメージの維持を続けています。
詳細については、次をご覧ください。
この方法を使用するには、 .spec.imageName
で目的のPostGIS対応画像をポイントします。
apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
name: cluster-postgis
spec:
instances: 1
imageName: ghcr.io/cloudnative-pg/postgis:18.3-3.6.2-system-trixie
storage:
size: 1Gi
拡張機能の有効化
バイナリが上記のいずれかの方法でプロビジョニングされたら、データベースで拡張機能を有効にする必要があります。
Database
リソースを使用すると、バージョンのアップグレードを含む拡張機能のライフサイクルの宣言的管理が可能になります。
注釈
詳細については、 データベース内の拡張機能の管理 を参照してください。
apiVersion: postgresql.cnpg.io/v1
kind: Database
metadata:
name: cluster-postgis-app
spec:
name: app
owner: app
cluster:
name: cluster-postgis
extensions:
- name: postgis
version: 3.6.2
- name: postgis_raster
- name: postgis_sfcgal
- name: fuzzystrmatch
- name: address_standardizer
- name: address_standardizer_data_us
- name: postgis_tiger_geocoder
- name: postgis_topology
Tip
extensions スタンザで`version` を指定することを強くお勧めします。 CloudNativePGは、このバージョンをデータベースに現在インストールされているバージョンと比較します。それらが異なる場合、必要な`ALTER EXTENSION ... UPDATE TO ...` コマンドが自動的に実行されます。
検証
app
データベースに接続し、PostgreSQLカタログを照会することにより、コンテナ内にあるPostGISの利用可能なバージョンを簡単に確認できます。例
kubectl cnpg psql cluster-postgis -- app -c \
"SELECT * FROM pg_available_extensions WHERE name ~ ^postgis ORDER BY 1"
これに似たものを返しますこのドキュメントのものとは異なる値を取得する場合があります。
name | default_version | installed_version | comment
- -------------------------+-----------------+-------------------+------------------------------------------------------------
postgis | 3.6.2 | 3.6.2 | PostGIS geometry and geography spatial types and functions
postgis-3 | 3.6.2 | | PostGIS geometry and geography spatial types and functions
postgis_raster | 3.6.2 | 3.6.2 | PostGIS raster types and functions
postgis_raster-3 | 3.6.2 | | PostGIS raster types and functions
postgis_sfcgal | 3.6.2 | 3.6.2 | PostGIS SFCGAL functions
postgis_sfcgal-3 | 3.6.2 | | PostGIS SFCGAL functions
postgis_tiger_geocoder | 3.6.2 | 3.6.2 | PostGIS tiger geocoder and reverse geocoder
postgis_tiger_geocoder-3 | 3.6.2 | | PostGIS tiger geocoder and reverse geocoder
postgis_topology | 3.6.2 | 3.6.2 | PostGIS topology spatial types and functions
postgis_topology-3 | 3.6.2 | | PostGIS topology spatial types and functions
(10 rows)
次のステップは、 Database
リソースにリストされている拡張機能がapp
データベースに正しくインストールされていることを確認します。
kubectl cnpg psql cluster-postgis -- app -c \dx
コマンドは次のようなものを返します。
List of installed extensions
Name | Version | Default version | Schema | Description
- -----------------------------+---------+-----------------+------------+------------------------------------------------
address_standardizer | 3.6.2 | 3.6.2 | public | Used to parse an address into constituent ...
address_standardizer_data_us | 3.6.2 | 3.6.2 | public | Address Standardizer US dataset example
fuzzystrmatch | 1.2 | 1.2 | public | determine similarities and distance between...
plpgsql | 1.0 | 1.0 | pg_catalog | PL/pgSQL procedural language
postgis | 3.6.2 | 3.6.2 | public | PostGIS geometry and geography spatial type...
postgis_raster | 3.6.2 | 3.6.2 | public | PostGIS raster types and functions
postgis_sfcgal | 3.6.2 | 3.6.2 | public | PostGIS SFCGAL functions
postgis_tiger_geocoder | 3.6.2 | 3.6.2 | tiger | PostGIS tiger geocoder and reverse geocoder
postgis_topology | 3.6.2 | 3.6.2 | topology | PostGIS topology spatial types and functions
(9 rows)
最後に
kubectl cnpg psql cluster-postgis -- app -c SELECT postgis_full_version()
戻る
postgis_full_version
- -----------------------------------------------------------------------------------------------------------------------
POSTGIS="3.6.2 08d9b9f" [EXTENSION] PGSQL="180" GEOS="3.13.1-CAPI-1.19.2"
SFCGAL="SFCGAL 2.0.0, CGAL 6.0, BOOST 1.83.0"
PROJ="9.6.0 NETWORK_ENABLED=OFF URL_ENDPOINT= USER_WRITABLE_DIRECTORY=/tmp/proj"
(compiled against PROJ 9.6.0)
GDAL="GDAL 3.10.3, released 2025/04/01 GDAL_DATA not found"
LIBXML="2.9.14" LIBJSON="0.18" LIBPROTOBUF="1.5.1" WAGYU="0.5.0 (Internal)"
TOPOLOGY RASTER
(1 row)