Name

ST_Neighborhood — Retourne un tableau 2-D de double avec les valeurs non NODATA autour du pixel de la bande spécifiée, aux coordonnées spécifiées par columnX & rowY ou par un point géométrique dans le même système de référence spatial que le 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

Retourne un tableau 2-D de double avec les valeurs non NODATA autour du pixel de la bande spécifiée, aux coordonnées spécifiées par columnX & rowY ou par un point géométrique dans le même système de référence spatial que le raster. Les paramètres distanceX et distanceY définissent le nombre de pixels autour du pixel spécifié sur les axes X et Y. Exemple : vous pouvez récupérer toutes les valeurs autour du pixel souhaité, à une distance de 3 pixels selon l'axe X et à une distance de 2 pixels selon l'axe Y. La valeur centrale du tableau 2-D sera la valeur du pixel spécifié par columnX et rowY ou par le point géométrique.

Le numéro de bande démarre à 1, et la bande 1 est utilisée si bandnum non spécifié. Si exclude_nodata_value vaut false, tous les pixels y compris ceux ayant la valeur nodata sont considérés comme intersectés et leur valeur sera retournée. Si exclude_nodata_value n'est pas spécifié, la valeur est lue depuis les méta-données du raster.

[Note]

Le nombre d'éléments retournés dans le tableau 2-D sur chaque axe sera 2 * (distanceX|distanceY) + 1. Pour distanceX et distanceY de 1, le tableau sera de taille 3x3.

[Note]

Le tableau 2-D en sortie peut être passé à n'importe quelle fonction de traitement raster, comme ST_Min4ma, ST_Sum4ma, ST_Mean4ma.

Disponibilité : 2.1.0

Exemples

-- 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,1},{1,NULL,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

      st_neighborhood
---------------------------
{{1,1,0},{0,1,1},{1,1,1}}
                

Voir aussi

ST_NearestValue, ST_Min4ma, ST_Max4ma, ST_Sum4ma, ST_Mean4ma, ST_Range4ma, ST_Distinct4ma, ST_StdDev4ma