Запутанная / модифицированная проблема алгоритма Хаверсайна

Используя алгоритм Haversine и используя ссылку Вот Я нашел половину своего решения. Так вот в чем проблема:

Пользователь А, который стоит в «Назарете» и имеет 50-километровый радар вокруг него, я могу найти всех других пользователей в этом диапазоне, используя алгоритм, описанный выше. Теперь моя проблема в том, что пользователь, стоящий в точке B (пользователь около Ньюарка), у которого также есть радар в 50 км, пересекается с радаром пользователя A.

Таким образом, наряду с результатами, которые мне удалось получить, которые попадают под радар пользователя А в 50 км, используя вышеуказанный алгоритм, я также хочу включить всех пользователей (таких как пользователь Б), чьи радары пересекаются.

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

Интеграция карт Google и Google мест

Ниже приведен запрос, который я написал, чтобы просто выбрать всех пользователей, которые попадают под радар пользователя А на расстоянии 50 км, и я получаю наиболее точные результаты, которые были первой частью проблемы.

SELECT
*
FROM
users
WHERE
acos(sin(".$user_location_A['latitude'].") * sin(radians(latitude)) +
cos(".$user_location_A['latitude'].") * cos(radians(latitude)) * cos(radians(longitude) -
(".$user_location_A['longitude']."))) * 6371 <= 50

Объяснение вышеупомянутого запроса следующее:

  1. Sin (радианы (latitude)), cos (радианы (latitude)) — широта здесь — это широта имени столбца в таблице пользователей для каждого пользователя
  2. Cos (радианы (longitude) — долгота здесь — это долгота имени столбца в таблице пользователей для каждого пользователя
  3. 50 в конце запроса — радиус 50 км, ради которого я хочу создать радар.

1

Решение

Если все радары имеют радиус 50 км, то любой радар, центр которого находится в пределах 100 км от А, будет пересекаться с ним. Если они имеют разные радиусы, то интересующее расстояние составляет 50 км (радиус A) + R км (где R — радиус радиолокатора B).

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]