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