ST_RemoveSmallParts — Tar bort små delar (polygonringar eller linestrings) av en geometri.
geometry ST_RemoveSmallParts(
geometry geom, double precision minSizeX, double precision minSizeY)
;
Returnerar en geometry utan små delar (yttre eller inre polygonringar eller linestrings).
Denna funktion kan användas som ett förbehandlingssteg för att skapa förenklade kartor, t.ex. för att ta bort små öar eller hål.
Den utvärderar endast geometrier av typen (MULTI)POLYGON och (MULTI)LINESTRING. Andra geometrier förblir oförändrade.
Om minSizeX
är större än 0 sorteras delar ut om deras bredd är mindre än minSizeX
.
Om minSizeY
är större än 0 sorteras delar ut om deras höjd är mindre än minSizeY
.
Både minSizeX
och minSizeY
mäts i geometrins koordinatsystemenheter.
För polygontyper görs utvärderingen separat för varje ring, vilket kan leda till något av följande resultat:
den ursprungliga geometrin,
en POLYGON med alla ringar som har färre toppar,
en POLYGON med ett reducerat antal inre ringar (som eventuellt har färre toppar),
en POLYGON EMPTY, eller
en MULTIPOLYGON med ett reducerat antal polygoner (som eventuellt har färre inre ringar eller hörn), eller
en MULTIPOLYGON EMPTY.
För linestringstyper görs utvärderingen för varje linestrings, vilket kan leda till något av följande resultat:
den ursprungliga geometrin,
en LINESTRING med ett reducerat antal toppar,
a LINESTRING EMPTY,
en MULTILINESTRING med ett reducerat antal linestringsar (som eventuellt har färre toppar), eller
en MULTILINESTRING EMPTY.
Exempel: ST_RemoveSmallParts() tillämpas på en multipolygon. Blå delar kvarstår.
Tillgänglighet: 3.5.0
SELECT ST_AsText( ST_RemoveSmallParts( ST_GeomFromText('MULTIPOLYGON( ((60 160, 120 160, 120 220, 60 220, 60 160), (70 170, 70 210, 110 210, 110 170, 70 170)), ((85 75, 155 75, 155 145, 85 145, 85 75)), ((50 110, 70 110, 70 130, 50 130, 50 110)))'), 50, 50)); st_astext --------- MULTIPOLYGON(((60 160,120 160,120 220,60 220,60 160)),((85 75,155 75,155 145,85 145,85 75)))
SELECT ST_AsText( ST_RemoveSmallParts( ST_GeomFromText('LINESTRING(10 10, 20 20)'), 50, 50)); st_astext --------- LINESTRING EMPTY