Mysql в запросе расстояния

Опции

$lat = '25.7742658'; $lng = '-80.1936589'; $miles = 30; 

запрос

 SELECT *, ( 3959 * acos( cos( radians($lat) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians($lng) ) + sin( radians($lat) ) * sin( radians( lat ) ) ) ) AS distance FROM locations HAVING distance < $miles ORDER BY distance LIMIT 0, 20 

У меня есть таблица базы данных с 4 столбцами:

  • уникальный идентификатор
  • название города
  • широта (лат)
  • долгота (lng)

Я использую запрос сверху, чтобы вернуть места, находящиеся в пределах заданного количества миль от указанных координат. Кажется, это работает, но я не уверен, насколько это точно. Мне любопытно узнать, хорош ли запрос или если у вас есть лучшее решение.

Related of "Mysql в запросе расстояния"

это выглядит как правильный запрос расстояния в большом круге.

что вы касаетесь точности сигнала?

если вы хотите рассчитать расстояние от точки или найти почти место в одной точке в mysql, вы можете использовать «Пространственные функции MySQL», но это разрешено в MySQL 5.6. для получения дополнительной информации вы можете прочитать эту статью:

https://www.percona.com/blog/2013/10/21/using-the-new-mysql-spatial-functions-5-6-for-geo-enabled-applications/

или этот PDF:

http://www.arubin.org/files/geo_search.pdf