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

Получить точные геокоординаты по всему маршруту, Google Maps или OpenStreetMap

Предположим, у меня есть маршрут, определенный из одного города в другой. Из API Карт Google я могу восстановить маршрут между ними. Тем не менее, маршрут, возвращенный из Google, является маршрутом вождения, который включает в себя геокоординаты только в местах, где есть еще один шаг в ноге (например, когда мне приходится поворачиваться с одного шоссе на другое).

Мне нужны гео-местоположения (лат/долго) по всему маршруту с определенными интервалами (например, каждые 1/4 мили или 100 м).

Есть ли способ выполнить это с помощью API Карт Google/веб-служб?

Или может ли база OpenStreetMap быть способ сделать это?

С уважением, Мадлен.

4b9b3361

Ответ 1

OSRM дает вам маршруты с геометриями дороги, как они есть в базе данных OpenStreetMap. Например, вы можете получить маршрут как GPX (и после этого обработать этот файл, если хотите). Это будет выглядеть следующим образом:

GET http://router.project-osrm.org/viaroute?hl=en&loc=47.064970,15.458470&loc=47.071100,15.476760&output=gpx

Подробнее: Документы API OSRM.

Ответ 2

Это просто метод google.maps.DirectionsService(). route(). Вам необходимо передать запрос на обслуживание, а затем обратный вызов, который выполняется после завершения запроса службы.

https://developers.google.com/maps/documentation/javascript/directions

Ответ 3

Добавление к ответу Марлио.

Вы можете использовать API Google Maps Directions. Для данного источника и адресата в выводе JSON найдите следующее:

"polyline" : {
  "points" : ""
}

Вы можете использовать декодер для получения координат из полилинии. https://github.com/emcconville/google-map-polyline-encoding-tool Или. вы можете использовать пакет googleway в R для декодирования. https://cran.r-project.org/web/packages/googleway/googleway.pdf

Я не уверен, как установить разрешение на нужный уровень. Но разрешение на выходе API действительно хорошее.

Ответ 4

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

Для произвольного количества пар lon, lat. Для экземпляра следующие три (в Берлине):

  • 13.388860,52.517037
  • 13.397634,52.529407
  • 13.428555,52.523219

Служба маршрута рассчитывает самый быстрый маршрут между этими точками и его возможное возвращение всех узлов вдоль дороги, используя следующий запрос:

http://router.project-osrm.org/route/v1/driving/13.388860,52.517037;13.397634,52.529407;13.428555,52.523219?alternatives=false&annotations=nodes

Это возвращает ответ json, содержащий node идентификаторы всех узлов вдоль маршрута. Результат должен выглядеть примерно так:

{
  "routes": [
    {
      ...
      "legs": [
        {
          "annotation": {
            "nodes": [
              2264199819,
              2045820592,
              21487242,
              ...
    ]
 }

Для получения lat, lon координат узлов OverpassAPI можно использовать.

[out:json];
(
   node(264199819);
   node(...);
   node(...);
   ...
);
(._;>;);
out;

Вот пример запроса с использованием overpass-turbo: http://overpass-turbo.eu/s/toe