すべてのプロダクト
Search
ドキュメントセンター

PolarDB:GanosBaseを使用してラスタピクセルの空間範囲を取得する

最終更新日:Apr 10, 2025

ラスタデータは空間情報を含み、各ピクセルは空間属性と数値属性の両方を保持する。 これらの属性にアクセスすることは、ベクトルラスタのマルチモーダル解析にとって非常に重要です。

新しい機能

GanosBase 4.3は、ラスタピクセルを空間ジオメトリオブジェクトと数値に変換するための一連の関数を導入しています。

関数

説明

参考情報

ST_PixelAsPolygon

指定したピクセルの空間範囲を表す長方形型のジオメトリオブジェクトを返します。

ST_PixelAsPolygon

ST_PixelAsPoint

指定したピクセルの空間範囲を表すポイント型のジオメトリオブジェクトを返します。 ポイントは、ジオメトリオブジェクトの左上隅または重心にすることができます。

ST_PixelAsPoint

ST_PixelAsCentroid

指定したピクセルの空間範囲を表す重心型のジオメトリオブジェクトを返します。

ST_PixelAsPoint

ST_PixelAsPolygons

ラスターオブジェクト内のすべてのピクセルの空間情報と属性情報を返します。 返される結果には、行番号、列番号、バンド番号、ピクセル値、およびラスターオブジェクトのピクセルの対応する空間ポリゴン範囲が含まれます。

ST_PixelAsPolygons

ST_PixelAsPoints

ラスターオブジェクト内のすべてのピクセルの空間情報と属性情報を返します。 返される結果には、行番号、列番号、バンド番号、ピクセル値、およびピクセルの対応する空間ポイント情報が含まれます。 空間点は、オブジェクトの左上隅または重心とすることができる。

ST_PixelAsPoints

ST_PixelAsCentroids

ラスターオブジェクト内のすべてのピクセルの空間情報と属性情報を返します。 返される結果には、行番号、列番号、バンド番号、ピクセル値、およびピクセルの空間範囲の重心に関する情報が含まれます。

ST_PixelAsCentroids

ベストプラクティス

中国の気象データと温度データ (ラスター) とデバイスの空間分布 (ベクトル) を考えると、の統合分析機能を活用できます。

GanosBaseは、指定された範囲内の温度を検出するデバイスを識別するためのベクトルデータとラスタデータの両方です。 デジタル標高モデル (DEM) データに基づいて、指定した標高範囲内にあるデバイスを識別することもできます。 この例では、次の種類のデータが使用されています。

  • NetCDFラスタファイル内の中国の温度データ。

  • shapefile形式の中国のデバイスの位置情報。

説明

この例で使用される空間参照システムはWGS84である。

データのインポート

温度データのインポート

-- Create the GANOS_RASTER extension
CREATE EXTENSION GANOS_RASTER CASCADE;

-- Create the temperature table
CREATE TABLE temperature(id integer, rast raster);

-- Import the NetCDF temperature data. Set spatial reference to 4326
INSERT INTO temperature 
VALUES (1, ST_SetSrid(ST_ImportFrom('chunk_table', 'OSS://<id>:<key>@<endpoint>/bucket/path/file.nc'), 4326));

データが正常にインポートされた後、次のSQL文を実行してメタデータ情報を照会できます。

-- Query the metadata information
SELECT st_metadata(rast) FROM temperature WHERE id =1;

デバイスデータのインポート

-- Create the ganos_fdw extension
CREATE EXTENSION ganos_fdw;

-- Create the fdw table for Shapefile
SELECT ST_RegForeignTables('OSS://<id>:<key>@<endpoint>/bucket/path/file.shp') );

-- Import data into the database and create a spatial index
CREATE TABLE devices AS SELECT * from <foreign_table_name> ;
CREATE INDEX idx_devices_geom ON devices USING Gist(geom);
説明

上記の方法では、fdwを使用してOSSからデバイスデータをデータベースにインポートします。 その他のデータインポート方法の詳細については、「GanosGanosBaseへのベクターおよびラスターデータのインポートのベストプラクティス」「」をご参照ください。

温度範囲を抽出する

この例では、主に、ラスタベースの温度データを分析と計算のためにベクトル空間範囲に変換する方法を示します。 次のSQL文を実行して、温度条件を満たすピクセルの空間範囲をマージし、全体の空間範囲を決定します。

-- Merge the pixels with temperatures greater than 27°C and less than 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 < 280;

ただし、高解像度のラスタデータを処理する場合、すべてのピクセルが処理されるため、このSQL文のパフォーマンスは低くなる可能性があります。 パフォーマンスを向上させるために、ST_Reclassify関数を使用して無効なデータをnodata値として処理し、処理するデータ量を減らします。 構文の詳細については、「ST_Reclassify 」をご参照ください。

-- Perform reclassification
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 ),

-- Return spatial range
tmp2 AS (
  SELECT (ST_PixelAsPolygons(rast)).*
FROM tmp)
SELECT ST_Union(geom) 
FROM tmp2;

空間オーバーレイ分析

返されたベクトル空間範囲とデバイステーブルの間で空間包含解析を実行し、指定された条件を満たすデバイスを識別します。

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(*) -- You can select any column. The count column is used as an example
FROM devices, tmp2
WHERE ST_Contains(tmp2.geom, devices.geom);

サンプル結果:

 count 
-------
  1879

結論

GanosBaseは、時空間ラスタデータのストレージ、コンピューティング、および分析機能を提供し、複雑なベクトルラスタマルチモーダル分析をいくつかのGeoSQLステートメントに簡素化します。 時空間データは、従来のGISソフトウェアの代わりにデータベースで処理できます。 これにより、プログラムロジックが簡素化され、開発の複雑さとメンテナンスコストが削減され、クラウド上の高度なGIS機能を業界の専門家に提供できます。