ST_Neighborhood — 傳回一個 2 維雙精度陣列,其中包含指定波段像素周圍的非 NODATA
值。該像素可以透過 columnX 和 rowY 或一個幾何點來指定,該幾何點的空間參考坐標系統與柵格相同。
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)
;
傳回一個 2 維雙精度陣列,其中包含指定波段像素周圍的非 NODATA
值。該像素可以透過 columnX 和 rowY 或一個幾何點來指定,該幾何點的空間參考坐標系統與柵格相同。distanceX
和 distanceY
參數定義了在 X 和 Y 軸上圍繞指定像素的像素數量。例如,我想要在感興趣像素周圍 X 軸上 3 個像素距離內和 Y 軸上 2 個像素距離內的所有值。該 2 維陣列的中心值將是 columnX 和 rowY 或幾何點所指定像素處的值。
波段編號從 1 開始,如果未指定 bandnum
,則預設為 1。如果 exclude_nodata_value
設定為 false,則所有包含 nodata
像素的像素都被視為相交並傳回值。如果未傳入 exclude_nodata_value
,則從柵格的元數據中讀取它。
![]() |
|
返回的 2 維陣列的每個軸上的元素數為 2 * ( |
![]() |
|
2 維陣列輸出可以傳遞給任何柵格處理內建函數,例如 ST_Min4ma、ST_Sum4ma、ST_Mean4ma。 |
可用性:2.1.0
-- pixel 2x2 has value 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 st_neighborhood --------------------------------- {{NULL,1,1},{1,1,1},{1,NULL,1}}
-- pixel 2x3 is 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 st_neighborhood ------------------------------ {{1,1,1},{1,NULL,1},{1,1,1}}
-- pixel 3x3 has value -- 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 st_neighborhood --------------------------- {{1,1,0},{0,1,1},{1,1,1}}