我正在使用空间数据类型DbGeography作为模型的一部分使用新的Entity-Framework 5,该模型在一个实例中存储一个POINT,在另一个实例中存储一个POLYGON。

设置我的POLYGON的值时,所有保存都没有错误,但是只有当我按顺时针顺序在 map 上绘制多边形时,才会出现这种情况。如果我沿逆时针方向绘制POLGON,则会收到错误消息,提示SQL级别指示数据是无效的地理类型。

现在,在对问题进行了自己的研究之后,它似乎源于根据Polygons环取向非常严格的地理数据类型。最常见的解决方案似乎是将“多边形”创建为几何图形,然后将其转换为地理类型。

我正在寻找一种C#解决方案,可以在将数据发送到sql之前将其应用于数据。基本上可以自动校正坐标数组的圆环方向的东西。

我 try catch 错误,然后通过反转数组来重建字符串。在某些情况下这是可行的,但首先它不可靠,其次捕获错误会严重影响性能。

谢谢
克里斯

最佳答案

嗨,我有同样的问题,并通过使用解决了

var sqlGeography = SqlGeography.STGeomFromText().MakeValid()
var invertedSqlGeography = sqlGeography.ReorientObject();

有关更多详细信息,请参见here

关于polygon - 如何使用C# Entity Framework 5 DbGeography空间数据校正多边形环方向,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12383776/

10-12 20:42
查看更多