名前

ST_InvDistWeight4ma — 近隣のピクセル値の内挿補間を行うラスター処理関数です。

概要

double precision ST_InvDistWeight4ma(double precision[][][] value, integer[][] pos, text[] VARIADIC userargs);

説明

近隣のピクセル値の逆距離加重法 (IDW=Inverse Distance Weighted method) による内挿補間を行います。

userargs に渡される、二つの任意引数があります。一つ目は、逆距離加重法の式に与える 0から 1の間を取る冪数 (下の式の変数 k) です。指定しない場合には、デフォルトは 1とします。二つ目は、対象ピクセルの値が近隣セルからの補間値に含まれている場合にのみ適用される重み率です。指定せず、かつ対象ピクセルが値を持っている場合には、そのピクセルの持つ値が返されます。

距離の逆数を重みとした基本の見積もりは次の通りです:

z = (Σᵢ zᵢ / dᵢᵏ) / (Σᵢ 1 / dᵢᵏ)

zᵢ は隣接ピクセル値、dᵢ は見積もり対象のピクセルからの距離、k は実値のべき乗計数で、0から 1が入ります。

[注記]

この関数はST_MapAlgebra (callback function version)へのコールバック引数として使用する専用コールバック関数です。

Availability: 2.1.0

コード
WITH foo AS (
    SELECT ST_SetValues(ST_AddBand(ST_MakeEmptyRaster(3, 3, 0, 0, 1, -1, 0, 0, 0), 1, '32BF', NULL::double precision, -9999),
        1, 1, 1, ARRAY[
            [10, 10, 10],
            [10, NULL, 20],
            [20, 20, 20]
        ]::double precision[][]
    ) AS rast
)
SELECT ST_Value(
    ST_MapAlgebra(
        rast,
        1,
        'ST_InvDistWeight4ma(double precision[][][],integer[][],text[])'::regprocedure,
        '32BF',
        'FIRST',
        NULL,
        1,
        1
    ),
    2, 2
) AS interpolated_value
FROM foo;
出力
15