Abbiamo una tabella ristorante con dati lat-long per ogni riga.Query SQL per l'esecuzione della ricerca del raggio basata su Latitudine Longitudine
Abbiamo bisogno di scrivere una query che esegue una ricerca per trovare tutti i ristoranti all'interno del raggio fornito, ad es. 1 miglio, 5 miglia ecc
Abbiamo la seguente query per questo scopo:
***Parameters***
Longitude: -74.008680
Latitude: 40.711676
Radius: 1 mile
***Query***
SELECT *
FROM restaurant
WHERE (
POW((69.1 * (Longitude - -74.008680) * cos(40.711676/57.3)) , 2) + POW((69.1 * (Latitude - 40.711676)) , 2)
) < (1 *1);
La tabella ha circa 23k righe. La dimensione del set di risultati è a volte strana, ad es. per una ricerca di 5,4 miglia, restituisce 880 righe e per 5,5 miglia restituisce 21k righe.
Questa tabella contiene i dati del ristorante per nyc, quindi la distribuzione reale non è conforme al set di risultati.
Domanda: C'È QUALCHE COSA SBAGLIATO Con questa domanda?
DB: MySQL, Longitudine: decimale (10,6), Latitude: DECIMAL (10,6)
Cosa c'è che non va? Per i principianti, si desidera utilizzare UTM anziché le coordinate Lat/Long perché hanno un margine di errore inferiore per l'appiattimento ... –
Controlla la risposta a [questa domanda] (http://stackoverflow.com/questions/574691/mysql-grande-cerchio-distance-haversine-formula). Problema simile – Ramin