STBuffer (type de données geometry)
Retourne un objet géométrique qui représente l'union de tous les points dont la distance à partir d'une instance geometry est inférieure ou égale à une valeur spécifiée.
Syntaxe
.STBuffer ( distance )
Arguments
- distance
Valeur de type float (double dans le .NET Framework) qui spécifie la distance à partir de l'instance géométrique autour de laquelle calculer la mémoire tampon.
Types de retour
SQL Server type de retour : geometry
Type de retour CLR : SqlGeometry
Notes
STBuffer() calcule une mémoire tampon de la même manière que BufferWithTolerance, en spécifiant tolerance = distance * ,001 et relative = false.
Lorsque distance > 0, une instance Polygon ou MultiPolygon est retournée.
[!REMARQUE]
Puisque la distance est de type float, une valeur très petite peut être équivalente à zéro dans les calculs. Lorsque cela se produit, une copie de l'instance geometry appelante est retournée. Consultez float et real (Transact-SQL)
Lorsque distance = 0, une copie de l'instance geometry appelante est retournée.
Lorsque distance< 0, alors
une instance GeometryCollection vide est retournée lorsque 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.
[!REMARQUE]
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 est max(tolerance, extents * 1.E-7) où tolerance = distance * .001. Pour plus d'informations sur extents, consultez Référence de méthodes de type de données geometry.
Exemples
A.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();
[!REMARQUE]
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 produit lorsque 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 un 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();
[!REMARQUE]
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 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 superposent.
Voir aussi
Référence
BufferWithTolerance (type de données geometry)