Sto cercando di gestire la ricerca di prossimità per un negozio di base in Django. Invece di trascinare PostGIS in giro con la mia app solo per poter utilizzare il filtro della distanza di GeoDjango, mi piacerebbe utilizzare la formula della distanza della sfera dei costi sferici in una query modello. Mi piacerebbe che tutti i calcoli fossero fatti nel database in una query, per efficienza.Filtra i codici di avviamento postale in prossimità di Django con la legge sferica dei coseni.
Un esempio di query MySQL da Internet attuazione della legge sferica di Coseni come questo:
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 query deve fare riferimento al Codice Postale ForeignKey per i valori/LNG lat di ogni negozio. Come posso fare tutto questo in una query di modello Django?
Potresti pubblicare i tuoi modelli? – cethegeek
(a) Questa NON è la formula 'haversine'; è la formula della "legge sferica del coseno"; vedi (per esempio) 'http: // www.movable-type.co.uk/scripts/latlong.html' e guarda i rispettivi articoli di Wikipedia. (b) Confido che sostituirai le coordinate hard-coded dell'utente con le variabili :-) (c) Il gentile lettore dovrebbe essere avvisato che la tua unità di distanza è in qualche modo arcaica (qualcosa che ha a che fare con 1000 * (lunghezza di Roman ritmo standard della legione), credo) :-) –
Jeez, cosa c'è di così difficile in GeoDjango? Basta installarlo :) –