Найти, находится ли точка (широта, долгота) в пределах пути (области) OpenStreetMaps

У меня есть список точек долготы и широты для различных домов, офисов и т. д. Я пытаюсь разделить их, чтобы определить, находятся ли они внутри определенного Так или нет. Я не хочу использовать старую «центральную точку» области, а затем значение радиуса, так как это недостаточно точно.

Так, например, если бы у меня было 4 места в Пути, таком как «Ричмонд-на-Темзе», это выглядело бы так: введите здесь описание изображения

Он должен возвращать только точки B и C. Возможно ли это с помощью Open Street Maps API?


person John Crawford    schedule 23.04.2018    source источник
comment
Возможно ли это с помощью Open Street Maps API? Нет. API OSM в основном используется для редактирования и не предназначен для выполнения произвольных пространственных вычислений.   -  person scai    schedule 24.04.2018
comment
@scai А, понятно. Означает ли это, что мне нужно сначала загрузить все пространственные данные для области пути, а затем использовать часть моего собственного кода, чтобы вычислить, находится ли длинная/широтная точка в области пути или нет?   -  person John Crawford    schedule 24.04.2018
comment
Координат пути должно быть достаточно, чтобы определить, находятся ли точки внутри или снаружи. Никаких дополнительных данных не требуется.   -  person scai    schedule 24.04.2018
comment
Я понимаю. Я предполагаю, что единственная проблема, с которой я столкнулся, это попытка найти функцию, которая может вычислить функцию isInsideWay. Я вижу, что есть много ответов о том, как это сделать, но ни одного, если значения lat и long имеют как отрицательные, так и положительные моменты.   -  person John Crawford    schedule 24.04.2018
comment
Я думаю, вам следует задать новый вопрос о новой проблеме, предпочтительно на gis.stackexchange.com.   -  person scai    schedule 25.04.2018


Ответы (1)


Если вам нравится Java, вы можете загрузить путь как многоугольник и использовать библиотеку JTS (Java Topology Suite) или библиотеку AWT, чтобы вычислить, находятся ли ваши точки внутри или нет.

Вот пример того, как библиотека Atlas использует сочетание того и другого в данном конкретном случае. Для вас это будет выглядеть так:

  1. Преобразуйте каждую пару широта/долгота Пути в объект Location
  2. Добавьте каждый Location в список и создайте с ним новый многоугольник.
  3. Вызовите метод Polygon.fullyGeometricallyEncloses(Location) для этого Polygon с каждой из точек интереса, которые у вас есть.

Библиотека Atlas доступна в Maven Central для загрузки.

person matthieun    schedule 02.05.2018