【发布时间】:2015-07-30 13:40:15
【问题描述】:
我们有大量的地理信息存储在 MapInfo 表中,我们现在希望将这些地理信息存储在 SQL Server 中。我们编写了 C# 实用程序来从 MapInfo 文件中读取地理并将它们导入 SQL 服务器。在大多数情况下,这运作良好。然而,在使用我们内部开发的工具进行多次清理之后,我们仍然留下大量被SqlGeography.STIsValid() 视为无效的地理区域。
对于大多数或所有这些情况,.NET 方法SqlGeography.MakeValid() 能够创建有效的地理实例。但是,这方面的文档很差,我们不满足于简单地接受 MakeValid 所做的修改,而不了解地理被视为无效的原因以及 MakeValid 做了什么来纠正它们。
通过调用IsValidDetailed,我们会收到一条未详细记录的神秘错误消息。在许多情况下,IsValidDetailed 返回的字符串如下所示:
24404:无效,因为多边形环 (1) 与自身相交或与其他环相交。问题出现在几何集合的条目 (19) 中
我们尝试导入的所有地理对象都是多面体。通过解析此错误消息,我们尝试识别问题多边形和这些多边形内的环。但是,我们发现索引似乎与实际有问题的多边形/环并不匹配。在许多情况下,索引超出了输入几何数组的范围。
是否有更好的方法来查明几何/地理对象被视为无效的具体原因并查明哪些多边形、环或点存在问题?
【问题讨论】: