ST_Neighborhood
Name
ST_Neighborhood —
Returns a 2-D double precision array of the non-
NODATA
values around a given band's pixel specified by either a columnX and rowY or a geometric point expressed in the same spatial reference coordinate system as the raster.
Synopsis
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
)
;
Description
Returns a 2-D double precision array of the non-
NODATA
values around a given band's pixel specified by either a columnX and rowY or a geometric point expressed in the same spatial reference coordinate system as the raster. The
distanceX
and
distanceY
parameters define the number of pixels around the specified pixel in the X and Y axes, e.g. I want all values within 3 pixel distance along the X axis and 2 pixel distance along the Y axis around my pixel of interest. The center value of the 2-D array will be the value at the pixel specified by the columnX and rowY or the geometric point.
Band numbers start at 1 and
bandnum
is assumed to be 1 if not specified. If
exclude_nodata_value
is set to false, then all pixels include
nodata
pixels are considered to intersect and return value. If
exclude_nodata_value
is not passed in then reads it from metadata of raster.
The number of elements along each axis of the returning 2-D array is 2 * (
|
The 2-D array output can be passed to any of the raster processing builtin functions, e.g. ST_Min4ma, ST_Sum4ma, ST_Mean4ma. |
Availability: 2.1.0
Examples
-- 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,NULL},{1,1,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 ) AS foo st_neighborhood --------------------------- {{1,0,1},{1,1,1},{0,1,1}}
See Also
ST_NearestValue , ST_Min4ma , ST_Max4ma , ST_Sum4ma , ST_Mean4ma , ST_Range4ma , ST_Distinct4ma , ST_StdDev4ma