Mein models.py
hat Benutzer und Geschäftsmodelle, die dieses Feld haben:GeoDjango & SpatiaLite - Filterung in der Nähe Objekte
location = PointField(geography=True)
Ich erhalte Google Maps-Koordinaten (in EPSG 4326) über Geocode Service von einer Adresse, die der Benutzer gibt an.
Dann speichere ich es im obigen Feld (auch EPSG 4326).
Nun, was ich will, ist alle Business-Objekte innerhalb eines bestimmten Radius zu erhalten (von 1 km zum Beispiel), basierend auf dem Standort des Nutzers:
Business.gis.filter(location__distance_lt=(request.user.location, D(km=1)))
Aber es funktioniert nicht, es gibt mir diese Fehler:
ValueError: SpatiaLite does not support distance queries on geometry fields with a geodetic coordinate system. Distance objects; use a numeric value of your distance in degrees instead.
Also weiß jemand, wie man das richtig löst? Danke im Voraus!
I Umwandlung in projizierten System zurückgegriffen, bevor Abfrage zu tun. Es funktioniert so, obwohl es nicht so präzise ist, aber es ist kein Problem. – MikiSoft
Hey @MikiSoft, ich habe ein bisschen eine späte Antwort gepostet, guck mal rein. –
@JohnMoutafis Hey, ich habe es vor langer Zeit in der Weise gelöst, wie ich oben beschrieben habe, aber ich habe deine Antwort dennoch als Lösung markiert, um dir für die Mühe zu danken. :) – MikiSoft