Геолокация и формула Хаверсин - PullRequest
2 голосов
/ 11 октября 2010

Я пытаюсь создать базовое веб-приложение, которое обнаруживает геолокацию пользователей, запрашивает базу данных MySQL и возвращает все автобусные остановки, скажем, в пределах 5 километров.

Канал GTFS, включая долготу и широту, вставленв базу данных mySQL, и я нашел пример HTML-страницы, на которой указаны долгота и широта браузера, обращающегося к веб-приложению.

Мне нужна помощь в написании запроса mySQL, который принимает эту информацию и возвращает результаты.

Ответы [ 2 ]

2 голосов
/ 06 июля 2011

Хотя формула большого круга является точной, в этом случае вам не нужна точность. Минута широты составляет около 1 мили (1,6 км). Минута долготы составляет около cos (LAT) * 1 миля. Я хотел бы рассмотреть возможность выбора для поля LAT +/- 3 минуты и LONG +/- (3 / cos (LAT)) минут. Если вам действительно нужен круг, а не прямоугольник, просто представьте, что это евклидовы координаты. Ошибка в этом масштабе меньше, чем длина шины.

Единственная сложность в том, что длина минуты долготы меняется в зависимости от того, как далеко вы находитесь от экватора.

0 голосов
/ 08 марта 2011

В этой ссылке вы найдете:

SELECT id, (3959 * acos (cos (радианы (37)) * cos (радианы (широта)) * cos (радианы (lng) - радианы (-122)) + sin (радианы (37)) * sin (радианы (широты)))) AS расстояние от маркеров расстояние HAVING <25 ORDER BY distance LIMIT 0, 20; </p>

...