Veo muchas soluciones para obtener las filas más cercanas de un POINT para convertir a X() e Y() y hacer cálculos trigonométricos de distancias... Según tengo entendido, ¿esto no parece aprovechar el índice espacial?
¿Cómo se aprovecha el índice espacial, en el sentido más común de devolver filas cuyo POINT espacial está dentro de un radio desde un POINT central?
En otras palabras, ¿cómo se obtiene algo como esto, donde LatLng es la ubicación de latitud y longitud almacenada como PUNTO para cada fila y CenterPoint el epicentro?
Consulta de pseudocódigo: SELECT * FROM geotable WHERE d=Distance(LatLng,CenterPoint) < 10 ORDER by d
Puedes usar st_distance_sphere
SELECT * FROM geotable WHERE st_distance_sphere(POINT(-82.337036, 29.645095 ), POINT(`longitude`, `latitude` ))/1000 < 10Aquí puedes ver un ejemplo de trabajo