GanosBase Raster は、PolarDB for PostgreSQL 向けの時空間拡張機能であり、衛星画像や航空写真、スキャン済み地図、デジタル画像など、さまざまなラスターデータを格納・管理します。リモートセンシング、写真測量、テーママッピングから得られるラスターデータをサポートし、OGC(Open Geospatial Consortium)準拠の Web マップサービス(WMS)や Web マップタイルサービス(WMTS)としてラスターデータを公開するための GeoServer プラグインも統合されています。
GanosBase Raster は、単一のクエリ内でラスターデータと関係データを組み合わせた空間解析ワークロードに最適です。ただし、生の画像バイトを高スループットで取得することには最適化されていません。その用途には、専用のラスターサービングソリューションをご利用ください。
基本概念
ラスターデータモデル
ラスターとは、行と列に整列されたセル(画素)の行列です。各セルには数値が格納され、ラスターは単なる画像ではなく、地理参照された数値行列であるという点が本質的です。このため、ラスターデータに対して統計処理や代数演算を、他の関係データとともにデータベース内ですべて実行できます。
GanosBase Raster では、ラスターデータを以下の要素に分割して管理します:
| 要素 | 説明 |
|---|---|
| ラスター | リモートセンシング画像や TIFF ファイルなどのラスターデータセット。各ラスターは、単一のデータベースレコードとして格納されます。 |
| タイル | ラスターオブジェクトの基本ストレージ単位。デフォルトでは 256 × 256 ピクセルです。 |
| バンド | ラスターデータセット内の単一の 2 次元レイヤー。各バンドは複数のタイルで構成され、それぞれ独自の座標番号を持ちます。 |
| セル | タイル内の単一ピクセル。サポートされるデータの型: byte、short、int、または double。 |
| ピラミッド | ラスターの解像度を段階的に低下させた一連のバージョン。レベル 0 は生データです。 |
| メタデータ | ラスターごとのメタデータ(空間範囲、投影法、ピクセルの型など)。 |

データベース内では、各ラスター画像は単一のラスターオブジェクトとして格納されます。このオブジェクトは論理的にバンドに分割され、物理的にはタイル単位で格納・管理され、メタデータ(空間範囲、データの型、投影情報、座標番号など)によって記述されます。ラスターがピラミッド構造を使用している場合、各バンドには個別のピラミッドが存在します。
ストレージモデル
GanosBase Raster は、ラスターメタデータをデータベース内に保持しつつ、ラスター属性データは Object Storage Service(OSS)上に格納します。この分離により、大規模なラスターデータセットを低コストで効率的に管理できます。各ラスターレコードは最大 1 TB まで対応します。
空間参照系
空間参照系(SRS)は、ラスターが地球上のどの位置に対応するかを定義します。GanosBase では、空間参照識別子(SRID)を用いて、各ラスターオブジェクトをその SRS 定義に紐付けます。
詳細については、「空間参照」をご参照ください。
raster_columns ビュー
raster_columns ビューは、現在のデータベースに存在するすべてのラスターカラムを一覧表示します。
| 列 | 型 | 説明 |
|---|---|---|
r_table_catalog | varchar(256) | テーブルを含むデータベース名。通常は postgres に固定されます。 |
r_table_schema | varchar(256) | ラスターテーブルを含むスキーマ名。 |
r_table_name | varchar(256) | ラスターテーブル名。 |
r_raster_column | varchar(256) | ラスターカラム名。 |
現在のデータベース内のすべてのラスターカラムを照会するには、次のコマンドを実行します:
SELECT * FROM raster_columns;インデックス
空間インデックスは、空間データを検索ツリー構造で整理することで、全件走査を回避し、高速な探索を可能にします。
GanosBase Raster では、以下の 2 種類のインデックスをサポートしています:
| インデックス | 推奨用途 | 特徴 |
|---|---|---|
| B ツリーインデックス | ラスターファイル名によるクエリ | 最も一般的に使用されるインデックスタイプ。幅広いクエリ操作の高速化を実現します。 |
| GIN インデックス(一般化逆インデックス) | 全文検索;指定キーワードを含むタプルの検出 | 静的データに対する検索が高速;GiST インデックスと比較して更新速度はやや遅いです。 |
適用範囲/利用シーン/ユースケース
GanosBase Raster は、気象、環境モニタリング、地質探査、天然資源管理、国防、緊急対応、通信、メディア、交通、都市計画、国土安全保障など、多様な分野におけるラスターデータの格納および分析を支援します。
スマート農業
大量のリモートセンシング衛星データを格納・取得します。テーママップおよび画像データを横断したバンド計算および空間統計を活用し、農業生産分析を支援します。データビジュアライゼーション(大画面表示)ツール DataV と併用することで、結果を地図および統計グラフで可視化できます。

気象・水文予報
HDF、NetCDF、GRIB などの標準フォーマットでデータをインポート・クエリします。空間補間および等高線/等値面抽出を適用し、災害防止に不可欠な気象・水文情報を導出します。
農業金融・保険
バンド計算および分類を用いて、作物の種類、カバー率、成長状況について、時間軸および空間軸にわたる迅速な統計分析を実行します。リスク管理モデルと組み合わせることで、農家の自己申告、農地譲渡記録、気候データ、地理的位置情報に基づき、収穫量および評価額を推定します。この手法により、農家への合理的な与信限度額および返済サイクルの決定が可能になります。
主な機能
マルチフォーマット対応: TIFF、IMG、HDF、NetCDF、GRIB の読み書きをサポートします。
ラスタークエリ: 基本属性、バンド統計、画素値統計の照会;複数の方法による画素行列の取得が可能です。
ラスターオペレーション: 投影変換、クロップ、バンド操作、モザイク、カラーバランス調整。
動的タイリング: 動的なラスタータイリングによるオンデマンド可視化。
統計・代数演算子: 画素単位およびバンド単位の計算、専用のカラーバランス調整アルゴリズム、大規模データセット向けの概要マップ高速レンダリング。
オブジェクト指向ストレージ: データベースレコード単位でラスターを格納(最大 1 TB)。タイル単位での直接操作は行わず、メタデータ整合性を確保するとともに、時系列データとの密接な相関を可能にします。
クイックスタート
本セクションでは、GanosBase Raster 拡張のインストール、OSS からのラスターデータインポート、クエリ実行、ピラミッド構築、結果のエクスポートまでの手順を説明します。
前提条件
開始する前に、以下の準備が完了していることを確認してください:
PolarDB for PostgreSQL クラスター
ラスターファイルを格納する OSS バケット
OSS のアクセスキー ID およびアクセスキー シークレット
拡張のインストール
スキーマを指定せずに ganos_raster 拡張をインストールします:
CREATE EXTENSION ganos_raster CASCADE;権限関連の問題を回避するため、public スキーマにインストールします:
CREATE EXTENSION ganos_raster WITH SCHEMA public CASCADE;ラスターテーブルの作成
CREATE TABLE raster_table (id integer, rast raster);OSS からのラスターデータインポート
ST_ImportFrom を使用して、OSS からラスターファイルをロードします。<ak>、<ak_secret>、およびバケットパスを実際の値に置き換えてください:
INSERT INTO raster_table
VALUES (
1,
ST_ImportFrom(
'chunk_table',
'OSS://<ak>:<ak_secret>@oss-cn-internal.aliyuncs.com/bucket/data/image.tif'
)
);| プレースホルダー | 説明 | 例 |
|---|---|---|
<ak> | アクセスキー ID | LTAI5tXxx... |
<ak_secret> | アクセスキー シークレット | xXxXxXx... |
正しい OSS ドメイン名 を使用して OSS にアクセスします。パス形式の詳細については、「オブジェクトストレージサービスのパス」をご参照ください。
ラスター属性のクエリ
インポート済みラスターの高さと幅を取得します:
SELECT ST_Height(rast), ST_Width(rast)
FROM raster_table
WHERE id = 1;期待される出力:
-----------
1241
(1 rows)バンド 0 の統計情報を取得します:
SELECT ST_Statistics(rast, 0)
FROM raster_table
WHERE id = 1;期待される出力:
{"approximate":false,"min":8969.0,"max":12351.0,"mean":9407.330013839151,"std":193.4268180351078,"count":70091,"sum":659369168.0,"mode":9366.0,"median":9392.0}ピラミッドの構築
ピラミッドは、ラスターの解像度を事前に段階的に低下させることで、低解像度でのレンダリングを高速化します。ビューポートベースのクエリを実行する前に、ピラミッドを構築してください:
UPDATE raster_table
SET rast = ST_BuildPyramid(rast)
WHERE id = 1;期待される出力:UPDATE 1
バウンディングボックス上で 800 × 600 ピクセルのビューポートに最適なピラミッドレベルを検索します:
SELECT ST_BestPyramidLevel(
rast,
'((128.0, 30.0),(128.5, 30.5))', -- バウンディングボックス(世界座標)
800, -- ビューポートの幅(ピクセル単位)
600 -- ビューポートの高さ(ピクセル単位)
)
FROM raster_table
WHERE id = 10;期待される出力:3
クリップおよびエクスポート
バンド 0 において、バウンディングボックス内の画素行列をクエリします:
SELECT ST_Clip(rast, 0, '((128.980,30.0),(129.0,30.2))', 'World')
FROM raster_table
WHERE id = 1;ピラミッドレベル 2 におけるクリップ領域の画素座標範囲を取得します:
SELECT ST_ClipDimension(rast, 2, '((128.0, 30.0),(128.5, 30.5))')
FROM raster_table
WHERE id = 10;期待される出力:'((600, 720),(200, 300))'
ポリゴンジオメトリにクリップし、Cloud Optimized GeoTIFF(COG)形式でエクスポートします:
SELECT ST_ExportTo(
ST_ClipToRast(
rast,
ST_GeomFromText('POLYGON((128.0 30.0,129.0 30.0,129.0 31.0,128.0 31.0,128.0 30.0))', 4326),
0
),
'COG',
'OSS://<ak>:<ak_secret>@oss-cn.aliyuncs.com/mybucket/data/image_clip.tif'
);期待される出力:t(1 行)
拡張の削除
DROP EXTENSION ganos_raster CASCADE;