2013-06-03 3 views
0

Я использовал http://maps.googleapis.com/maps/api/geocode/json, чтобы получить lat и long и сохранен в DB. Я пытаюсь написать код, который вычисляет между двумя местоположениями. Есть ли хороший api, который вычисляет расстояние между двумя расстояниями. У меня есть несколько мест в Азии и Европе. Расстояние в Google только возвращает расстояние езды Я хочу иметь фактически расстояние. Спасибо заранее.как рассчитать расстояние между двумя местоположениями

+4

Почему вам нужен API? Это формула, которую вы можете найти в Google. Это просто сферическая тригонометрия. – Barmar

+0

Вам не нужен API, просто формула Хаверсина. –

+0

В зависимости от вашего БД - он может даже иметь функции/индексы, которые делают это для вас ... –

ответ

2

Вы можете рассчитать расстояние, используя формулу Haversine

Здесь origindestination и являются широта, длинные кортежи

import math 

def haversine(origin, destination): 

    lat1, lon1 = origin 
    lat2, lon2 = destination 
    radius = 6371 

    dlat = math.radians(lat2-lat1) 
    dlon = math.radians(lon2-lon1) 
    a = math.sin(dlat/2) * math.sin(dlat/2) + math.cos(math.radians(lat1)) \ 
     * math.cos(math.radians(lat2)) * math.sin(dlon/2) * math.sin(dlon/2) 
    c = 2 * math.atan2(math.sqrt(a), math.sqrt(1-a)) 
    d = radius * c 

    return d 

c1 = [43.47066971,-80.54305153] 
c2 = [43.46745,-80.54319] 

print haversine(c1, c2) # 0.358189763734