Подтвердить что ты не робот

Spring Данные - MongoDb, находящие ближайшие местоположения вокруг маршрута

У меня есть модель, содержащая точки geojson. Поиск ближайших с данными spring довольно прост, но как можно получить ближайшее место для маршрута передачи?

Я получаю информацию о маршруте из google:

http://maps.googleapis.com/maps/api/directions/xml?origin=48.208174,16.373819&destination=48.340670,16.717540&sensor=false&units=metric&mode=driving

4b9b3361

Ответ 1

Google maps api возвращает "шаги" маршрута, который имеет координаты краев этого участка. Вы можете использовать эти края для создания экстраполированных точек на этом прямолинейном участке. Позволяет называть их p1, p2, p3, p4... pN. Затем вы запускаете $near query в своей базе данных для этих пунктов, вы будете получить ближайшие места вокруг этого маршрута.

введите описание изображения здесь

База данных открытой улицы дает информацию о координатах маршрута, которые вы можете использовать для дополнения ваших данных. Подробный ответ здесь: Получить точные гео-координаты по всему маршруту, Google Maps или OpenStreetMap

Ответ 2

Информация о маршруте с карт googleapi разбита на этапы, которые имеют начальное местоположение и конечное местоположение с координатами широты/долготы.

Вычисление расстояния точек в вашей модели ко всем местоположениям начала и конца маршрута даст вам представление о том, как далеко от точки маршрута. Минимальное "расстояние" от начальных/конечных точек маршрута будет ближайшим к маршруту маршрутом.

Вы можете оптимизировать вычисление, отбросив любые точки, когда вычисленное расстояние больше предыдущего минимума кумулятивного расстояния.

Ответ 3

Сначала вам нужно получить этот результат, а затем поместить его в некоторый массив, содержащий Lat + Lng.

Во-вторых, создайте метод в вашем репозитории, содержащий параметр, который вы хотите найти, с помощью термина "Внутри".

Пример:

List<MyObject> findByLocationWithin(Box box);

Этот метод представляет собой соответствующее условие:

{"location" : {"$geoWithin" : {"$box" : [ [x1, y1], [x2, y2]}}}

Если вам нужна дополнительная информация, вы получаете доступ к следующей ссылке:

http://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#mongodb.repositories.queries

https://docs.mongodb.org/manual/reference/operator/query/box/