Name

ST_NearestValue — Gibt den nächstgelegenen nicht NODATA Wert eines bestimmten Pixels aus, das über "columnx" und "rowy" oder durch eine Punktgeometrie - im gleichen Koordinatenreferenzsystem wie der Raster - ausgewählt wird.

Übersicht

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

Gibt den nächstgelegenen, nicht-NODATA Wert eines bestimmten Pixels aus, das über "columnx" und "rowy", oder durch einen geometrischen Punkt angegeben wird. Falls das angegebene Pixel den Wert NODATA hat, findet die Funktion das nächstgelegene Pixel, das nicht den Wert NODATA hat.

Die Bandnummern beginnen mit 1 und wenn keine Bandnummer angegeben ist, dann wird für bandnum 1 angenommen. Wenn exclude_nodata_value auf FALSE gesetzt ist, werden auch die Pixel mit einem nodata Wert einbezogen. Wenn exclude_nodata_value nicht übergeben wird, dann wird er über die Metadaten des Rasters ausgelesen. 

Verfügbarkeit: 2.1.0

[Anmerkung]

ST_NearestValue ist eine Alternative zu ST_Value.

Beispiele

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
Ausgabe von Rastern
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
Ausgabe von Rastern
value | nearestvalue
-------+--------------
       |            1