Проверьте, находится ли координата в пределах области

У меня возникла проблема с недвижимостью.

У меня есть реальный адрес, который я преобразую в земные координаты (например, "Лондонский глаз" в "-0.119543;51.503324").

Я также получил периметр или область внутри, которую я собираюсь искать (например, "10" означает "10 км").

Теперь я получил несколько координат (абсолютно случайных вокруг Земли) и хочу проверить, находится ли текущая координата в пределах 10 км от координат лондонского глаза.

Есть ли какое-то решение этого или, может быть, я даже сталкиваюсь с проблемой XY

3 ответа

Решение

Вы можете использовать формулу Haversine для расчета расстояния между двумя точками:

http://www.stormconsultancy.co.uk/blog/development/code-snippets/the-haversine-formula-in-c-and-sql/

Ближайшая координата GPS на основе расстояния от заданной точки

Однако для скорости я думаю, что вам нужно рассчитать максимальные / минимальные значения долготы и широты (то есть квадрат вокруг London Eye), так как это будет намного быстрее вычислить, если есть много точек для проверки. Затем используйте формулу Хаверсайна на этом небольшом подмножестве точек (в пределах вашего квадрата), чтобы найти их в пределах 10 км.

Кажется, что это может помочь вам: http://www.doogal.co.uk/dotnetcoords.php

Он основан на http://www.jstott.me.uk/jcoord, который позволяет рассчитывать расстояние между точками. Не верьте мне на слово, хотя и не использовали.

Существует хорошо известное решение проблемы. Haversine_formula

Я думаю, что вы также можете искать код C# для того же. Надеюсь, поможет.

Другие вопросы по тегам