- Catégories :
ST_BUFFER¶
Renvoie un objet GEOMETRY qui représente un MultiPolygon contenant les points situés à une distance spécifiée de l’objet d’entrée GEOMETRY. L’objet renvoyé représente effectivement un « tampon » autour de l’objet d’entrée.
Vous pouvez également « rétrécir » l’objet d’entrée en spécifiant une valeur négative pour la distance.
Syntaxe¶
ST_BUFFER( <geometry_expression> , <distance> )
Arguments¶
geometry_expression
L’argument doit être une expression de type GEOMETRY.
distance
La distance de l’objet GEOMETRY. Pour « rétrécir » l’objet, vous pouvez spécifier une valeur négative pour la distance.
Renvoie¶
Renvoie un objet GEOMETRY.
Notes sur l’utilisation¶
ST_BUFFER utilise huit segments pour obtenir une approximation d’un quart de cercle.
Si
distance
est une valeur négative, l’objet renvoyé sera plus petit que l’objet d’entrée. Vous pouvez l’utiliser pour supprimer les petites irrégularités de la forme.Pour LineStrings, les styles de terminaison et de jointure sont toujours ronds.
LineStings sont toujours tamponnés des deux côtés.
Exemples¶
L’exemple suivant renvoie un polygone autour d’un point avec un rayon de un :
SELECT ST_BUFFER(TO_GEOMETRY('POINT(0 0)'), 1);
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| ST_BUFFER(TO_GEOMETRY('POINT(0 0)'), 1) |
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| MULTIPOLYGON(((1 0,0.9807852804 -0.195090322,0.9238795325 -0.3826834324,0.8314696123 -0.555570233,0.7071067812 -0.7071067812,0.555570233 -0.8314696123,0.3826834324 -0.9238795325,0.195090322 -0.9807852804,6.123233996e-17 -1,-0.195090322 -0.9807852804,-0.3826834324 -0.9238795325,-0.555570233 -0.8314696123,-0.7071067812 -0.7071067812,-0.8314696123 -0.555570233,-0.9238795325 -0.3826834324,-0.9807852804 -0.195090322,-1 7.657137398e-16,-0.9807852804 0.195090322,-0.9238795325 0.3826834324,-0.8314696123 0.555570233,-0.7071067812 0.7071067812,-0.555570233 0.8314696123,-0.3826834324 0.9238795325,-0.195090322 0.9807852804,2.480838239e-15 1,0.195090322 0.9807852804,0.3826834324 0.9238795325,0.555570233 0.8314696123,0.7071067812 0.7071067812,0.8314696123 0.555570233,0.9238795325 0.3826834324,0.9807852804 0.195090322,1 0))) |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
L’exemple suivant utilise une valeur négative pour distance
pour supprimer les petites irrégularités (telles que les pointes) de la forme. Notez que l’appel TO_GEOMETRY passe dans TRUE comme deuxième argument, ce qui permet à la fonction de créer un objet GEOMETRY pour une forme non valide.
SELECT ST_BUFFER(TO_GEOMETRY('SRID=2261;POLYGON((1540792.21541900 290472.63529214, 1547018.61770388 302537.02285369, 1546965.96550151 302752.51514772, 1547018.61770388 302537.02285369,
1549532.42729914 301257.07398027, 1543327.42218339 289322.60923536, 1540792.21541900 290472.63529214))', True), -1e-08) AS geom;
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| GEOM |
|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| MULTIPOLYGON(((1543327.42218339 289322.609235373,1540792.21541901 290472.635292145,1547018.61770388 302537.022853677,1549532.42729913 301257.073980266,1543327.42218339 289322.609235373))) |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+