Merhaba. Python’da haversine formülünü kullanmaya çalışıyorum. Vikipediden bakarak formülü aşağıdaki gibi yazmaya çalıştım. Ancak program benim beklediğim sonuçlardan çok farklı sonuçlar veriyor. Örneğin
python haversine.py 0,0 0,1
Çıktısı normalde 111 km olması gerekirken 6371 çıkıyor. Kodlar:
import math
import sys
def getargs(num):
xy = ["e","b"]
argv1 = [float(i) for i in sys.argv[num].split(",")]
val1 = list(zip(xy,argv1))
return {k:v for k, v in val1}
def hav(arg):
return math.sin(arg/2)**2
def formula(loc1, loc2, r):
degree = hav(loc2["e"]-loc1["e"]) + (1-hav(loc1["e"]-loc2["e"])-hav(loc1["e"]+loc2["e"])) * hav(loc2["b"]+loc1["e"])
result = 2*r*math.asin(degree**(1/2))
return result
formula(getargs(1),getargs(2),6371)