Tenemos una tabla de restaurante que tiene datos de latitud larga para cada fila.Consulta SQL para realizar una búsqueda de radio basada en la longitud de la latitud
Tenemos que escribir una consulta que realice una búsqueda para encontrar todos los restaurantes dentro del radio provisto, p. 1 milla, 5 millas, etc.
Tenemos la siguiente consulta para este propósito:
***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 tabla tiene unos 23k filas. El tamaño del conjunto de resultados es extraño algunas veces, p. para una búsqueda de 5.4 millas, devuelve 880 filas y para 5.5 millas, devuelve 21k filas.
Esta tabla contiene datos de restaurante para nyc, por lo que la distribución real no coincide con el conjunto de resultados.
Pregunta: HAY ALGO INCORRECTO Con esta consulta?
DB: MySQL, Longitud: DECIMAL (10,6), Latitud: DECIMAL (10,6)
¿Qué pasa? Para empezar, querrá usar UTM en lugar de coordenadas Lat/Long porque tienen un margen de error más pequeño para aplanar ... –
Consulte la respuesta a [esta pregunta] (http://stackoverflow.com/questions/574691/mysql-great-circle-distance-haversine-formula). Problema similar – Ramin