[英]How to calculate intersection coordinate between two given geo coordinates and bearing angle
我想計算以下坐標的交點。 我能夠計算方位角,即這兩個坐標之間的航向和距離。 但不知道如何計算坐標的交點。
QGeoCoordinate sourceCoord(19.999601675,73.726176879);
QGeoCoordinate destinationCoord(19.999139102,73.725825826);
distance = 0.06318 km
bearing angle (heading) 1 to 2 = 215
bearing angle (heading) 2 to 1 = 35
要計算距離,我使用這個公式:
//φ為緯度,λ為經度,R為地球半徑
a = sin²(Δφ/2) + cos φ1 ⋅ cos φ2 ⋅ sin²(Δλ/2)
// 兩個坐標之間的距離
c = 2 ⋅ atan2( √a, √(1−a) )
d = R ⋅ c
為了計算方位角(航向),我使用了公式:
θ = atan2( sin Δλ ⋅ cos φ2, cos φ1 ⋅ sin φ2 − sin φ1 ⋅ cos φ2 ⋅ cos Δλ )
如何從方位角和航向計算兩個地理坐標之間的交點?
這個問題已經在這里得到了大部分的回答。
如果您假設地球是球形的,您可以執行類似於@chux - Reinstate Monica建議的操作:
在 Python 中,它可能看起來像這樣(我去掉了math.
以使其更易於閱讀):
def midpt(lat1, lng1, lat2, lng2):
if lat1 == -lat2 and abs(lng1 - lng2) == 180:
return [0, (radians(lng1) + radians(lng2)) / 2]
# convert to cartesian
cart1 = [cos(radians(lat1)) * cos(radians(lng1)),
cos(radians(lat1)) * sin(radians(lng1)),
sin(radians(lat1))
]
cart2 = [cos(radians(lat2)) * cos(radians(lng2)),
cos(radians(lat2)) * sin(radians(lng2)),
sin(radians(lat2))
]
# add the positions
pt_sum = [cart1[0] + cart2[0],
cart1[1] + cart2[1],
cart1[2] + cart2[2],
]
r = sqrt(pt_sum[0] ** 2 + pt_sum[1] ** 2 + pt_sum[2] ** 2)
# convert back to lat/lng
int_lat = degrees(asin(pt_sum[2]/r))
int_lng = degrees(atan2(pt_sum[1], pt_sum[0]))
return [int_lat, int_lng]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.