你可以使用Haversine公式来计算两点之间的大圆距离(沿着球体)。对于处理地球作为一个球体的距离问题存在一些问题,但对于500米,你可能没问题(假设你不是试图将医疗包裹投放到船上或其他情况)。
from math import radians, sin, cos, asin, sqrt
def haversine(lat1, long1, lat2, long2, EARTH_RADIUS_KM=6372.8):
phi_Lat = radians(lat2 - lat1)
phi_Long = radians(long2 - long1)
lat1 = radians(lat1)
lat2 = radians(lat2)
a = sin(phi_Lat/2)**2 + \
cos(lat1) * cos(lat2) * \
sin(phi_Long/2)**2
c = 2 * asin(sqrt(a))
return EARTH_RADIUS_KM * c
如果两点之间的距离小于您的阈值,则在范围内。
points_1 = (19.114315,72.911174)
points_2 = (19.112398,72.912743)
threshold_km = 0.5
distance_km = haversine(points_1[0], points_1[1], points_2[0], points_2[1])
if distance_km < threshold_km:
print('within range')
else:
print('outside range')
math.sin()
和math.cos()
需要弧度而不是角度。 - Dmitry Bychenko0.0174532925
相乘,就可以得到它的弧度值。(2*PI / 360) - Henrikmath.radians(degrees)
即可。 - Peter Woodhaversine
模块非常容易且足够准确:from haversine import haversine; distance_km = haversine((lat_a, lng_a), (lat_b, lng_b))
.. 像往常一样pip install haversine
;) - smassey