Ich versuche, Nähe Suche nach einem grundlegenden Laden Locater in Django zu behandeln. Anstatt PostGIS mit meiner App zu übertragen, nur um den Distanzfilter von GeoDjango verwenden zu können, möchte ich in einer Modellabfrage die Entfernungsformel Sphärisches Gesetz der Kosinus verwenden. Ich möchte, dass alle Berechnungen in der Datenbank in einer einzigen Abfrage durchgeführt werden, um die Effizienz zu erhöhen.Filter Postleitzahlen von Nähe in Django mit dem Sphärischen Gesetz der Kosinus
Ein Beispiel MySQL-Abfrage aus dem Internet das Sphärische Kosinussatz wie diese Umsetzung:
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;
Die Abfrage muss die Postleitzahl ForeignKey für jedes Geschäft der lat/lng Werte verweisen. Wie kann ich all dies in einer Django-Modellabfrage durchführen?
Können Sie Ihre Modelle posten? – cethegeek
(a) Das ist NICHT die 'hairsine' Formel; es ist die Formel des "sphärischen Gesetzes der Kosinus"; sehen Sie zum Beispiel "http: // www.movable-type.co.uk/scripts/ latlong.html" und schauen Sie sich die entsprechenden Wikipedia-Artikel an. (b) Ich vertraue darauf, dass Sie die hartkodierten Benutzerkoordinaten durch Variablen ersetzen :-) (c) Der geneigte Leser sollte gewarnt werden, dass Ihre Distanzeinheit etwas archaisch ist (etwas, was mit 1000 * zu tun hat) das Standardtempo der Legion), glaube ich) :-) –
Jeez, was ist so schwer an GeoDjango? Installiere es einfach :) –