c# SQLGeography:诊断无效几何

本文关键字:无效 诊断 SQLGeography | 更新日期: 2023-09-27 17:49:34

我们在MapInfo表中存储了大量的地理信息,现在我们想将这些信息存储在SQL Server中。我们编写了c#实用程序来从MapInfo文件中读取地理信息并将其导入SQL server。在大多数情况下,这是有效的。然而,在使用我们内部开发的工具进行了多次清理之后,我们仍然留下了大量被SqlGeography.STIsValid()认为无效的地理位置。

对于大多数或所有这些情况,. net方法SqlGeography.MakeValid()能够创建一个有效的地理实例。然而,关于这方面的文件相当差,我们不满足于简单地接受MakeValid所做的修改,而不了解地理被认为无效的原因以及MakeValid如何纠正它们。

通过调用IsValidDetailed,我们得到一个没有很好记录的神秘错误消息。在许多情况下,IsValidDetailed返回的字符串看起来像这样:

24404:无效,因为多边形环(1)与自己或其他环相交。这个问题发生在一个几何集合

中的条目(19)中。

我们尝试导入的所有地理对象都是多多边形。通过解析此错误消息,我们已经尝试确定问题多边形和这些多边形中的环。然而,我们发现索引似乎与实际存在问题的多边形/环并不匹配。在许多情况下,索引超出了输入几何图形数组的边界。

是否有更好的方法来确定几何/地理对象被认为无效的具体原因,并确定哪些多边形,环或点有问题?

c# SQLGeography:诊断无效几何

我自己也遇到过几次这个错误。这通常源于SQL server要求按逆时针顺序列出点。当点按顺时针顺序排列时,它会生成您所看到的异常。

这是一个很棒的视觉效果:http://danielwertheim.se/sqlgeography -在- sql - server - 2012 -多边形必须-开始- - - - - - -正确的位置——no/

…想要一个实用的解决方案,可以看看这篇博客文章:http://blogs.msdn.com/b/edkatibah/archive/2008/08/19/working——————————无效数据的sql - server - 2008 -地理数据类型-部分1 - b.aspx