【发布时间】:2016-05-13 06:56:10
【问题描述】:
我正在尝试根据中点和半径在 SQL Server 中创建一个圆。
这似乎是一个接近的解决方案,但它创建了一个椭圆或一个椭圆与一个圆形。还有其他方法可以创建一个圈子吗?
DECLARE @g geometry;
SET @g = geometry::STGeomFromText('POINT(-88.0 44.5)', 4326);
select @g.BufferWithTolerance(5, .01, 1)
我目前使用的是 SQL Server 2008。
这段代码也演示了这个问题。空间结果看起来像一个圆圈,但是当我在谷歌地图上绘制圆圈时,它是椭圆形的。另外,当我使用STContains 来查看圆圈中有哪些点时,它肯定是沿着椭圆的轮廓。
IF EXISTS (SELECT * FROM [tempdb].[sys].[objects] WHERE [name] = N'##circle')
DROP TABLE ##circle;
CREATE TABLE ##circle
(
[Polygon] [geometry] NOT NULL
)
DECLARE @g geometry;
SET @g = geometry::STGeomFromText('POINT(-88.0 44.5)', 4326);
insert into ##circle (Polygon)
values (@g.BufferWithTolerance(.5,.01,1))
select Polygon from ##circle
【问题讨论】:
-
我在 2012 年运行了你的两个代码 sn-ps,它产生了圈子。您的全局临时表可能有一些时髦的东西。我会切换到本地/会话特定的临时表,看看您的问题是否仍然存在。
标签: sql sql-server-2008 spatial