Delen via


STBuffer (geometriegegevenstype)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-database in Microsoft Fabric Preview

Retourneert een geometrisch object dat de samenvoeging vertegenwoordigt van alle punten waarvan de afstand van een geometrie-exemplaar kleiner is dan of gelijk is aan een opgegeven waarde.

Syntax

  
.STBuffer ( distance )  

Arguments

distance
Is een waarde van het type float (dubbel in het .NET Framework) die de afstand aangeeft van het geometrieexemplaren om de buffer te berekenen.

Return Types

Retourtype SQL Server: geometrie

CLR-retourtype: SqlGeometry

Remarks

STBuffer() berekent een buffer zoals BufferWithTolerance, waarbij tolerantie = afstand * .001 en relatieve = onwaar wordt opgegeven.

Wanneer afstand> 0 wordt geretourneerd, wordt een Polygon - of MultiPolygon-exemplaar geretourneerd.

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 geometrie-exemplaar geretourneerd. Zie float en real (Transact-SQL)

Wanneer afstand = 0, wordt een kopie van het aanroepende geometrie-exemplaar geretourneerd.

Wanneer afstand< 0, dan

  • een leeg GeometryCollection-exemplaar wordt geretourneerd wanneer de dimensies van het exemplaar 0 of 1 zijn.

  • een negatieve buffer wordt geretourneerd wanneer de dimensies van het exemplaar 2 of meer zijn.

    Note

    Een negatieve buffer kan ook een leeg GeometryCollection-exemplaar maken.

Een negatieve buffer verwijdert alle punten in de opgegeven afstand van de grens van de geometrie.

De fout tussen de theoretische en berekende buffer is max(tolerantie, gebieden * 1.E-7) waarbij tolerantie = afstand * .001. Zie de naslaginformatie over methode voor geometriegegevenstypen voor meer informatie over gebieden.

Examples

A. STBuffer() aanroepen met parameter_value < 0 op één dimensionale geometrie-instantie

In het volgende voorbeeld wordt een leeg GeometryCollection exemplaar geretourneerd:

 DECLARE @g geometry= 'LINESTRING(3 4, 8 11)'; 
 SELECT @g.STBuffer(-1).ToString();

B. STBuffer() aanroepen met parameter_value < 0 op een polygoonexemplaren

In het volgende voorbeeld wordt een Polygon exemplaar met een negatieve buffer geretourneerd:

 DECLARE @g geometry = 'POLYGON((1 1, 1 5, 5 5, 5 1, 1 1))'; 
 SELECT @g.STBuffer(-1).ToString();

C. STBuffer() aanroepen met parameter_value < 0 op een CurvePolygon-exemplaar

In het volgende voorbeeld wordt een Polygon exemplaar geretourneerd met een negatieve buffer van een CurvePolygon exemplaar:

 DECLARE @g geometry = 'CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 4, 4 0, 8 4), (8 4, 0 4)))'; 
 SELECT @g.STBuffer(-1).ToString();

Note

Er Polygon wordt een exemplaar geretourneerd in plaats van een CurvePolygon exemplaar. Zie BufferWithCurves (geometriegegevenstype) als u een CurvePolygon exemplaar wilt retourneren

D. STBuffer() aanroepen met een negatieve parameterwaarde die een leeg exemplaar retourneert

In het volgende voorbeeld ziet u wat er gebeurt wanneer de afstandsparameter gelijk is aan -2 voor het vorige voorbeeld.

 DECLARE @g geometry = 'CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 4, 4 0, 8 4), (8 4, 0 4)))'; 
 SELECT @g.STBuffer(-2).ToString();

Deze SELECT-instructie retourneert een GEOMETRYCOLLECTION EMPTY.

E. STBuffer() aanroepen met parameter_value = 0

In het volgende voorbeeld wordt een kopie van het aanroepende geometry exemplaar geretourneerd:

 DECLARE @g geometry = 'LINESTRING(3 4, 8 11)'; 
 SELECT @g.STBuffer(0).ToString();

F. STBuffer() aanroepen met een niet-nulparameterwaarde die extreem klein is

In het volgende voorbeeld wordt ook een kopie van het aanroepende geometry exemplaar geretourneerd:

 DECLARE @g geometry = 'LINESTRING(3 4, 8 11)';  
 DECLARE @distance float = 1e-20;  
 SELECT @g.STBuffer(@distance).ToString();

G. STBuffer() aanroepen met parameter_value > 0

In het volgende voorbeeld wordt een Polygon exemplaar geretourneerd:

 DECLARE @g geometry= 'LINESTRING(3 4, 8 11)'; 
 SELECT @g.STBuffer(2).ToString();

H. STBuffer() aanroepen met een tekenreeksparameterwaarde

Het volgende voorbeeld retourneert hetzelfde Polygon exemplaar als eerder vermeld, maar er wordt een tekenreeksparameter doorgegeven aan de methode:

 DECLARE @g geometry= 'LINESTRING(3 4, 8 11)'; 
 SELECT @g.STBuffer('2').ToString();

In het volgende voorbeeld wordt een fout gegenereerd:

 DECLARE @g geometry = 'LINESTRING(3 4, 8 11)'; 
 SELECT @g.STBuffer('a').ToString();

Note

De vorige twee voorbeelden hebben een letterlijke tekenreeks doorgegeven aan de STBuffer(). Het eerste voorbeeld werkt omdat de letterlijke tekenreeks kan worden geconverteerd naar een numerieke waarde. Het tweede voorbeeld genereert echter een ArgumentException.

I. STBuffer() aanroepen op een MultiPoint-exemplaar

In het volgende voorbeeld worden twee MultiPolygon exemplaren en één Polygon exemplaar geretourneerd:

 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();

De eerste twee SELECT-instructies retourneren een MultiPolygon 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 Polygon exemplaar omdat de gebufferde exemplaren van de twee punten (1 1) en (1 4) elkaar overlappen.

See Also

BufferWithTolerance (geometriegegevenstype)
OGC-methoden voor geometrieexemplaren