このトピックでは、ST_MapAlgebra関数について説明します。 この関数は、代数計算言語に準拠した代数式を使用して、複数の元のラスターオブジェクトを1つのラスターオブジェクトに変換します。
構文
ラスターST_MapAlgebra (ラスター [] ラスター、
文字列algebraExprデフォルトNULL,
cstring storagesoption default '') パラメーター
| パラメーター | 説明 |
| ラスター | 変換する元のラスタオブジェクト。 |
| algebraExpr | 使用する代数式を指定するJSON文字列。 |
| storageOption | 新しいラスターオブジェクトを格納する方法を指定するJSON文字列。 |
説明 システムは、元のラスタオブジェクトの長さおよび幅が同じ測定単位内にあることだけを必要とする。 それらの空間参照システムまたは解像度はチェックされません。 元のラスターオブジェクトの長さと幅が異なる測定単位である場合、ST_Transform、ST_Resize、およびST_Clip関数を使用して、同じ単位に変換できます。
algebraExprパラメーターで指定されたJSON文字列の各子JSONオブジェクトは、代数式に指定されたフィールドを表します。 次の表に、これらのフィールドを示します。
| フィールド | 説明 | データ型 | デフォルト値 | 設定ノート |
| algebraExpr | 使用する代数式。 | String | N/A | N/A |
| ノデータ | nodata値が有効かどうかを指定します。 | Boolean | false |
|
| 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 |
| 関数の操作 |
| 関数に対して指定できる操作は1つだけです。 |
| 統計関数 |
| 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 | チャンクテーブルの名前です。 | String | null 文字列 (") | デフォルトでは、データを格納するためにランダムな名前の一時チャンクテーブルが生成されます。 この一時チャンクテーブルは、現在のセッションでのみ有効です。 新しいラスターオブジェクトを永続的に保存するには、chunktableフィールドに永続チャンクテーブルを作成するように指定する必要があります。 |
| compression | 画像圧縮に使用される形式。 | String | 元のラスターオブジェクトと同じ | None、JPEG、Zlib、PNG、LZO、LZ4の6つの圧縮形式がサポートされています。 |
| 品質 | 新しいラスターオブジェクトの画質。 | Integer | 元のラスターオブジェクトと同じ | このフィールドはJPEG形式でのみ有効です。 |
| interleaving | 新しいラスタオブジェクトのインターリーブタイプ。 | String | 元のラスターオブジェクトと同じ | 有効な値:
|
| エンディアン | 新しいラスタオブジェクトのエンディアン形式。 | String | 元のラスターオブジェクトと同じ | 有効な値:
|
例
− 永久チャンクテーブルを作成する。
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"}'
);