ST_Polygon — Returnerar en multipolygongeometri som bildas av sammanslagningen av pixlar som har ett pixelvärde som inte är något datavärde. Om inget bandnummer anges är standardvärdet för bandnum 1.
geometry ST_Polygon(raster rast, integer band_num=1);
Ändrad 3.3.0, validering och fixering är inaktiverad för att förbättra prestanda. Kan resultera i ogiltiga geometrier.
Tillgänglighet: 0.1.6 Kräver GDAL 1.7 eller högre.
Förbättrad: 2.1.0 Förbättrad hastighet (helt C-baserad) och den returnerande multipolygonen är säkerställd att vara giltig.
Ändrad: 2.1.0 I tidigare versioner returnerades ibland en polygon, ändrat till att alltid returnera multipolygon.
Jämför polygonisering av varje pixel med polygonisering efter att noll har tilldelats som NODATA-värde. Den senare bevarar mellanrummet som bildas av celler med nollvärde.
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)