いくつかのジオポイントが互いに 5 メートル以内にあるかどうかを判断する Python 関数を作成しようとしています。13.09073, -86.3560933 と 13.09237, -86.3576067 のような座標がいくつかあります。Haversine 関数を使用してみましたが、正しい値が得られるかどうかわかりません。
これまでの機能は次のとおりです。
from math import sin, cos, pow, atan2, sqrt
def haversine(pos1, pos2):
lat1 = float(pos1['lat'])
long1 = float(pos1['long'])
lat2 = float(pos2['lat'])
long2 = float(pos2['long'])
d_lat = (lat2 - lat1)
d_long = (long2 - long1)
a = pow(
sin(d_lat / 2), 2) + cos(lat1) * cos(lat2) * pow(sin(d_long / 2), 2)
c = 2 * atan2(sqrt(a), sqrt(1 - a))
km = 6367 * c
print 'km %f' % km
print 'mts %f' % (km * 1000)
print haversine(
{'lat': 0.0, 'long': 0.0}, {'lat': 0.0, 'long': 0.0000007852992})
その奇妙な数字は、「5メートル」の距離であるはずです. 私の形式はすでにラジアンになっていると思うので、degree_to_rad の変換機能を削除します。