c#:SQL Server空间函数:某些记录上的多边形环错误

本文关键字:多边形 错误 记录 Server SQL 空间 函数 | 更新日期: 2024-09-26 01:20:54

我有一个C#控制台应用程序,它解析.JSON文件并将坐标插入SQL Server 2012数据库的Geometry字段。一切都很好,除了我现在发现对于一些记录,我得到了一个错误:

 Message=24119: The Polygon input is not valid because the start and end points of the exterior ring are not the same. Each ring of a polygon must have the same start and end points.

以下是相关的C#代码:

cmd.Parameters.Add(new SqlParameter("@ShapeGeom", System.Data.SqlDbType.Udt));
cmd.Parameters["@ShapeGeom"].UdtTypeName = "Geometry";               
cmd.Parameters["@ShapeGeom"].Value = GetGeometryFromText("POLYGON((" + coords_final_formatted + "))");

CCD_ 1函数为:

 public static SqlGeometry GetGeometryFromText(String pText)
    {
        System.Data.SqlTypes.SqlString ss = new SqlString(pText);
        SqlChars sc = new SqlChars(ss);           
        return SqlGeometry.STPolyFromText(sc, 3857);
    }

我可以看到,一些记录的coords_final_formatted变量确实存在第一个坐标与最后一个坐标不匹配的情况;因此,多边形没有"闭合"。我已经做了一些研究,有些人建议我在上面的代码中添加一个MakeValid(),但这没有什么区别。我运气不好吗?我不知道我是否真的应该"按摩"数据,插入最终坐标,以匹配第一个坐标?

感谢

c#:SQL Server空间函数:某些记录上的多边形环错误

没关系。我想我明白了:数据可能很草率:在ArcMAP中,多边形并不是为了"闭合"它们而绘制的,因此环中的最后一组坐标与开始的坐标不匹配。

我已经在C#中"按摩"了数据,这样,如果Ring的最后一个元素与其第一个元素不匹配,那么就可以通过编程复制第一个元素,使其成为最后一个。数据现在进入SQL Server,我觉得还可以。我可能会告诉ArcMap的作者关闭多边形。

HTH。

*不起作用——当我查看数据库中的数据时,ArcMAP中出现错误:一条或多条线/多边形正在收缩*