STBuffer (geography Data Type)
Applies To: SQL Server 2014, SQL Server 2016 Preview
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.
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 theorectical 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();