查找两个位置的交集

时间:2015-07-06 16:06:21

标签: math gps geometry latitude-longitude intersection

我想找到Android中两个地点的交叉点。

我不想考虑图中所示的圆圈相交或包含或完全重叠的情况。

我的问题是,位置以度为单位,半径(精度)以米为单位。我不知道如何混合这些单位。

在我的情况下,环境是Android,但问题不是Android特定的。

Locations with Radiuses in m

1 个答案:

答案 0 :(得分:4)

您必须将latitdue,经度转换为笛卡尔坐标系,并使用单位米 这是使用中心纬度=(latitudeCircle1 + latCircle2)/ 2.0的圆柱等距投影完成的。 (中心经度相同)

http://mathworld.wolfram.com/CylindricalEquidistantProjection.html

在上面的链接中,为了得到一个基于仪表的系统,你还没有乘以常数" meterPerDegreeAtEquator"这是40000000 / 360.0

现在你有了坐标x,y,就像你在学校一样。

然后计算在学校学到的圆形交叉点,或者在网络上找到的圆形交叉点。例如:https://math.stackexchange.com/questions/256100/how-can-i-find-the-points-at-which-two-circles-intersect

然后使用反投影将笛卡尔交点转换回lat,lon。

这适用于两个圆圈之间的距离不超过10-100公里。

注意:以下常见错误,我在与您的示例代码的讨论中看到: 请注意,x与经度相关,y与纬度相关。 虽然我们说lat / long。在这样的转换公式中,您应该在参数名称等中使用long,lat顺序。 另请参阅Lat Long or Long Lat