我们在MapInfo表中存储了大量的地理位置,我们现在希望将它们存储在SQL Server中.我们编写了C#实用程序来从MapInfo文件中读取地理位置并将它们导入SQL服务器.在大多数情况下,这是运作良好.然而,在使用我们内部开发的工具进行许多清理过程之后,我们仍然留下了大量被认为无效的地理位置SqlGeography.STIsValid().
对于大多数或所有这些情况,.NET方法SqlGeography.MakeValid()都能够创建有效的地理实例.但是,关于这方面的文档非常糟糕,我们不满足于简单地接受修改MakeValid而不理解地理被视为无效的原因以及MakeValid纠正它们的原因.
通过调用IsValidDetailed,我们得到一个没有详细记录的神秘错误消息.对于许多情况,返回的字符串IsValidDetailed看起来像这样:
24404:无效,因为多边形环(1)与自身或其他环相交.问题出现在几何集合的条目(19)中
我们尝试导入的所有地理对象都是多边形.通过解析此错误消息,我们尝试识别这些多边形中的问题多边形和环.但是,我们发现索引似乎与实际有问题的多边形/环实际不匹配.在许多情况下,索引超出了输入几何的数组范围.
有没有更好的方法来确定几何/地理对象被视为无效的具体原因,并确定哪些多边形,环或点有问题?