2015-08-24 3 views
0

Я работаю в приложении Django, которое хранит lat и lng для пользователей. Мне нужно найти близлежащие события для пользователей на основе их ранее определенного радиуса. Для Users и Events я хранил Локатор и Долгота в базе данных MySQL.Пакет Haversine Python в Django ORM-запрос

Я нашел пример raw query, который реализует Haversine Formula. Существует также haversine package for python. Как использовать пакет haversine в обычном Django-запросе?

+0

Вы пробовали использовать его? –

+0

@ MattO'Brien Я не знаю, как интегрировать функции haversine в Django-запрос. – Gocht

ответ

0

Я хотел бы пойти дальше и добавить эту функцию в мой код:

from math import radians, cos, sin, asin, sqrt 

def haversine(lon1, lat1, lon2, lat2): 
    """ 
    Calculate the great circle distance 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 
    return c * r 

This page также связано.

+0

Я также нашел это, но как использовать его в запросе django? – Gocht

Смежные вопросы