white_wolf_17
@white_wolf_17

Как найти точки в радиусе N-km от заданных координат?

Есть таблица в базе данных, у которой есть поля lat и lng. Нужно выбрать все точки в радиусе 1км от переданных координат.
Есть ли какие-нибудь библиотеки на php для этого?
Нашел только вот это https://toster.ru/q/65934, но здесь используются функции в мускуле.
  • Вопрос задан
  • 433 просмотра
Пригласить эксперта
Ответы на вопрос 2
nazarpc
@nazarpc
Open Source enthusiast
Если радиус 1км - то искажения поверхности будут небольшие. Если точность большая не критична - берете экватор и длину поверхности земли вертикали, делите 360 на полученные числа, получите сколько градусов в километре. А потом точка ±нужное количество градусов, то есть будет WHERE с четырьмя условиями.

Правильный и точный расчёт координат в расстояние более сложен, но подозреваю, что вам оно и не нужно.
Ответ написан
Комментировать
AmdY
@AmdY
PHP и прочие вебштучки
В том ответе есть готовая формула
SET earth_radius = 6371.009;

SET axis = (SIN(RADIANS(lat2-lat1)/2) * SIN(RADIANS(lat2-lat1)/2) +
COS(RADIANS(lat1)) * COS(RADIANS(lat2)) *
SIN(RADIANS(long2-long1)/2) * SIN(RADIANS(long2-long1)/2));

SET distance = earth_radius * (2 * ATN2(SQRT(axis), SQRT(1-axis)));
RETURN ROUND(distance, 3);

не проблема переписать её на php
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы