J'essaie de gérer la recherche de proximité pour trouver un localisateur de base dans Django. Plutôt que d'utiliser PostGIS avec mon application pour utiliser le filtre de distance de GeoDjango, j'aimerais utiliser la formule de la distance sphérique des cosinus dans une requête de modèle. Je voudrais que tous les calculs soient effectués dans la base de données dans une requête, pour plus d'efficacité.Filtrez les codes postaux par proximité dans Django avec la loi sphérique des cosinus
Un exemple MySQL requête à partir d'Internet application de la loi de Cosinus sphérique comme ceci:
SELECT id, (
3959 * acos(cos(radians(37)) * cos(radians(lat)) *
cos(radians(lng) - radians(-122)) + sin(radians(37)) *
sin(radians(lat)))
)
AS distance FROM stores HAVING distance < 25 ORDER BY distance LIMIT 0 , 20;
La requête doit faire référence à la ForeignKey pour les valeurs NPA lat/lng de chaque magasin. Comment puis-je faire tout cela dans une requête de modèle Django?
Pourriez-vous publier vos modèles? – cethegeek
(a) Ce n'est PAS la formule «haversine»; c'est la formule «loi sphérique des cosinus»; voyez (par exemple) 'http: // www.movable-type.co.uk/scripts/latlong.html' et regardez les articles respectifs de Wikipedia. (b) Je crois que vous allez remplacer les coordonnées de l'utilisateur codées en dur par des variables :-) (c) Le gentil lecteur devrait être averti que votre unité de distance est quelque peu archaïque (quelque chose à faire avec 1000 * rythme normal de la légion), je crois) :-) –
Jeez, qu'est-ce qui est si dur avec GeoDjango? Il suffit de l'installer :) –