名前

ST_Neighborhood — 与えられたバンドの columnX, columnY か、ラスターと同じ空間参照系のジオメトリーポイントで指定されたピクセルの周囲にある、NODATAでない 2次元倍精度浮動小数点数配列を返します。

概要

double precision[][] ST_Neighborhood(raster rast, integer bandnum, integer columnX, integer rowY, integer distanceX, integer distanceY, boolean exclude_nodata_value=true);

double precision[][] ST_Neighborhood(raster rast, integer columnX, integer rowY, integer distanceX, integer distanceY, boolean exclude_nodata_value=true);

double precision[][] ST_Neighborhood(raster rast, integer bandnum, geometry pt, integer distanceX, integer distanceY, boolean exclude_nodata_value=true);

double precision[][] ST_Neighborhood(raster rast, geometry pt, integer distanceX, integer distanceY, boolean exclude_nodata_value=true);

説明

与えられたバンドの columnX, columnY か、ラスターと同じ空間参照系のジオメトリーポイントで指定されたピクセルの周囲にある、NODATAでない 2次元倍精度浮動小数点数配列を返します。distanceXdistanceY引数は、たとえば、対象ピクセルから X 軸に沿って 3ピクセルとして Y 軸に沿って 2ピクセルというふうに、指定したピクセルの周囲のピクセル数を、それぞれ X 方向と Y 方向に定義します。2次元配列の中心の値は columnX, columnY またはジオメトリーポイントで指定したピクセルの値です。

バンド番号は 1始まりで、bandnumが指定されていない場合には、1番と仮定します。exclude_nodata_valueが FALSE に設定された場合には、NODATAピクセルを含む全てのピクセルがインタセクトするかが考慮され、値を返します。exclude_nodata_valueを渡さない場合には、ラスターのメタデータから読みます。

[注記]

返される 2次元配列の各軸の要素数は 2 * (distanceX|distanceY) + 1です。distanceXdistanceYを 1にすると、3x3の配列が返ります。

[注記]

2次元配列の出力は ST_Min4ma, ST_Sum4ma, ST_Mean4ma といったあらゆるラスター処理関数に渡すことができます。

Availability: 2.1.0

この例では 2x2ピクセルから値を読みます。

コード
SELECT
    ST_Neighborhood(rast, 2, 2, 1, 1)
FROM (
    SELECT
        ST_SetValues(ST_AddBand(ST_MakeEmptyRaster(5, 5, -2, 2, 1, -1, 0, 0, 0),
                '8BUI'::text, 1, 0
            ),
            1, 1, 1, ARRAY[
                [0, 1, 1, 1, 1],
                [1, 1, 1, 0, 1],
                [1, 0, 1, 1, 1],
                [1, 1, 1, 1, 0],
                [1, 1, 0, 1, 1]
            ]::double precision[],
            1
        ) AS rast
) AS foo
出力
{{NULL,1,1},{1,1,1},{1,NULL,1}}

この例では 2x3ピクセルから NODATA 値を読みます。

コード
SELECT
    ST_Neighborhood(rast, 2, 3, 1, 1)
FROM (
    SELECT
        ST_SetValues(ST_AddBand(ST_MakeEmptyRaster(5, 5, -2, 2, 1, -1, 0, 0, 0),
                '8BUI'::text, 1, 0
            ),
            1, 1, 1, ARRAY[
                [0, 1, 1, 1, 1],
                [1, 1, 1, 0, 1],
                [1, 0, 1, 1, 1],
                [1, 1, 1, 1, 0],
                [1, 1, 0, 1, 1]
            ]::double precision[],
            1
        ) AS rast
) AS foo
出力
{{1,1,1},{1,NULL,1},{1,1,1}}

3x3ピクセルに値があります。 exclude_nodata_value = FALSE とします。

コード
SELECT
    ST_Neighborhood(rast, 3, 3, 1, 1, false)
FROM ST_SetValues(ST_AddBand(ST_MakeEmptyRaster(5, 5, -2, 2, 1, -1, 0, 0, 0),
                '8BUI'::text, 1, 0
            ),
            1, 1, 1, ARRAY[
                [0, 1, 1, 1, 1],
                [1, 1, 1, 0, 1],
                [1, 0, 1, 1, 1],
                [1, 1, 1, 1, 0],
                [1, 1, 0, 1, 1]
            ]::double precision[],
            1
        ) AS rast
出力
{{1,1,0},{0,1,1},{1,1,1}}