So filtern Sie ein Django-Modell mit Breiten- und Längenkoordinaten, die innerhalb eines bestimmten Radius liegen

8

Ich habe das folgende Modell.

%Vor%

Wenn mein aktueller Breitengrad & amp; Länge ist:

%Vor%

Ich habe etwas recherchiert und bin auf die Haversine Gleichung berechnet den Abstand zwischen zwei Standortkoordinaten. Unten ist die Gleichung, die ich gefunden habe:

%Vor%

Ich möchte alle Location-Objekte zurückgeben, die in einen Umkreis von 10 km fallen. Wie kann ich sie so filtern, dass nur alle Location-Objekte zurückgegeben werden, die in diesen Umkreis von 10 km fallen?

%Vor%

Gibt es überhaupt eine Möglichkeit, die Haversine-Gleichung in die Filterung zu integrieren, so dass nur die Ortsobjekte zurückgegeben werden, die in einen Umkreis von 10 km fallen?

Ich bin auf der Suche nach einer detaillierten Antwort. Schätze die Hilfe.

    
noahandthewhale 16.07.2013, 16:35
quelle

2 Antworten

7

Aber Sie können Brian immer besser vorschlagen, indem Sie die Ergebnisse aus dem vorherigen Schritt filtern (die eine kleinere Untermenge sein sollten) und für jede Überprüfung, ob sie sich innerhalb des Radius befinden.

Ihr Benutzer hat einen schwarzen Punkt. Die von Brian angegebene quadratische Annäherung ergibt grüne, aber auch orange Punkte. Die Abweichung in der Entfernung kann signifikant sein, im schlimmsten Fall muss der Benutzer sqrt (2) mal weiter gehen als erwartet (zusätzliche 40% der Entfernung). Bei allen orangen und grünen Punkten ist es daher sinnvoll zu prüfen, ob ihre Entfernung vom Schwarzpunkt (z. B. euklidisch, wenn es sich um wirklich kurze Entfernungen handelt, z. B. die Navigation in der Stadt) nicht größer ist als der angenommene Radius.

UPDATE:

Wenn Sie Haversine Entfernung oder (besser) erwähnten GeoDjango hava verwenden möchten, schauen Sie sich diesen Ausschnitt an und vergleichen Sie zwei Django-Ansichten, die sich mit der Suche in der Nähe befassen:

Ссылка

    
andilabs 29.01.2014, 11:12
quelle
8

Sie können Bereichsabfragen mit filter durchführen.

%Vor%

Leider ergibt dies die Form eines geometrischen Quadrats (anstelle eines Kreises)

    
Brian 16.07.2013 16:41
quelle

Tags und Links