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次元倍精度浮動小数点数配列を返します。distanceXとdistanceY引数は、たとえば、対象ピクセルから X 軸に沿って 3ピクセルとして Y 軸に沿って 2ピクセルというふうに、指定したピクセルの周囲のピクセル数を、それぞれ X 方向と Y 方向に定義します。2次元配列の中心の値は columnX, columnY またはジオメトリーポイントで指定したピクセルの値です。
バンド番号は 1始まりで、bandnumが指定されていない場合には、1番と仮定します。exclude_nodata_valueが FALSE に設定された場合には、NODATAピクセルを含む全てのピクセルがインタセクトするかが考慮され、値を返します。exclude_nodata_valueを渡さない場合には、ラスターのメタデータから読みます。
|
|
|
返される 2次元配列の各軸の要素数は 2 * ( |
|
|
|
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}}