ST_CoverageSimplify — Fönsterfunktion som förenklar kanterna på en polygonal täckning.
geometry ST_CoverageSimplify(
geometry winset geom, float8 tolerance, boolean simplifyBoundary = true)
;
En fönsterfunktion som förenklar kanterna på polygoner i en polygonal täckning. Förenklingen bevarar täckningens topologi. Detta innebär att de förenklade polygonerna är konsekventa längs delade kanter och fortfarande utgör en giltig täckning.
Vid förenklingen används en variant av Visvalingam-Whyatt-algoritmen. Toleransparametern
har avståndsenheter och är ungefär lika med kvadratroten av de triangulära områden som ska förenklas.
Om du bara vill förenkla täckningens "inre" kanter (de som delas av två polygoner) ska du ange parametern simplifyBoundary
till false.
![]() |
|
Om indata inte är en giltig täckning kan det förekomma oväntade artefakter i utdata (t.ex. gränssnitt eller separerade gränser som verkade vara delade). Använd ST_CoverageInvalidEdges för att avgöra om en täckning är giltig. |
Tillgänglighet: 3.4.0
Kräver GEOS >= 3.12.0
![]() Ingångstäckning
|
![]() Förenklad täckning
|
WITH coverage(id, geom) AS (VALUES (1, 'POLYGON ((160 150, 110 130, 90 100, 90 70, 60 60, 50 10, 30 30, 40 50, 25 40, 10 60, 30 100, 30 120, 20 170, 60 180, 90 190, 130 180, 130 160, 160 150), (40 160, 50 140, 66 125, 60 100, 80 140, 90 170, 60 160, 40 160))'::geometry), (2, 'POLYGON ((40 160, 60 160, 90 170, 80 140, 60 100, 66 125, 50 140, 40 160))'::geometry), (3, 'POLYGON ((110 130, 160 50, 140 50, 120 33, 90 30, 50 10, 60 60, 90 70, 90 100, 110 130))'::geometry), (4, 'POLYGON ((160 150, 150 120, 160 90, 160 50, 110 130, 160 150))'::geometry) ) SELECT id, ST_AsText(ST_CoverageSimplify(geom, 30) OVER ()) FROM coverage; id | st_astext ----+--------------------------------------- 1 | POLYGON ((160 150, 110 130, 50 10, 10 60, 20 170, 90 190, 160 150), (40 160, 66 125, 90 170, 40 160)) 2 | POLYGON ((40 160, 66 125, 90 170, 40 160)) 3 | POLYGON ((110 130, 160 50, 50 10, 110 130)) 4 | POLYGON ((160 150, 160 50, 110 130, 160 150))