在Python中两个(lat,long)坐标之间的位置

时间:2018-02-06 11:31:46

标签: python

我需要在Python中执行以下操作。给定两个positios(lat1,lon1)和(lat2,lon2),我需要得到位于分数alpha的给定两点之间的路径上的点(lat0,lon0)。即alpha = 0.5是点之间的中点,但是我需要为任何0< = alpha< = 1计算它。我想使用已经定义的包,如果可能,例如我使用geopy.distance来计算点之间的距离。谢谢!

3 个答案:

答案 0 :(得分:0)

查看this页面上的“中间点”部分。

它以数学方式描述了公式:

  

a = sin((1-f)·δ)/sinδ
  b = sin(f⋅δ)/sinδ
  x = a·cosφ1·cosλ1+ b·cosφ2·cosλ2
  y = a·cosφ1·sinλ1+ b·cosφ2·sinλ2
  z = a·sinφ1+ b·sinφ2
  φi= atan2(z,√x²+y²)
  λi= atan2(y,x)

很容易翻译成Python,并在页面上翻译成JavaScript。

我无法使用GeoPy找到一种方法。

答案 1 :(得分:0)

这里有一个不错的图书馆: great-circle-calculator

您可能需要的功能是:

intermediate_point(p1, p2, fraction=0.5)

答案 2 :(得分:-1)

def find_point(a,b,alpha = 0.5):
    assert(0<=alpha<=1)
    new_a = ((1-alpha) * a[0], (1-alpha)*a[1])
    new_b = ((alpha) * b[0], alpha*b[1])
    return ((new_a[0]+new_b[0]), (new_a[1]+new_b[1]))

测试 -

>>>find_point((1,1),(2,2))
(1.5, 1.5)