如何检查多边形是否超出SQL Server中的半球限制

时间:2011-07-19 23:11:08

标签: sql-server sql-server-2008 geospatial

我将多边形存储在SQL Server 2008数据库中,我知道半球限制。

http://blogs.msdn.com/b/isaac/archive/2009/02/06/the-geography-hemisphere-limitation.aspx

在插入/编辑多边形之前是否有办法检查它是否超出了半球限制?

使用它的应用程序是用JavaScript和C#编写的,因此检查可以使用这些语言或sql。

2 个答案:

答案 0 :(得分:2)

您链接的文章给出了一个答案:使用EnvelopeAngle计算几何对象所对应的角度的一半。如果结果为> = 90,则对象跨越半球。

另一种方法是在错误发生后处理错误(通过捕获异常,或者生成错误),而不是事先检查特定对象是否可能导致错误。

答案 1 :(得分:1)

怎么样

try
{ 
    Microsoft.SqlServer.Types.SqlGeography.Parse(YourPolygon); 
    // everything is ok...
}
catch (Microsoft.SqlServer.Types.GLArgumentException _E)
{
    // Polygon not ok
}

编辑: 上面的代码与您发布的链接中使用的代码相同(仔细查看它们显示的异常) - 当多边形被解析为SqlGeography类型时会发生检查。

编辑2: 添加了正确的异常类型。