ラスターデータの各ピクセルには、空間位置と数値(画素値)の両方が含まれます。GanosBase 4.3 では、ピクセルをベクター幾何オブジェクトに変換する 6 つの関数が追加され、SQL 内で直接ベクター・ラスター分析を実行できるようになりました。
新規関数
GanosBase 4.3 では、ピクセルから幾何オブジェクトへの変換を行う 6 つの関数が導入されています。単一のピクセルか全ピクセルか、およびポリゴン・ポイント・重心のいずれを出力するかに応じて、適切な関数を選択してください。
| 機能 | 戻り値 | 使用するタイミング |
|---|---|---|
| ST_PixelAsPolygon | 単一ピクセルの矩形ポリゴン | 特定の 1 ピクセルの空間範囲を確認する場合 |
| ST_PixelAsPoint | 単一ピクセルのポイント(左上隅または重心) | 特定の 1 ピクセルに対するポイント・リファレンスを取得する場合 |
| 単一ピクセルの重心ポイント | 特定の 1 ピクセルの中心点を取得する場合 | |
| ST_PixelAsPolygons | すべてのピクセルについて、行、列、バンド、画素値、およびポリゴン | すべてのピクセルにわたる一括空間分析を行う場合 |
| ST_PixelAsPoints | すべてのピクセルについて、行、列、バンド、画素値、およびポイント | すべてのピクセルのポイント表現を取得する場合 |
| ST_PixelAsCentroids | すべてのピクセルについて、行、列、バンド、画素値、および重心 | すべてのピクセルの重心ポイントを取得する場合 |
ベストプラクティス
この例では、中国向けの気象温度データ(ラスター)とデバイス位置データ(ベクター)を用いて、GanosBase の統合ベクター・ラスター分析機能を紹介します。ワークフローでは、気温が 27°C ~ 28°C のエリアに所在するデバイスを特定します。同様のアプローチを、デジタル標高モデル(DEM)データを用いて指定標高範囲内のデバイスを特定する場合にも適用できます。
入力データ:
NetCDF ラスターファイル形式の中国向け温度データ(空間参照系:WGS84、EPSG:4326)
シェープファイル形式の中国向けデバイス位置データ
データのインポート
温度データのインポート
-- GANOS_RASTER 拡張の作成
CREATE EXTENSION GANOS_RASTER CASCADE;
-- 温度テーブルの作成
CREATE TABLE temperature(id integer, rast raster);
-- NetCDF 温度データのインポート。空間参照系を 4326 に設定
INSERT INTO temperature
VALUES (1, ST_SetSrid(ST_ImportFrom('chunk_table', 'OSS://<id>:<key>@<endpoint>/bucket/path/file.nc'), 4326));インポート完了後、メタデータを確認します。
-- メタデータ情報の照会
SELECT st_metadata(rast) FROM temperature WHERE id =1;デバイスデータのインポート
-- ganos_fdw 拡張の作成
CREATE EXTENSION ganos_fdw;
-- シェープファイル用の FDW テーブルの作成
SELECT ST_RegForeignTables('OSS://<id>:<key>@<endpoint>/bucket/path/file.shp') );
-- データをデータベースにインポートし、空間インデックスを作成
CREATE TABLE devices AS SELECT * from <foreign_table_name> ;
CREATE INDEX idx_devices_geom ON devices USING Gist(geom);この例では、外部データラッパー(FDW)を用いて OSS からデバイスデータをインポートしています。その他のインポート方法については、「」をご参照ください。
温度範囲の抽出
以下のクエリは、気温が 27°C ~ 28°C のすべてのピクセルをポリゴンに変換し、ST_Union を用いて単一のジオメトリにマージします。
-- 気温が 27°C より大きく 28°C 未満のピクセルをマージ
WITH tmp AS (
SELECT (ST_PixelAsPolygons(rast)).*
FROM temperature
WHERE id = 1)
SELECT ST_Union(geom)
FROM tmp
WHERE value >= 270 AND value < 279;パフォーマンス最適化
高解像度ラスターデータの場合、ST_PixelAsPolygons はすべてのピクセルを処理するため、ピクセル数が増えるほどクエリ実行速度が低下します。ST_PixelAsPolygons の呼び出し前に、ST_Reclassify を使用して範囲外のピクセルを nodata として再分類することで、処理対象データ量を削減し、クエリ実行速度を大幅に向上させることができます。
-- 再分類の実行
With tmp As(
SELECT ST_Reclassify(rast,
'[{"band":0,"remap":{"(-100,270,280, 1000]":"0,1,0"}, "nodata":false, "nodataValue":0}]',
'{"chunktable":"reclass_chunk_table"}') AS rast
from temperature
where id =1 ),
-- 空間範囲の返却
tmp2 AS (
SELECT (ST_PixelAsPolygons(rast)).*
FROM tmp)
SELECT ST_Union(geom)
FROM tmp2;空間オーバーレイ分析の実行
ST_Contains を使用して、マージされた温度ポリゴン内に位置するデバイスを特定します。
WITH tmp AS (
SELECT (ST_PixelAsPolygons(rast)).*
FROM temperature WHERE id = 1),
tmp2 AS (
SELECT ST_Union(geom) as geom
FROM tmp
WHERE value >= 270 AND value < 279)
SELECT count(*) -- 任意の列を選択可能です。ここでは例として count 列を使用
FROM devices, tmp2
WHERE ST_Contains(tmp2.geom, devices.geom);実行結果の例:
count
-------
1879まとめ
GanosBase は、時空間ラスターデータのストレージ、計算、分析機能を提供します。複雑なベクター・ラスターのマルチモーダル分析も、わずか数行の GeoSQL ステートメントで表現可能であり、時空間データを従来の GIS ソフトウェアではなく、データベース内で直接処理できます。これにより、プログラムロジックが簡素化され、開発の複雑さとメンテナンスコストが低減され、業界専門家がクラウド上で高度な GIS 機能を活用できるようになります。