- 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 GEOMETRY d’entrée. 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.
Les unités dépendent de l’identificateur du système de référence spatiale (SRID) de l’objet GEOMETRY. Par exemple, ESPG : 4326 sont des degrés, tandis que ESPG : 25855 sont des mètres.
Renvoie¶
Renvoie un objet GEOMETRY.
Notes sur l’utilisation¶
Les SRIDs sont basés sur la norme EPSG (v10.082). Par exemple, le SRID 4326 correspond à l’autorité EPSG avec le code 4326.
ST_BUFFER utilise huit segments pour obtenir une approximation d’un quart de cercle.
Si
distance
est une valeur négative, l’objet renvoyé est 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¶
Avant d’exécuter les exemples, définissez le paramètre GEOMETRY_OUTPUT_FORMAT sur WKT
.
ALTER SESSION SET GEOMETRY_OUTPUT_FORMAT='WKT';
L’exemple suivant renvoie un polygone autour d’un point avec un rayon de un :
SELECT ST_BUFFER(TO_GEOMETRY('POINT(0 0)'), 1) AS geom;
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| GEOM |
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 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. 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))) |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+