Delen via


BufferWithCurves (geometriegegevenstype)

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-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.

Diagram met 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.

Zie ook

Uitgebreide methoden voor geometrieexemplaren