ST_NearestValue
Name
ST_NearestValue —
Returns the nearest non-
NODATA
value of a given band's pixel specified by a columnx and rowy or a geometric point expressed in the same spatial reference coordinate system as the raster.
Synopsis
double precision
ST_NearestValue
(
raster
rast
, integer
bandnum
, geometry
pt
, boolean
exclude_nodata_value=true
)
;
double precision
ST_NearestValue
(
raster
rast
, geometry
pt
, boolean
exclude_nodata_value=true
)
;
double precision
ST_NearestValue
(
raster
rast
, integer
bandnum
, integer
columnx
, integer
rowy
, boolean
exclude_nodata_value=true
)
;
double precision
ST_NearestValue
(
raster
rast
, integer
columnx
, integer
rowy
, boolean
exclude_nodata_value=true
)
;
Description
Returns the nearest non-
NODATA
value of a given band in a given columnx, rowy pixel or at a specific geometric point. If the columnx, rowy pixel or the pixel at the specified geometric point is
NODATA
, the function will find the nearest pixel to the columnx, rowy pixel or geometric point whose value is not
NODATA
.
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.
Availability: 2.1.0
|
|
|
ST_NearestValue is a drop-in replacement for ST_Value. |
Examples
-- pixel 2x2 has value
SELECT
ST_Value(rast, 2, 2) AS value,
ST_NearestValue(rast, 2, 2) AS nearestvalue
FROM (
SELECT
ST_SetValue(
ST_SetValue(
ST_SetValue(
ST_SetValue(
ST_SetValue(
ST_AddBand(
ST_MakeEmptyRaster(5, 5, -2, 2, 1, -1, 0, 0, 0),
'8BUI'::text, 1, 0
),
1, 1, 0.
),
2, 3, 0.
),
3, 5, 0.
),
4, 2, 0.
),
5, 4, 0.
) AS rast
) AS foo
value | nearestvalue
-------+--------------
1 | 1
-- pixel 2x3 is NODATA
SELECT
ST_Value(rast, 2, 3) AS value,
ST_NearestValue(rast, 2, 3) AS nearestvalue
FROM (
SELECT
ST_SetValue(
ST_SetValue(
ST_SetValue(
ST_SetValue(
ST_SetValue(
ST_AddBand(
ST_MakeEmptyRaster(5, 5, -2, 2, 1, -1, 0, 0, 0),
'8BUI'::text, 1, 0
),
1, 1, 0.
),
2, 3, 0.
),
3, 5, 0.
),
4, 2, 0.
),
5, 4, 0.
) AS rast
) AS foo
value | nearestvalue
-------+--------------
| 1