2013-02-20 5 views
0

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

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

У меня также есть периметр или область внутри Я собираюсь искать (например, «10» - «10 км»).

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

Есть ли какое-либо решение этого или, может быть, я даже столкнулся с x-y-problem?

+0

Вы можете использовать Pythagoras для определения расстояния между двумя точками - это все, что вы просите? Или вы просите быстрый способ сделать это? (У вас есть миллионы очков для проверки?) Или вам нужно преобразовать между системами координат? –

+0

@MatthewWatson Это не про маршрутизацию или что-то еще, я просто хочу «нарисовать круг размером n (10 км) вокруг моей центральной точки и проверить, находится ли какая-либо другая точка, которую я проверяю, внутри этого круга» – SeToY

ответ

1

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

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

Nearest GPS coordinate based on distance from a given point

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

+0

Это помогло меня много, спасибо. Теперь я просто измеряю расстояние между точками и воспринимаю их как удовлетворенные. – SeToY

0

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

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

Смежные вопросы