Namn

ST_NearestValue — Returnerar det närmaste icke-NODATA-värdet för ett givet bands pixel som anges av en kolumnx och rowy eller en geometrisk punkt uttryckt i samma spatiala referenskoordinatsystem som rastret.

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

Returnerar det närmaste icke-NODATA-värdet för ett givet band i en given kolumnx, rowy-pixel eller i en specifik geometrisk punkt. Om pixeln i kolumnx, rowy eller pixeln i den angivna geometriska punkten är NODATA, kommer funktionen att hitta den närmaste pixeln till pixeln i kolumnx, rowy eller den geometriska punkten vars värde inte är NODATA.

Bandnumren börjar på 1 och bandnum antas vara 1 om det inte anges. Om exclude_nodata_value är satt till false anses alla pixlar inklusive nodata-pixlar skära varandra och returnerar värdet. Om värdet exclude_nodata_value inte anges läses det från rastrets metadata.

Tillgänglighet: 2.1.0

[Notera]

ST_NearestValue är en drop-in-ersättning för ST_Value.

Exempel

This example reads a value from pixel 2x2.

Code
WITH source AS (
    SELECT ST_SetValues(
        ST_AddBand(
            ST_MakeEmptyRaster(5, 5, -2, 2, 1, -1, 0, 0, 0),
            1, '8BUI', 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[][]
    ) AS rast
)
SELECT
    ST_Value(rast, 2, 2) AS value,
    ST_NearestValue(rast, 2, 2) AS nearestvalue
FROM source
Rasterutdata
value | nearestvalue
-------+--------------
     1 |            1

This example reads a NODATA value from pixel 2x3.

Code
WITH source AS (
    SELECT ST_SetValues(
        ST_AddBand(
            ST_MakeEmptyRaster(5, 5, -2, 2, 1, -1, 0, 0, 0),
            1, '8BUI', 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[][]
    ) AS rast
)
SELECT
    ST_Value(rast, 2, 3) AS value,
    ST_NearestValue(rast, 2, 3) AS nearestvalue
FROM source
Rasterutdata
value | nearestvalue
-------+--------------
       |            1