ST_Polygon — 返回由具有非无数据值的像素值的像素并集形成的多多边形几何体。 如果未指定波段 编号,则 波段 编号默认为 1。
geometry ST_Polygon(raster rast, integer band_num=1);
改变 3.3.0,禁用验证和修复以提高性能。 可能会导致无效的几何图形。
可用性:0.1.6 需要 GDAL 1.7 或更高版本。
增强:2.1.0 提高速度(完全基于 C)并且确保返回的多边形有效。
更改:2.1.0 在之前的版本中有时会返回多边形,更改为始终返回多多边形。
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)