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

PolarDB:ST_MapAlgebra

最終更新日:Jul 01, 2024

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

構文

raster ST_MapAlgebra(raster[] rasters ,
      cstring algebraExpr  default NULL,
     cstring storageoption default '')

パラメーター

パラメーター

説明

rasters

変換する元のラスタオブジェクト。

algebraExpr

使用する代数式を指定するJSON文字列。

storageOption

新しいラスターオブジェクトを格納する方法を指定するJSON文字列。

説明

システムは、元のラスタオブジェクトの長さおよび幅が同じ測定単位内にあることだけを必要とする。 それらの空間参照システムまたは解像度はチェックされません。 元のラスターオブジェクトの長さと幅が異なる測定単位である場合、ST_TransformST_Resize、およびST_Clip関数を使用して、同じ単位に変換できます。

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

フィールド

説明

データ型

デフォルト値

設定ノート

algebraExpr

使用する代数式。

String

N/A

N/A

odata

nodata値が有効かどうかを指定します。

Boolean

false

  • このフィールドをtrueに設定すると、nodata値は有効になり、nodata値を持つピクセルは変換されません。

  • このフィールドをfalseに設定すると、nodata値は無効になり、nodata値を持つピクセルは変換されます。

nodataValue

新しいラスタオブジェクトに返されるnodata値。

float8

0

N/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パラメーターのフィールドを示します。

フィールド

説明

データ型

デフォルト値

設定ノート

chunking

新しいラスターオブジェクトをチャンクとして保存するかどうかを指定します。

Boolean

Same as the original raster object

N/A

chunkdim

新しいラスタオブジェクトをチャンクとして格納するために使用されるディメンション。

String

Same as the original raster object

このフィールドは、チャンキングフィールドがtrueに設定されている場合にのみ有効です。

chunktable

チャンクテーブルの名前です。

String

Null string ('')

デフォルトでは、データを格納するためにランダムな名前の一時チャンクテーブルが生成されます。 この一時チャンクテーブルは、現在のセッションでのみ有効です。 新しいラスターオブジェクトを永続的に保存するには、chunktableフィールドに永続チャンクテーブルを作成するように指定する必要があります。

compression

画像圧縮に使用される形式。

String

Same as the original raster object

None、JPEG、Zlib、PNG、LZO、LZ4の6つの圧縮形式がサポートされています。

quality

新しいラスターオブジェクトの画質。

Integer

Same as the original raster object

このフィールドはJPEG形式でのみ有効です。

interleaving

新しいラスタオブジェクトのインターリーブタイプ。

String

Same as the original raster object

有効な値:

  • bip : ピクセルでインターリーブされたバンド (BIP)

  • bil : ラインでインターリーブされたバンド (BIL)

  • bsq : バンドシーケンシャル (BSQ)

endian

新しいラスタオブジェクトのエンディアン形式。

String

Same as the original raster object

有効な値:

  • NDR: リトルエンディアン形式を指定します。

  • XDR: ビッグエンディアン形式を指定します。

-- Create a permanent chunk table.
CREATE TABLE rast_mapalgebra_result(id integer, rast raster);

-- Insert data into a chunk table.
WITH foo AS (
  SELECT 1 AS rid, rast AS rast from t1 WHERE id = 1
UNION ALL
  SELECT 2 AS rid, rast AS rast from t2 WHERE id = 2
)
INSERT INTO rast_mapalgebra_result
SELECT 1, ST_MapAlgebra(
    ARRAY(SELECT rast FROM foo ORDER BY rid),
    '[{"expr":"([0,0] + 0.5 * [1,0] - ([1,1])","nodata": true, "nodataValue":999}]',
    '{"chunktable":"algebra_rbt"}'
);