名称

ST_NearestValue — 返回由 columnx 和 rowy 指定的给定波段像素的最近非 NODATA 值,或以与栅格相同的空间参考坐标系表示的几何点。

语法

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);

说明

返回给定波段在给定 columnx、rowy 像素或特定几何点处的最近非 NODATA 值。如果 columnx、rowy 像素或指定几何点处的像素为 NODATA,则该函数将找到 columnx、rowy 像素或几何点处最近的像素,其值不为 NODATA

波段号从 1 开始,如果没有指定 bandnum,则假定为 1。如果将 exclude_nodata_value 设置为 false,则所有像素(包括 nodata 像素)都被视为相交并返回其值。如果没有传入 exclude_nodata_value,则从栅格的元数据中读取该值。

可用性:2.1.0

[Note]

ST_NearestValue 可直接替换 ST_Value。

示例

-- 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
                

另请参阅

ST_NeighborhoodST_Value