Nous avons une table de restaurant qui a des données lat-longues pour chaque ligne.Requête SQL pour la recherche de rayon basée sur Latitude Longitude
Nous devons écrire une requête qui effectue une recherche pour trouver tous les restaurants dans le rayon fourni, par ex. 1 mile, 5 miles etc.
Nous avons la requête suivante à cet effet:
***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);
Le tableau a environ 23k lignes. La taille de l'ensemble de résultats est parfois étrange, par ex. pour une recherche de 5,4 milles, elle renvoie 880 lignes et pour 5,5 milles, elle renvoie 21k lignes.
Cette table contient les données de restaurant pour nyc - de sorte que la distribution réelle n'est pas conforme au jeu de résultats.
Question: Y A-T-IL UNE QUELCONQUE FAUTE? Avec cette requête?
DB: MySQL, Longitude: DECIMAL (10,6), Latitude: DECIMAL (10,6)
Qu'est-ce qui ne va pas? Pour commencer, vous voulez être en utilisant UTM plutôt que Lat/coordonnées longues parce qu'ils ont une marge d'erreur plus pour aplatir ... –
Vérifiez la réponse à [cette question] (http://stackoverflow.com/questions/574691/mysql-grand-cercle-distance-haversine-formule). Problème similaire. – Ramin