STBuffer (type de données geometry)
S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance
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 )
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