GPS 计算的半正矢公式:距离和方位
问题:
计算距离两个 GPS 点之间的方位通常涉及利用半正弦距离公式。然而,在获得正确的方位角时可能会出现问题,特别是在产生负值的情况下。
解决方案:
要计算距离,可以使用半正弦公式:
from math import radians, cos, sin, asin, sqrt def haversine(lon1, lat1, lon2, lat2): """ Calculate the great circle distance in kilometers between two points on the earth (specified in decimal degrees) """ # convert decimal degrees to radians lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2]) # haversine formula dlon = lon2 - lon1 dlat = lat2 - lat1 a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2 c = 2 * asin(sqrt(a)) r = 6371 # Radius of earth in kilometers. Use 3956 for miles. Determines return value units. return c * r
要确定方位,请将方位变量调整为如下:
Bearing = atan2(sin(lon2-lon1)*cos(lat2), cos(lat1)*sin(lat2) - sin(lat1)*cos(lat2)*cos(lon2-lon1)) Bearing = degrees(Bearing)
此修改可确保方位角位于 0 到 360 度之间。
以上是如何利用半正矢公式准确计算GPS距离和方位?的详细内容。更多信息请关注PHP中文网其他相关文章!