ST_Polygon — Gibt eine Geometrie mit Mehrfachpolygonen zurück, die aus der Vereinigung von Pixel mit demselben Zellwert gebildet werden. Pixel mit NODATA Werten werden nicht berücksichtigt. Wenn keine Band angegeben ist, wird die Bandnummer standardmäßig auf 1 gesetzt.
geometry ST_Polygon(raster rast, integer band_num=1);
Geändert 3.3.0, Validierung und Fixierung ist deaktiviert, um die Leistung zu verbessern. Kann zu ungültigen Geometrien führen.
Verfügbarkeit: 0.1.6 - benötigt GDAL 1.7+
Erweiterung: 2.1.0 Geschwindigkeit verbessert (zur Gänze C-basiert) und es wird sichergestellt, dass das zurückgegebenen Mehrfachpolygon valide ist.
Änderung: 2.1.0 In Vorgängerversionen wurde manchmal ein Polygon zurückgegeben; dies wurde geändert so dass jetzt immer ein Mehrfachpolygon zurückgegeben wird.
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.
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;
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)