BufferWithCurves (type de données geometry)
S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance
Retourne une instance geometry qui représente l’ensemble de tous les points dont la distance par rapport à l’instance geometry appelante est inférieure ou égale au paramètre distance.
Syntaxe
.BufferWithCurves ( distance )
Arguments
distance
Expression float indiquant la distance maximale à laquelle les points qui forment la mémoire tampon peuvent se trouver par rapport à l’instance geometry.
Types de retour
Type de retour SQL Server : geometry
Type de retour CLR : SqlGeometry
Exceptions
Les critères suivants lèvent ArgumentException.
Aucun paramètre n’est passé à la méthode, par exemple
@g.BufferWithCurves()
Un paramètre non numérique est passé à la méthode, par exemple
@g.BufferWithCurves('a')
NULL est passé à la méthode, par exemple
@g.BufferWithCurves(NULL)
Notes
L'illustration suivante montre un exemple d'une instance géométrique retournée par cette méthode.
Le tableau suivant affiche les résultats retournés pour différentes valeurs de distance.
Valeur de distance | Dimensions de type | Type spatial retourné |
---|---|---|
distance < 0 | Zéro ou une | Instance GeometryCollection vide |
distance < 0 | Deux ou plus | Instance CurvePolygon ou GeometryCollection avec une mémoire tampon négative. Remarque : Une mémoire tampon négative peut créer un GeometryCollection vide |
distance = 0 | Toutes les dimensions | Copie de l’instance geometry appelante |
distance > 0 | Toutes les dimensions | Instance CurvePolygon ou GeometryCollection |
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).
Une mémoire tampon négative supprime tous les points compris dans la distance donnée de la limite de la géométrie. L'illustration suivante montre une mémoire tampon négative sous la forme d'une zone hachurée plus claire du cercle. Le trait en pointillé représente la limite du polygone d'origine et la ligne continue la limite du polygone obtenu.
Si un paramètre string est passé à la méthode, il est converti en float ou lève ArgumentException
.
Exemples
R. Appel de BufferWithCurves() avec une valeur de paramètre < 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.BufferWithCurves(-1).ToString();
B. Appel de BufferWithCurves() avec une valeur de paramètre < 0 sur une instance géométrique bidimensionnelle
L'exemple suivant retourne une instance CurvePolygon
avec une mémoire tampon négative :
DECLARE @g geometry = 'CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 4, 4 0, 8 4), (8 4, 0 4)))';
SELECT @g.BufferWithCurves(-1).ToString()
C. Appel de BufferWithCurves() avec une valeur de paramètre < 0 qui retourne un GeometryCollection vide
L’exemple suivant montre ce qui se passe quand le paramètre distance est égal à -2 :
DECLARE @g geometry = 'CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 4, 4 0, 8 4), (8 4, 0 4)))';
SELECT @g.BufferWithCurves(-2).ToString();
Cette instruction SELECT retourne GEOMETRYCOLLECTION EMPTY
D. Appel de BufferWithCurves() avec une valeur de paramètre = 0
L’exemple suivant retourne une copie de l’instance geometry appelante :
DECLARE @g geometry = 'LINESTRING(3 4, 8 11)';
SELECT @g.BufferWithCurves(0).ToString();
E. Appel de BufferWithCurves() 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.BufferWithCurves(@distance).ToString();
F. Appel de BufferWithCurves() avec une valeur de paramètre > 0
L'exemple suivant retourne une instance CurvePolygon
:
DECLARE @g geometry= 'LINESTRING(3 4, 8 11)';
SELECT @g.BufferWithCurves(2).ToString();
G. Transmission d'un paramètre de chaîne valide
L'exemple suivant retourne la même instance CurvePolygon
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.BufferWithCurves('2').ToString();
H. Transmission d'un paramètre de chaîne non valide
L'exemple suivant génère une erreur :
DECLARE @g geometry = 'LINESTRING(3 4, 8 11)'
SELECT @g.BufferWithCurves('a').ToString();
Notez que les deux exemples précédents ont passé un littéral de chaîne à la méthode BufferWithCurves()
. 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 BufferWithCurves() sur l'instance MultiPoint
L'exemple suivant retourne deux instances GeometryCollection
et une instance CurvePolygon
:
DECLARE @g geometry = 'MULTIPOINT((1 1),(1 4))';
SELECT @g.BufferWithCurves(1).ToString();
SELECT @g.BufferWithCurves(1.5).ToString();
SELECT @g.BufferWithCurves(1.6).ToString();
Les deux premières instructions SELECT retournent une instance GeometryCollection
, 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 CurvePolygon
, car les instances mises en mémoire tampon des deux points (1 1) et (1 4) se chevauchent.