1

我正在使用移植到 C# 的NetTopolgySuite,并且需要确定某些坐标纬度/经度是否落在定义为坐标纬度/经度值数组的指定区域内。

所以我正在尝试使用CGAlgorithms.IsPointInRing方法,它在大多数情况下都非常有效。当我有一个跨越国际日期变更线的区域时,问题就出现了,例如从东 170 向东到西 170 的第一条线。当我调用 IsPointInRing 时,即使被测坐标在该区域内,它也会返回 FALSE。

IsPointInRing 的文档说

该环可以朝向任一方向。

我假设是顺时针或逆时针。我只能假设该环被错误地确定为从 170 East 向 WEST 到 170 West 的第一条线并且没有穿过 IDL。我的线应该是小弧线,而不是大弧线。

谁能建议我如何测试可能会或可能不会越过国际日期变更线的坐标数组中的坐标包含,或者我是否错误地使用了该函数。我宁愿继续使用 NetTopologySuite。

4

1 回答 1

1

经过测试,如果“MINOR”弧线穿过 180W/180E 子午线,我可以确认 NetTopologySuite IsPointInRing 程序被认为是作为“MAJOR”弧线运行的。作为一种解决方法,在测试环上的点时,我只是在调用函数之前将所有经度值从 180W..0W 范围转移到运行 180E..360E,即 170W = 190E 移位,170E = 170E 未移位。虽然技术上不正确,但它允许我调用 IsPointInRing 程序并获得正确答案。

于 2012-11-29T14:13:10.650 回答