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

PolarDB:ST_Reclassify

最終更新日:Mar 28, 2026

ラスターオブジェクト内の画素値を、分類式に基づいて元の値から新しい値へ再分類します。

返されるラスターは、入力と同一の空間参照系および解像度を持ちます。出力バンド数は、reclassexpr パラメーターによって決定されます。

構文

raster ST_Reclassify(raster raster_obj,
                     cstring reclassexpr DEFAULT NULL,
                     cstring storageOption DEFAULT '')

パラメーター

パラメーター説明
raster_obj再分類対象のラスターオブジェクトです。
reclassexpr各バンドの分類ルールを定義する JSON 文字列配列です。
storageOption返されるラスターのストレージフォーマットを設定する JSON 文字列です。

reclassexpr

reclassexpr 配列の各要素は、1 つのバンドに対する再分類ルールを指定する JSON オブジェクトです。

パラメーターデフォルト説明
bandinteger再分類対象のバンドインデックスです。バンドインデックスは 0 から始まります。
remapobject画素値のマッピングルールです。詳細については、「remap」をご参照ください。
nodatabooleanfalse出力において nodata ピクセルを nodata として扱うかどうかを指定します。true の場合、nodata 値を持つピクセルは引き続き nodata として処理されます。false の場合、nodata でない値は通常の数値として計算されます。
nodataValuefloat80出力に割り当てる nodata 値です。

remap

remap オブジェクトは、元の画素値の範囲を新しい画素値にマッピングします。各キーと値のペアが 1 つのマッピングルールを定義します。

キーの形式 — キーは、区間表記法を用いて入力画素値の範囲を指定します:

記号意味
(より大きい(左境界が開いている)
)より小さい(右境界が開いている)
[以上(左境界が閉じている)
]以下(右境界が閉じている)

デフォルトの境界タイプは (](左境界が開き、右境界が閉じている)です。

キー内の境界値はカンマで区切ります。たとえば、(0,100,200] は 2 つの区間:(0, 100] および (100, 200] を定義します。

値の形式 — 値は、カンマで区切られた出力画素値を指定します。

サポートされるマッピング手法は以下の 3 種類です:

手法説明
範囲→範囲入力と出力の値の数が同じです。各入力値は対応する出力値に直接マッピングされます。"300,400,500":"80,90,100"
範囲→値入力の値の数は出力より 1 つ多いです。連続する入力値の間の各区間が、1 つの出力値にマッピングされます。"(300,400,500]":"80,90"
値→値入力と出力の値の数はそれぞれ 1 つです。単一の画素値が単一の新しい値にマッピングされます。"10":"1"

制約事項:

  • 定義されたすべての範囲外の画素は、nodata として扱われます。

  • 範囲は重複してはなりません(1 つの画素値が複数の範囲に属してはいけません)。

remap の使用例

例 1 — 単一バンド、範囲→値マッピング

バンド 0 を再分類します:

  • (0, 100] → 20

  • (100, 200] → 50

  • その他のすべての値 → nodata

[
  {
    "band": 0,
    "remap": {
      "(0,100,200]": "20,50"
    }
  }
]

例 2 — 複数の範囲

(200, 300] および定義済み範囲外のギャップに該当する画素は、nodata として設定されます。

[
  {
    "band": 0,
    "remap": {
      "(0,100,200]": "20,50",
      "(300,400,500]": "80,90,100"
    }
  }
]

例 3 — マルチバンドおよび nodata 設定

バンド 0:

  • (0, 100] → 20

  • (100, 200] → 50

  • その他のすべての値 → 999(nodata として設定)

バンド 1:

  • (400, 600] → 20 から 90 への線形補間

  • (600, 800] → 90 から 130 への線形補間

  • その他のすべての値 → 0

[
  {
    "band": 0,
    "remap": { "(0,100,200]": "20,50" },
    "nodata": true,
    "nodataValue": 999
  },
  {
    "band": 1,
    "remap": { "(400,600,800]": "20,90,130" },
    "nodata": false,
    "nodataValue": 0
  }
]

storageOption

パラメーターデフォルト説明
chunkingboolean入力と同じラスターをチャンクとして保存するかどうかを指定します。
chunkdimstring入力と同じチャンクのディメンションです。chunkingtrue の場合にのみ有効です。
chunktablestring''チャンクテーブルの名前です。空欄のまま('')にした場合、ランダムな名前の一時チャンクテーブルが作成され、現在のセッションでのみ有効です。セッション終了後もアクセス可能なラスターオブジェクトを保持するには、名前を指定してください。
compressionstring入力と同じ圧縮アルゴリズムです。有効な値: nonejpegzlibpnglzolz4
qualityinteger入力と同じ圧縮品質です。jpeg 圧縮の場合にのみ有効です。
interleavingstring入力と同じインタリーブ方式です。有効な値: bip(バンド・インタリーブド・バイ・ピクセル:BIP)、bil(バンド・インタリーブド・バイ・ライン:BIL)、bsq(バンド・シーケンシャル:BSQ)。
endianstring入力と同じバイトオーダーです。有効な値: NDR(リトルエンディアン)、XDR(ビッグエンディアン)。
celltypestring入力と同じ出力ラスターの画素型です。

使用例

-- 結果を格納する永続テーブルを作成します。
CREATE TABLE rast_reclassify_result(id integer, rast raster);

-- 結果を格納する一時テーブルを作成します。
CREATE TEMP TABLE rast_reclassify_result_temp(id integer, rast raster);

-- バンド 0 を再分類し、結果を一時テーブルに格納します。
INSERT INTO rast_reclassify_result_temp(id, rast)
SELECT 1, ST_Reclassify(rast, '[{"band":0,"remap":{"(0,100,200]":"20,50"}}]')
FROM reclass_table;