我如何收缩近似于SQL Server中指定圆圈并被其覆盖的多边形几何?

时间:2015-01-14 12:49:09

标签: sql-server polygon geometry spatial

如何收缩近似于SQL Server中指定圆圈并被其覆盖的多边形几何?

我有一个圆圈

DECLARE @circle geography;

SET @circle = geography::STGeomFromText('CURVEPOLYGON(CIRCULARSTRING(2 4, 4 2, 6 4, 4 6, 2 4))',4326);

如何获得此圈子涵盖的POLYGON

1 个答案:

答案 0 :(得分:1)

注意:需要SQL 2012或更高版本。

现在我完全理解你在寻找什么,你会发现STCurveToLine()方法很有用。

例如:

DECLARE @circle GEOGRAPHY;

SET @circle = GEOGRAPHY::STGeomFromText('CURVEPOLYGON(CIRCULARSTRING(2 4, 4 2, 6 4, 4 6, 2 4))',4326);

SELECT @circle.STCurveToLine().STAsText();

这将返回一个POLYGON实例。根据所需的精度以及对象的复杂程度,您可能需要使用Reduce()函数来减少点数。

SELECT @circle.STCurveToLine().Reduce(1000); -- Or whatever number is appropriate;