Article

Amazon Linux 2023でPostGISが復帰:SFCGAL対応とGDALの制約を読む

PostgreSQL RPMリポジトリでAmazon Linux 2023向けGISパッケージの提供が再開され、SFCGALにも対応しました。GDALの未収録ドライバーとDB側の有効化設定を分けて、採用時の判断ポイントを整理します。

Share

こはるの読みどころ

パッケージが入ることと、必要なデータ形式を扱えることは別なんだね。入力形式からたどると、自分の構成で試したい点が見えてくるよ。

こはるの読みどころ

Amazon Linux 2023で地理空間データを扱う環境を組むとき、PostGISのパッケージが見つかるだけでは、手元の処理を移せるか判断しきれません。取り込むファイル形式や、使いたい空間演算までそろっているかが気になるところです。

その判断を見直すきっかけになったのが、2026年10月22日に発表された、PostgreSQL RPMリポジトリのGISパッケージ提供再開です。SFCGALも加わった今回の構成を、GDALの対応形式、ライブラリの配置、DBで使う機能の順にたどると、試せる用途と残る制約が見えてきます。

GDALの任意依存を外しても、すべてのデータ形式が戻るわけではない

提供再開の対象はAmazon Linux 2023上のPostgreSQL 14〜18で、アーキテクチャはx86_64とaarch64です。GISスタックは、GDALのリンク先となる一部ライブラリがOSにないため一度取り下げられていましたが、それらを必要とするドライバーが任意機能であると整理され、復帰しました。提供再開の告知

GDALは、ビルドに組み込む依存ライブラリによって対応形式が変わります。公式のビルド資料でも、追加ライブラリと任意ドライバーの依存関係を案内しています。したがって、必要な依存を減らして配布可能にすることと、ほかのOS向けビルドと同じ形式を扱えることは、別の話ですね。

今回のAL2023向けGDALでは、GeoTIFF、COG、GeoPackageなどが利用対象に残る一方、netCDF、HDF4/HDF5、FITS、LIBKML、XLS、GPSBabel、GMLAS、Arrow/Parquetは含まれません。また、GTK 2がないため、シェープファイル読み込み用のshp2pgsql-guiもビルドされません。AL2023向け構成の制約

たとえば、GeoTIFFを入力する処理なら検証候補にできますが、netCDFをこのGDALで直接読む設計には不足があります。採用を考えるときは、ファイルの入力・出力形式を先に洗い出し、対応するドライバーが含まれるか照合すると判断しやすくなります。

別プレフィックスのライブラリを、PostGISが参照する

PGDG側のGDAL、GEOS、PROJは、/usr/gdal313、/usr/geos315、/usr/proj98という専用の配置先を使います。OS標準のライブラリを置き換えず、PostGISはrpathを通じてこれらを参照する構成です。ライブラリ配置の説明

この構成では、OS側のライブラリの版だけを調べても、DB内のPostGISが使う構成を把握しきれません。確認の起点にできるのが、PostGISを有効にしたDBで実行する次のSQLです。

SQL
-- PostGISの版とビルド構成を読み取る。
SELECT postgis_full_version();

PostGIS_Full_Version()は、PostGISの版とビルド構成を返し、ライブラリとSQLスクリプトの整合についても情報を示します。導入時の結果を記録しておくと、更新前後で依存ライブラリがどう変わったかを比較する材料になります。

SFCGAL対応は、DBで空間演算を有効にする選択肢を増やす

SFCGALはCGALを利用するC++ライブラリで、PostGISへ高度な2D・3D空間演算を提供します。機能をDBで使うには、postgis_sfcgal拡張を有効にします。SFCGAL関数リファレンス

具体例が、面を押し出して立体を作るCG_Extrudeです。この関数にはSFCGALバックエンドが必要で、CG_Extrudeという名前での提供はPostGIS 3.5.0以降です。SFCGAL対応ビルドが用意されていても、使いたい関数名や提供開始版は個別に照合したいところです。

今回、PostGIS 3.3〜3.7系がSFCGAL対応でビルドされ、通常のインストールでは実行時ライブラリのSFCGAL-libsが依存として入ります。ビルド用に追加されたCGAL-develとnlohmann_json-develを、PostGISを使うだけの環境へ手動でそろえる必要はありません。なお、告知時点のPostGIS 3.7はRC版です。SFCGALの依存関係と提供版

パッケージに機能が含まれることと、接続先DBで拡張が有効になっていることも分けて考えます。PostGIS導入済みでSFCGALが未有効の検証DBなら、必要な権限を持つ接続でCREATE EXTENSION postgis_sfcgal;を実行するのが有効化の手順です。これはDBへ拡張を追加する操作なので、状態を調べるだけのSQLとは区別します。

ラスターの利用可否は、ビルドとDB設定の両方で確かめる

GDALドライバーがパッケージに含まれていても、PostGISから直ちに利用できるとは限りません。標準のPostGISではpostgis.gdal_enabled_driversがDISABLE_ALLに設定されており、DB側で許可するドライバーを制御します。GDALドライバーの有効化設定

postgis_rasterが有効な検証DBでは、現在の設定と利用可能なラスター形式を次のSQLで調べられます。これは状態を読む例で、設定の変更は行いません。

SQL
-- 接続中のDBで適用されるGDALドライバー設定を確認する。
SHOW postgis.gdal_enabled_drivers;

-- 現在利用できるラスター形式と読み書きの対応を調べる。
SELECT short_name, long_name, can_read, can_write
FROM ST_GDALDrivers()
ORDER BY short_name;

ST_GDALDrivers()の対象はラスター形式です。結果が空なら有効化設定を確認し、ベクター形式まで網羅する一覧とは扱わないようにします。また、ビルドに含まれないドライバーは、DBの設定を変えるだけでは追加できません。

AL2023で今回のパッケージを採用できるかは、必要な形式と演算が、この構成でそろうかで判断できます。対応形式を照合し、実際にDBが使うライブラリと設定を調べたうえで、代表的なデータの取り込みと演算を試す。この順に進めれば、提供再開を自分の処理で使えるかどうかへ結び付けられます。

出典

  • Title: Devrim GÜNDÜZ: PostGIS is back on Amazon Linux 2023 (with SFCGAL this time)
  • URL: https://postgr.es/p/9zE

Share

Related Articles

カテゴリやタグが近い記事を続けて読めるように並べています。