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

PolarDB:ST_MapAlgebra

最終更新日:Jun 21, 2024

このトピックでは、ST_MapAlgebra関数について説明します。 この関数は、代数計算言語に準拠した代数式を使用して、複数の元のラスターオブジェクトを1つのラスターオブジェクトに変換します。

構文

ラスターST_MapAlgebra (ラスター [] ラスター、
      文字列algebraExprデフォルトNULL,
     cstring storagesoption default '') 

パラメーター

パラメーター説明
ラスター変換する元のラスタオブジェクト。
algebraExpr使用する代数式を指定するJSON文字列。
storageOption新しいラスターオブジェクトを格納する方法を指定するJSON文字列。
説明 システムは、元のラスタオブジェクトの長さおよび幅が同じ測定単位内にあることだけを必要とする。 それらの空間参照システムまたは解像度はチェックされません。 元のラスターオブジェクトの長さと幅が異なる測定単位である場合、ST_TransformST_Resize、およびST_Clip関数を使用して、同じ単位に変換できます。

algebraExprパラメーターで指定されたJSON文字列の各子JSONオブジェクトは、代数式に指定されたフィールドを表します。 次の表に、これらのフィールドを示します。

フィールド説明データ型デフォルト値設定ノート
algebraExpr使用する代数式。StringN/AN/A
ノデータnodata値が有効かどうかを指定します。Booleanfalse
  • このフィールドをtrueに設定すると、nodata値は有効になり、nodata値を持つピクセルは変換されません。
  • このフィールドをfalseに設定すると、nodata値は無効になり、nodata値を持つピクセルは変換されます。
nodataValue新しいラスタオブジェクトに返されるnodata値。float80N/A

algebraExprフィールドで指定された代数式には、次のキーワードが含まれます。

  • [r, b]
    • r: rastersパラメーターで指定された配列内の新しいラスターオブジェクトのIDを示します。 フォーマット: 0-n-1。
    • b: 新しいラスターオブジェクトのバンド番号を示します。 フォーマット: 0-n-1。
  • x

    指定されたピクセルが存在する列のシーケンス番号。

  • y

    指定されたピクセルが存在する行のシーケンス番号。

次の表は、代数式に組み込むことができる操作の一覧です。

データ型オペレータか機能補足
演算子
  • +
  • -
  • *
  • /
  • % (残り)
  • **(パワー)
N/A
ビットごとの操作
  • <<
  • >>
  • &
  • |
  • ^
N/A
論理操作
  • <
  • >
  • ==
  • !=
  • <=
  • >=
  • &&
  • ||
  • !
N/A
関数の操作
  • abs
  • sqrt
  • exp
  • log
  • ln
  • sin
  • cos
  • tan
  • sinh
  • cosh
  • tanh
  • arcsin
  • arccos
  • arctan
  • ceil
  • floor
  • round
関数に対して指定できる操作は1つだけです。
統計関数
  • min
  • max
  • sum
  • 平均
  • 過半数
  • 少数派
  • std
  • 中央値
  • range
  • 多様性
2つ以上の統計関数を指定する必要があります。
  • 例 1

    元のラスターオブジェクトを、バンドが1つしかない新しいラスターオブジェクトに変換します。 返される結果は、raster[0]band[0] + raster[1]band[0] * raster[1]band[1] です。

    [
        {
            "expr":"([0,0] + [1,0] * [1,1]) " 、
            "nodata": true、
            "nodataValue":999
        }
    ]
  • 例 2

    3つのバンドの分散を計算します。

    [
        {
            "expr":"(std([0,0] 、[0,1] 、[0,2]))" 、
            "nodata": true、
            "nodataValue":999
        }
    ]
  • 例 3

    元のラスターオブジェクトを、3つのバンドを持つ新しいラスターオブジェクトに変換します。 各バンドは、一意の式を使用して変換されます。

    [
        {
            "expr":"(min([0,0] 、[0,1] 、[0,2]))" 、
            "nodata": true、
            "nodataValue":999
        },
        {
            "expr":"(max([0,0] 、[0,1] 、[0,2]))" 、
            "nodata": true、
            "nodataValue":999
        },
        {
            "expr":"(mean([0,0],[0,1],[0,2]))",
            "nodata": true、
            "nodataValue":999
        }
    ]

次の表に、storageOptionパラメーターのフィールドを示します。

フィールド説明データ型デフォルト値設定ノート
チャンキング新しいラスターオブジェクトをチャンクとして保存するかどうかを指定します。Boolean元のラスターオブジェクトと同じN/A
chunkdim新しいラスタオブジェクトをチャンクとして格納するために使用されるディメンション。String元のラスターオブジェクトと同じこのフィールドは、チャンキングフィールドがtrueに設定されている場合にのみ有効です。
chunktableチャンクテーブルの名前です。Stringnull 文字列 (")デフォルトでは、データを格納するためにランダムな名前の一時チャンクテーブルが生成されます。 この一時チャンクテーブルは、現在のセッションでのみ有効です。 新しいラスターオブジェクトを永続的に保存するには、chunktableフィールドに永続チャンクテーブルを作成するように指定する必要があります。
compression画像圧縮に使用される形式。String元のラスターオブジェクトと同じNone、JPEG、Zlib、PNG、LZO、LZ4の6つの圧縮形式がサポートされています。
品質新しいラスターオブジェクトの画質。Integer元のラスターオブジェクトと同じこのフィールドはJPEG形式でのみ有効です。
interleaving新しいラスタオブジェクトのインターリーブタイプ。String元のラスターオブジェクトと同じ有効な値:
  • bip : ピクセルでインターリーブされたバンド (BIP)
  • bil : ラインでインターリーブされたバンド (BIL)
  • bsq : バンドシーケンシャル (BSQ)
エンディアン新しいラスタオブジェクトのエンディアン形式。String元のラスターオブジェクトと同じ有効な値:
  • NDR: リトルエンディアン形式を指定します。
  • XDR: ビッグエンディアン形式を指定します。

− 永久チャンクテーブルを作成する。
CREATE TABLE rast_mapalgebra_result(id integer, rast raster);

-- データをチャンクテーブルに挿入します。
fooとAS (
  SELECT 1 AS rid、rast AS rast from t1 WHERE id = 1
ユニオンすべて
  SELECT 2 AS rid、rast AS rast from t2 WHERE id = 2
)
rast_mapalgebra_resultに挿入する
SELECT 1, ST_MapAlgebra ()
    アレイ (SELECT rast foo ORDER BY ridから) 、
    '[{"expr":"([0,0] + 0.5 * [1,0] - ([1,1]) 」、" nodata ": true、" nodataValue ":999}]' 、
    '{"chunktable":"algebra_rbt"}'
);