Nom

ST_Polygon — Retourne une géométrie multipolygonale formée par l'union des pixels dont la valeur est différente de nodata. Si aucune bande bandnum n'est spécifiée, la bande 1 est utilisée.

Synopsis

geometry ST_Polygon(raster rast, integer band_num=1);

Description

Changement 3.3.0, la validation et la correction sont désactivées pour améliorer les performances. Peut donc retourner des géométries non valides.

Disponibilité : 0.1.6 Nécessite GDAL 1.7 ou plus.

Amélioration : 2.1.0 Vitesse améliorée (entièrement en C) et le multipolygone retourné est garanti d'être valide.

Changement : 2.1.0 Dans les versions précédentes, retournait parfois un polygone, retourne désormais toujours un multipolygon.

Exemples

Compare polygonization of every pixel with polygonization after zero is assigned as the NODATA value. The latter preserves the gap formed by zero-valued cells.

Code
WITH source AS (
    SELECT ST_SetValues(
        ST_AddBand(
            ST_MakeEmptyRaster(4, 4, 0, 4, 1, -1, 0, 0, 0),
            1, '8BUI', 1, NULL
        ),
        1, 1, 1,
        ARRAY[
            [1, 1, 1, 1],
            [1, 0, 0, 1],
            [1, 1, 0, 1],
            [1, 1, 1, 1]
        ]::double precision[][]
    ) AS rast
), variants AS (
    SELECT 'all pixels' AS title, ST_Polygon(rast) AS geom
    FROM source
    UNION ALL
    SELECT
        'zero excluded',
        ST_Polygon(ST_SetBandNoDataValue(rast, 1, 0))
    FROM source
)
SELECT title, geom AS geom
FROM variants
ORDER BY CASE title
    WHEN 'all pixels' THEN 1
    ELSE 2
END;
Export de raster
title         | geom
---------------+----------------------------------------------------------------------
 all pixels    | MULTIPOLYGON(((0 4,4 4,4 0,0 0,0 4)))
 zero excluded | MULTIPOLYGON(((0 4,0 0,4 0,4 4,0 4),(1 3,3 3,3 1,2 1,2 2,1 2,1 3)))
(2 rows)
Figure
Geometry figure for visual-rt-st-polygon-01