是地球表面上多边形内部或外部的点

时间:2010-06-18 03:48:05

标签: java math geometry geocoding

如何确定某个点是位于地球表面的多边形内部还是外部?

多边形的内部可以通过右手规则确定,即。当您在多边形周围走动时,多边形的内部位于右侧。

多边形可能

  1. 圈出任一极
  2. 穿过180经度
  3. 覆盖全球50%以上的地区
  4. 由于地球是一个球体,正常的光线穿越算法无法正常工作。

2 个答案:

答案 0 :(得分:3)

事实上,正常的光线跟踪和缠绕规则方法在球体表面上工作得很好,只需稍加调整即可。

在球体表面上,“直线”是一个大圆,距离是以角度单位而不是米或英寸来衡量的。要从球体表面上的任意点绘制光线,只需通过该任意点和球体表面上的任何其他点形成一个大圆。为了保持数学清晰,请选择距离您正在测试的位置的pi / 2的第二个点。将通常的偶数规则应用于大圆和测试多边形。

缠绕规则也可以直接从平面中的直线转换为球体上的大圆(段)。

现在您只需要基本球面几何操作的Java实现。我在这方面没有任何建议,但我想互联网会有所帮助。数学从Mathworld开始。

另一种方法是将点和多边形从球体表面投影到平面 - 这就是地图投影的作用 - 内部的拓扑关系不会受到这种转换的影响。

哦,如果您的多边形描述了一个很棒的圆圈,你将不得不决定该做什么

答案 1 :(得分:2)

使用飞机而不是光线。由两个点定义的球体表面上的“线”是一个大圆弧(圆心,其中心是球体的中心),并且也包含在包含这两个点和球体中心的平面中

测试该点是否比“多边形”每个边缘的相应平面“更大”或“更小”,以确定它所在的“线”的哪一侧。