ST_RemoveSmallParts — Supprime les petites parties (anneaux de polygone ou lignes) d'une géométrie.
geometry ST_RemoveSmallParts(
geometry geom, double precision minSizeX, double precision minSizeY)
;
Retourne un geometry sans les petites parties (anneaux de polygones extérieurs ou intérieurs, ou lignes).
Cette fonction peut être utilisée comme étape de prétraitement pour créer des cartes simplifiées, par exemple pour supprimer les petites îles ou les trous.
Il n'évalue que les géométries de type (MULTI)POLYGONE et (MULTI)LINESTRING. Les autres géométries restent inchangées.
Si minSizeX
est supérieur à 0, les parties sont triées si leur largeur est inférieure à minSizeX
.
Si minSizeY
est supérieur à 0, les parties sont triées si leur hauteur est inférieure à minSizeY
.
Les deux paramètres, minSizeX
et minSizeY
sont mesurés dans les unités du système de coordonnées de la géométrie.
Pour les objets de type polygone, l'évaluation est effectuée séparément pour chaque anneau, ce qui peut conduire à l'un des résultats suivants :
la géométrie d'origine,
un POLYGONE avec tous les anneaux ayant moins de sommets,
un POLYGONE avec un nombre réduit d'anneaux intérieurs (ayant éventuellement moins de sommets),
un POLYGONE VIDE, ou
un MULTIPOLYGONE avec un nombre réduit de polygones (ayant éventuellement moins d'anneaux intérieurs ou de sommets), ou
un MULTIPOLYGONE VIDE.
Pour les types linestring l'évaluation est effectuée pour chaque ligne, ce qui peut conduire à l'un des résultats suivants :
la géométrie d'origine,
une LINESTRING avec un nombre réduit de sommets,
une LINESTRING VIDE,
une MULTILINESTRING avec un nombre réduit de lignes (ayant éventuellement moins de sommets), ou
une MULTILINESTRING VIDE.
Exemple : ST_RemoveSmallParts() appliqué à un multi-polygone. Les parties bleues sont conservées.
Disponibilité : 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