STBuffer (type de données geometry)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstancePoint de terminaison analytique SQL dans Microsoft FabricEntrepôt dans Microsoft Fabric

Retourne un objet géométrique qui représente l’union de tous les points dont la distance par rapport à une instance geometry est inférieure ou égale à une valeur spécifique.

Syntaxe

  
.STBuffer ( distance )  

Remarque

Pour afficher la syntaxe Transact-SQL pour SQL Server 2014 (12.x) et versions antérieures, consultez Versions antérieures de la documentation.

Arguments

distance
Valeur de type float (double dans le .NET Framework), qui spécifie la distance de l’instance geometry autour de laquelle calculer la mémoire tampon.

Types de retour

Type de retour SQL Server : geometry

Type de retour CLR : SqlGeometry

Remarques

STBuffer() calcule une mémoire tampon de la même manière que BufferWithTolerance, en spécifiant tolérance = distance * 0,001 et relative = false.

Quand distance> 0, une instance Polygon ou MultiPolygon est retournée.

Notes

Dans la mesure où distance est de type float, une valeur très petite peut être équivalente à zéro dans les calculs. Quand cela se produit, une copie de l’instance geometry appelante est retournée. Consultez float et real (Transact-SQL)

Quand distance = 0, une copie de l’instance geometry appelante est retournée.

Quand distance< 0, alors

  • une instance GeometryCollection vide est retournée quand les dimensions de l’instance sont 0 ou 1.

  • une mémoire tampon négative est retournée lorsque les dimensions de l'instance sont de 2 ou plus.

    Notes

    Une mémoire tampon négative peut également créer une instance GeometryCollection vide.

Une mémoire tampon négative supprime tous les points situés dans la distance donnée de la limite de la géométrie.

L’erreur entre la mémoire tampon théorique et la mémoire tampon calculée correspond à max(tolérance, extents * 1.E-7) où tolérance = distance * 0,001. Pour plus d’informations sur les étendues, consultez Référence de méthodes de type de données geometry.

Exemples

R. Appel de STBuffer() avec parameter_value < 0 sur une instance géométrique unidimensionnelle

L'exemple suivant retourne une instance GeometryCollection vide :

 DECLARE @g geometry= 'LINESTRING(3 4, 8 11)'; 
 SELECT @g.STBuffer(-1).ToString();

B. Appel de STBuffer() avec parameter_value < 0 sur une instance Polygon

L'exemple suivant retourne une instance Polygon avec une mémoire tampon négative :

 DECLARE @g geometry = 'POLYGON((1 1, 1 5, 5 5, 5 1, 1 1))'; 
 SELECT @g.STBuffer(-1).ToString();

C. Appel de STBuffer() avec parameter_value < 0 sur une instance CurvePolygon

L'exemple suivant retourne une instance Polygon avec une mémoire tampon négative d'une instance CurvePolygon :

 DECLARE @g geometry = 'CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 4, 4 0, 8 4), (8 4, 0 4)))'; 
 SELECT @g.STBuffer(-1).ToString();

Notes

Une instance Polygon est retournée au lieu d'une instance CurvePolygon. Pour retourner une instance CurvePolygon, consultez BufferWithCurves (type de données geometry)

D. Appel de STBuffer() avec une valeur de paramètre négative qui retourne une instance vide

L’exemple suivant montre ce qui se passe quand le paramètre distance est égal à -2 pour l’exemple précédent.

 DECLARE @g geometry = 'CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 4, 4 0, 8 4), (8 4, 0 4)))'; 
 SELECT @g.STBuffer(-2).ToString();

Cette instruction SELECT retourne GEOMETRYCOLLECTION EMPTY.

E. Appel de STBuffer() avec parameter_value = 0

L'exemple suivant retourne une copie de l'instance geometry appelante :

 DECLARE @g geometry = 'LINESTRING(3 4, 8 11)'; 
 SELECT @g.STBuffer(0).ToString();

F. Appel de STBuffer() avec une valeur de paramètre non nulle extrêmement petite

L'exemple suivant retourne également une copie de l'instance geometry appelante :

 DECLARE @g geometry = 'LINESTRING(3 4, 8 11)';  
 DECLARE @distance float = 1e-20;  
 SELECT @g.STBuffer(@distance).ToString();

G. Appel de STBuffer() avec parameter_value > 0

L'exemple suivant retourne une instance Polygon :

 DECLARE @g geometry= 'LINESTRING(3 4, 8 11)'; 
 SELECT @g.STBuffer(2).ToString();

H. Appel de STBuffer() avec une valeur de paramètre de chaîne

L'exemple suivant retourne la même instance Polygon qu'indiqué précédemment, mais un paramètre de chaîne est passé à la méthode :

 DECLARE @g geometry= 'LINESTRING(3 4, 8 11)'; 
 SELECT @g.STBuffer('2').ToString();

L'exemple suivant génère une erreur :

 DECLARE @g geometry = 'LINESTRING(3 4, 8 11)'; 
 SELECT @g.STBuffer('a').ToString();

Notes

Les deux exemples précédents ont passé un littéral de chaîne au STBuffer(). Le premier exemple fonctionne car le littéral de chaîne peut être converti en valeur numérique. Toutefois, le deuxième exemple lève un ArgumentException.

I. Appel de STBuffer() sur une instance MultiPoint

L'exemple suivant retourne deux instances MultiPolygon et une instance Polygon :

 DECLARE @g geometry = 'MULTIPOINT((1 1),(1 4))'; 
 SELECT @g.STBuffer(1).ToString(); 
 SELECT @g.STBuffer(1.5).ToString(); 
 SELECT @g.STBuffer(1.6).ToString();

Les deux premières instructions SELECT retournent une instance MultiPolygon, car le paramètre distance est inférieur ou égal à 1/2 de la distance entre les deux points (1 1) et (1 4). La troisième instruction SELECT retourne une instance Polygon, car les instances mises en mémoire tampon des deux points (1 1) et (1 4) se chevauchent.

Voir aussi

BufferWithTolerance (type de données geometry)
Méthodes OGC sur des instances geography