我们有大量的地理信息存储在MapInfo表中,我们现在想要存储在SQL Server中。我们编写了C#实用程序来从MapInfo文件中读取地理信息并将它们导入SQL服务器。大多数情况下,这是行之有效的。但是,在使用我们在内部开发的工具进行了许多清理工作之后,我们仍然留下了大量被SqlGeography.STIsValid()
认为无效的地理区域。C#SQLGeography:诊断无效几何
对于大多数或所有这些情况,.NET方法SqlGeography.MakeValid()
能够创建有效的地理实例。然而,这方面的文档相当糟糕,我们不满足于仅仅接受MakeValid
所做的修改,而不理解地理被认为无效的原因以及MakeValid
如何修正它们。
通过致电IsValidDetailed
,我们得到一个神秘的错误消息,没有很好的记录。对于很多的情况下,由IsValidDetailed
返回的字符串看起来是这样的:
24404:无效的,因为多边形环(1)与自己相交,或其他一些环。问题发生在几何集合中的条目(19)中
我们尝试导入的所有地理对象都是多面体。通过解析这个错误信息,我们试图找出这些多边形内的问题多边形和环。但是,我们发现索引似乎并不匹配实际有问题的多边形/环。在很多情况下,索引超出了输入几何的数组边界。
是否有更好的方法来查明几何/地理对象被视为无效的具体原因并查明哪些多边形,圆环或点有问题?
感谢您的答复。虽然点的方向可能是错误的原因,但在我们的情况下并非如此。我们有代码可以自动检测方向并在不正确的情况下修复方向。由于某些其他原因,无效的其余几何图形无效。 – jmcstwm