BufferWithCurves(geography 数据类型)
适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例
返回一个 geography 实例,它表示与执行调用的 geography 实例的距离小于或等于 distance 参数的所有点的集合。
语法
.BufferWithCurves ( distance )
注意
若要查看 SQL Server 2014 (12.x) 及更早版本的 Transact-SQL 语法,请参阅早期版本文档。
参数
distance
一个 float,它表示组成缓冲区的点与 geography 实例之间的最大距离。
返回类型
SQL Server 返回类型:geography
CLR 返回类型:SqlGeography
例外
以下条件将引发 ArgumentException。
没有为方法传递任何参数,例如,
@g.BufferWithCurves()
为方法传递了非数值参数,例如,
@g.BufferWithCurves('a')
向方法传递了 NULL,例如,
@g.BufferWithCurves(NULL)
注解
下表显示为不同距离值返回的结果。
距离值 | 类型维度 | 返回的空间类型 |
---|---|---|
distance < 0 | 0 或 1 | 空的 GeometryCollection 实例 |
distance < 0 | 2 或更大 | 具有负缓冲区的 CurvePolygon 或 GeometryCollection 实例。 注意:负缓冲区可能会创建空的 GeometryCollection |
距离 = 0 | 所有维度 | 执行调用的 geography 实例的副本 |
distance > 0 | 所有维度 | CurvePolygon 或 GeometryCollection 实例 |
注意
由于 distance 的类型为 float,因此,很小的值可能在计算中等于零。 如果发生这种情况,则会返回执行调用的 geography 实例的副本。
如果将 string 参数传递给方法,则会将其转换为 float;否则,将引发 ArgumentException
。
示例
A. 使用 < 0 的参数值对一维 geography 实例调用 BufferWithCurves()
以下示例返回一个空 GeometryCollection
实例:
DECLARE @g geography= 'LINESTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)';
SELECT @g.BufferWithCurves(-1).ToString();
B. 使用 < 0 的参数值对二维 geography 实例调用 BufferWithCurves()
以下示例返回一个具有负缓冲区的 CurvePolygon
实例:
DECLARE @g geography = 'CURVEPOLYGON(CIRCULARSTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))';
SELECT @g.BufferWithCurves(-1).ToString()
C. 使用 < 0 的参数值调用 BufferWithCurves(),它返回一个空 GeometryCollection
以下示例显示当 distance 参数等于 -2 时出现的情况:
DECLARE @g geography = 'CURVEPOLYGON(CIRCULARSTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))';
SELECT @g.BufferWithCurves(-2).ToString();
此 SELECT 语句返回 GEOMETRYCOLLECTION EMPTY
D. 使用 = 0 的参数值调用 BufferWithCurves()
以下示例返回执行调用的 geography 实例的副本:
DECLARE @g geography = 'LINESTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)';
SELECT @g.BufferWithCurves(0).ToString();
E. 使用极小的非零参数值调用 BufferWithCurves()
以下示例还返回执行调用的 geography 实例的副本:
DECLARE @g geography = 'LINESTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)';
DECLARE @distance float = 1e-20;
SELECT @g.BufferWithCurves(@distance).ToString();
F. 使用 > 0 的参数值调用 BufferWithCurves()
以下示例返回 CurvePolygon
实例:
DECLARE @g geography= 'LINESTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)';
SELECT @g.BufferWithCurves(2).ToString();
G. 传递有效的字符串参数
以下示例返回与前面相同的 CurvePolygon
实例,但为方法传递一个字符串参数:
DECLARE @g geography= 'LINESTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)';
SELECT @g.BufferWithCurves('2').ToString();
H. 传递无效的字符串参数
以下示例将引发错误:
DECLARE @g geography = 'LINESTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)'
SELECT @g.BufferWithCurves('a').ToString();
请注意,前面的两个示例为 BufferWithCurves()
方法传递字符串文字。 第一个示例有效,因为可以将字符串文字转换为数值。 但第二个示例引发 ArgumentException
。
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈