Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-database in Microsoft Fabric
Retourneert een geometrie-exemplaar dat de set van alle punten vertegenwoordigt waarvan de afstand van het aanroepende geometrie-exemplaar kleiner is dan of gelijk is aan de afstandsparameter .
Syntax
.BufferWithCurves ( distance )
Arguments
afstand
Is een float die de maximale afstand aangeeft die punten die de buffer vormen, afkomstig kunnen zijn van het geometrieexemplaren .
Retourtypen
Retourtype SQL Server: geometrie
CLR-retourtype: SqlGeometry
Exceptions
Met de volgende criteria wordt een ArgumentException gegooid.
Er wordt geen parameter doorgegeven aan de methode, zoals
@g.BufferWithCurves()Een niet-numerieke parameter wordt doorgegeven aan de methode, zoals
@g.BufferWithCurves('a')NULL wordt doorgegeven aan de methode, zoals
@g.BufferWithCurves(NULL)
Remarks
In de volgende afbeelding ziet u een voorbeeld van een geometrie-exemplaar dat door deze methode wordt geretourneerd.
In de volgende tabel ziet u de resultaten die worden geretourneerd voor verschillende afstandswaarden.
| afstand Waarde | Typeafmetingen | Ruimtelijk type geretourneerd |
|---|---|---|
| afstand < 0 | Nul of één | Lege GeometryCollection-instantie |
| afstand < 0 | Twee of meer | Een CurvePolygon - of GeometryCollection-exemplaar met een negatieve buffer. Notitie: Een negatieve buffer kan een lege GeometryCollection maken |
| afstand = 0 | Alle afmetingen | Kopie van het aanroepende geometrieexemplaar |
| afstand > 0 | Alle afmetingen | CurvePolygon- of GeometryCollection-exemplaar |
Note
Omdat de afstand een float is, kan een zeer kleine waarde gelijk zijn aan nul in de berekeningen. Wanneer dit gebeurt, wordt een kopie van het aanroepende geometrieexemplaar geretourneerd. Zie float en real (Transact-SQL).
Een negatieve buffer verwijdert alle punten in de opgegeven afstand van de grens van de geometrie. In de volgende afbeelding ziet u een negatieve buffer als het lichter gearceerde gebied van de cirkel. De stippellijn is de grens van de oorspronkelijke veelhoek en de ononderbroken lijn is de grens van de resulterende veelhoek.
Als een tekenreeksparameter wordt doorgegeven aan de methode, wordt deze geconverteerd naar een float of wordt er een ArgumentException.
Examples
A. BufferWithCurves() aanroepen met een parameterwaarde < 0 op één dimensionale geometrieinstantie
In het volgende voorbeeld wordt een leeg GeometryCollection exemplaar geretourneerd:
DECLARE @g geometry= 'LINESTRING(3 4, 8 11)';
SELECT @g.BufferWithCurves(-1).ToString();
B. BufferWithCurves() aanroepen met een parameterwaarde < 0 op een tweedimensionaal geometrieexemplaren
In het volgende voorbeeld wordt een CurvePolygon exemplaar met een negatieve buffer geretourneerd:
DECLARE @g geometry = 'CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 4, 4 0, 8 4), (8 4, 0 4)))';
SELECT @g.BufferWithCurves(-1).ToString()
C. BufferWithCurves() aanroepen met een parameterwaarde < 0 die een lege GeometryCollection retourneert
In het volgende voorbeeld ziet u wat er gebeurt wanneer de afstandsparameter gelijk is aan -2:
DECLARE @g geometry = 'CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 4, 4 0, 8 4), (8 4, 0 4)))';
SELECT @g.BufferWithCurves(-2).ToString();
Deze SELECT-instructie retourneert GEOMETRYCOLLECTION EMPTY
D. BufferWithCurves() aanroepen met een parameterwaarde = 0
In het volgende voorbeeld wordt een kopie van het aanroepende geometrieexemplaar geretourneerd:
DECLARE @g geometry = 'LINESTRING(3 4, 8 11)';
SELECT @g.BufferWithCurves(0).ToString();
E. BufferWithCurves() aanroepen met een niet-nulparameterwaarde die extreem klein is
In het volgende voorbeeld wordt ook een kopie van het aanroepende geometrieexemplaar geretourneerd:
DECLARE @g geometry = 'LINESTRING(3 4, 8 11)';
DECLARE @distance float = 1e-20;
SELECT @g.BufferWithCurves(@distance).ToString();
F. BufferWithCurves() aanroepen met een parameterwaarde > 0
In het volgende voorbeeld wordt een CurvePolygon exemplaar geretourneerd:
DECLARE @g geometry= 'LINESTRING(3 4, 8 11)';
SELECT @g.BufferWithCurves(2).ToString();
G. Een geldige tekenreeksparameter doorgeven
Het volgende voorbeeld retourneert hetzelfde CurvePolygon exemplaar als eerder vermeld, maar er wordt een tekenreeksparameter doorgegeven aan de methode:
DECLARE @g geometry= 'LINESTRING(3 4, 8 11)';
SELECT @g.BufferWithCurves('2').ToString();
H. Een ongeldige tekenreeksparameter doorgeven
In het volgende voorbeeld wordt een fout gegenereerd:
DECLARE @g geometry = 'LINESTRING(3 4, 8 11)'
SELECT @g.BufferWithCurves('a').ToString();
Houd er rekening mee dat de vorige twee voorbeelden een letterlijke tekenreeks hebben doorgegeven aan de BufferWithCurves() methode. Het eerste voorbeeld werkt omdat de letterlijke tekenreeks kan worden geconverteerd naar een numerieke waarde. Het tweede voorbeeld genereert echter een ArgumentException.
I. BufferWithCurves() aanroepen op multipoint-exemplaar
In het volgende voorbeeld worden twee GeometryCollection exemplaren en één CurvePolygon exemplaar geretourneerd:
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();
De eerste twee SELECT-instructies retourneren een GeometryCollection exemplaar omdat de parameterafstand kleiner is dan of gelijk is aan 1/2, de afstand tussen de twee punten (1 1) en (1 4). De derde SELECT-instructie retourneert een CurvePolygon exemplaar omdat de gebufferde exemplaren van de twee punten (1 1) en (1 4) elkaar overlappen.