STBuffer (geography Data Type)
Applies to: SQL Server (all supported versions) Azure SQL Database
Returns a geography object that represents the union of all points whose distance from a geography instance is less than or equal to a specified value.
This geography data type method supports FullGlobe instances or spatial instances that are larger than a hemisphere.
.STBuffer ( distance )
To view Transact-SQL syntax for SQL Server 2014 and earlier, see Previous versions documentation.
Is a value of type float (double in the .NET Framework) specifying the distance from the geography instance around which to calculate the buffer.
The maximum distance of the buffer cannot exceed 0.999 * π * minorAxis * minorAxis / majorAxis (~0.999 * 1/2 Earth's circumference) or the full globe.
SQL Server return type: geography
CLR return type: SqlGeography
STBuffer() calculates a buffer in the same manner as BufferWithTolerance, specifying tolerance = abs(distance) * .001 and relative = false.
A negative buffer removes all points within the given distance of the boundary of the geography instance.
STBuffer() will return a FullGlobe instance in certain cases; for example,
STBuffer() returns a FullGlobe instance when the buffer distance is greater than the distance from the equator to the poles. A buffer cannot exceed the full globe.
This method will throw an ArgumentException in FullGlobe instances where the distance of the buffer exceeds the following limitation:
0.999 * π * minorAxis * minorAxis / majorAxis (~0.999 * 1/2 Earth's circumference)
The maximum distance limit allows the construction of the buffer to be as flexible as possible.
The error between the theoretical and computed buffer is max(tolerance, extents * 1.E-7) where tolerance = distance * .001. For more information on extents, see geography Data Type Method Reference.
The following example creates a
LineString``geography instance. It then uses
STBuffer() to return the region within 1 meter of the instance.
DECLARE @g geography; SET @g = geography::STGeomFromText('LINESTRING(-122.360 47.656, -122.343 47.656)', 4326); SELECT @g.STBuffer(1).ToString();