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

Доступ к данным Google Traffic через веб-службу

Есть ли способ получить доступ к данным трафика, которые предоставляет Google через веб-службу?

Кажется, что есть GTrafficOverlay, который помещает трафик поверх маршрута на встроенную карту google, но нет прямой веб-службы, которую я могу использовать, скажем, для источника и адресата и найти трафик между ними

Есть ли какой-нибудь другой источник, из которого я могу получить эти данные?

4b9b3361

Ответ 1

Нет способа (или, по крайней мере, не достаточно простого и удобного способа) получить необработанные данные трафика из API Javascript Google Maps v3. Даже если вы можете это сделать, это может нарушить некоторые положения Условий обслуживания для Карт Google. Вам нужно будет получить эту информацию из другой службы. Я сомневаюсь, что есть бесплатный сервис, который предоставляет эту информацию в текущее время, но мне бы это понравилось, если бы кто-то доказал, что я ошибаюсь.

Как указывает @crdzoba, Bing Maps API предоставляет некоторые данные о трафике. Возможно, это может удовлетворить ваши потребности. Из документации не видно, сколько данных трафика раскрывается, поскольку это только данные о "инцидентах". Медленный трафик из-за строительства будет там, но мне не кажется очевидным, будет ли медленный трафик из-за простотого объема.

UPDATE (март 2016 года): многое произошло после того, как этот ответ был написан в 2011 году, но основные точки, похоже, задерживаются: вы не найдете необработанных данных трафика в бесплатно API (по крайней мере, не для США и, возможно, не для большинства других мест). Но если вы не против платить немного и/или если вам просто нужны такие вещи, как "время в пути для определенного маршрута с учетом трафика", у вас есть варианты. @Чтобы ответить, например, указывает на Google Maps for Work в качестве платного API который позволяет вам получать время поездки, принимая во внимание движение.

Ответ 2

По-видимому, информация доступна с помощью API Google Directions API в своем профессиональном выпуске Карты для работы. Согласно документации API:

Примечание. Карты для рабочих пользователей должны включать в себя параметры клиента и подписи с их запросами вместо ключа.
[...]
duration_in_traffic указывает общую продолжительность этой ноги, учитывая текущие условия движения. Длительность в трафике будет возвращена только в том случае, если верно следующее:

  • Запрос направления включает параметр departure_time, установленный в значение в течение нескольких минут от текущего времени.
  • Запрос включает действительный клиентский интерфейс Google Карт для работы и параметр подписи.
  • Условия трафика доступны для запрошенного маршрута.
  • Запрос направления не включает путевые точки остановки.

Ответ 4

В Индии мы используем http://www.itrafficnews.com. Но данные публикуются пользователями. Я не думаю, что Google предоставит данные.

Ответ 5

Вместо того, чтобы пытаться вытащить необработанные данные трафика, вы можете попробовать другой подход. API Google Directions API позволяет вам запрашивать api с определенным маршрутом и в результате возвращает строку JSON или XML-элемент. Этот результат включает элемент - 'duration_in_traffic' Это указывает на общую продолжительность конкретного этапа поездки с учетом текущих условий движения. (для информации о "ноге" и других элементах строки JSON, возвращаемых API-интерфейсом Directions, ссылка ниже)

https://developers.google.com/maps/documentation/directions/#JSON Я не пробовал это сам, а только что-то, что я нашел в документации.

Ответ 6

Возможно, вы захотите взглянуть на ЗДЕСЬ КАРТА СЕРВИС. У них есть прямые данные о трафике, которые вы можете использовать, и это именно то, что вам нужно: https://developer.here.com/api-explorer/rest/traffic/traffic-flow-bounding-box

Например, запросив область интереса, вы можете получить что-то вроде этого:

{
  "RWS": [
    {
      "RW": [
        {
          "FIS": [
            {
              "FI": [
                {
                  "TMC": {
                    "PC": 32483,
                    "DE": "SOHO",
                    "QD": "+",
                    "LE": 0.71682
                  },
                  "CF": [
                    {
                      "TY": "TR",
                      "SP": 9.1,
                      "SU": 9.1,
                      "FF": 17,
                      "JF": 3.2911,
                      "CN": 0.9
                    }
                  ]
                }
              ]
            }
          ],
....

Этот пример показывает текущую среднюю скорость SU 9,1, где скорость FF свободного потока будет равна 17. Коэффициент JF Jam равен 3,3, что все еще считается свободным потоком, но становится вялым. Используемые единицы (мили/км) могут быть определены в вызове API. Чтобы избежать работы с местоположениями TMC, вы можете запросить геокоординаты участков дороги, добавив в запрос responseattributes=sh.

Используемые сокращения можно найти здесь. Интерпретация карт трафика в режиме реального времени здесь:

  • "RWS" - список предметов Roadway (RW)
  • "RW" = это составной элемент для потока по всей проезжей части. Элемент проезжей части будет присутствовать для каждой проезжей части с доступной информацией о движении транспорта
  • "FIS" = список элементов Flow Item (FI)
  • "FI" = единица потока
  • "TMC" = упорядоченная коллекция мест TMC
  • "ПК" = код местоположения точки TMC
  • "DE" = Текстовое описание дороги
  • "QD" = направление очереди. "+" или "-". Обратите внимание, что это противоположно направлению движения в полностью определенном идентификаторе. Например, для местоположения 107 + 03021 QD будет "-"
  • "LE" = длина участка дороги. Единицы определены в заголовке файла
  • "CF" = текущий поток. Этот элемент содержит сведения о скорости и информацию о факторе замятия для данного элемента потока.
  • "CN" = достоверность, показатель того, как была определена скорость. -1.0 дорога закрыта. 1,0 = 100% 0,7 -1 00% Исторический Обычно значение от 0,7 до 1,0 "FF" = скорость свободного потока на этом
    участок дороги.
  • "JF" = число от 0,0 до 10,0, обозначающее ожидаемое качество поездки. При закрытии дороги коэффициент заторов будет равен 10. По мере приближения числа 10,0 качество путешествий ухудшается. -1.0 указывает, что коэффициент замятия не может быть рассчитан
  • "SP" = скорость (на основе ЕДИНИЦ), ограниченная ограничением скорости
  • "SU" = скорость (на основе ЕДИНИЦ) не ограничена ограничением скорости
  • "TY" = Введите информацию для данного контейнера ссылки на местоположение. Это может быть произвольно определенной строкой

Также источником является https://developer.here.com/rest-apis/documentation/traffic/topics/additional-parameters.html

Ответ 7

Возможно, вам стоит взглянуть на API трафика Mapquests: http://www.mapquestapi.com/traffic/

Веб-сервис, к сожалению, доступен только для некоторых городов США, я думаю. Но, вероятно, это решает вашу проблему.

Ответ 8

Я не думаю, что Google предоставит этот API. И данные трафика не только содержат данные об инцидентах.

Сегодня многие онлайн-карты показывают городской трафик, но они не предоставляют API для разработчика. Мы даже не знаем, где они получают данные о трафике. Возможно, у правительства есть данные.

Итак, я думаю, вы могли бы подумать об этом с другого направления. Например, существует множество сайтов социальной сети. Все могут размещать информацию о трафике на веб-сайте. Мы можем собирать эту информацию, чтобы получить статус трафика. Или, возможно, мы можем создать веб-сайт этого типа.

Но данные трафика этого типа (об этом говорят выше) неточны. Даже информация, предоставленная человеком, будет неправильной.

К счастью, я обнаружил, что мой город теперь предоставляет мобильное приложение под названием "Информация о автобусе в режиме реального времени". Он мог рассказать гражданину, где сейчас находится автобус, и когда прибудет на автовокзал. И я обнюхаю REST API в этом приложении. Данные REST API предоставляют важные данные, например, lat и lon, а также скорость шины. И это данные в реальном времени! Поэтому я думаю, что мы могли бы вычислить статус трафика из этих данных (по некоторым программам). Вот несколько примеров данных: https://github.com/sp-chenyang/bus/blob/master/sample_data/bjgj_aibang_com_8899_bjgj_php_city_linename_stationno_datatype_type.json

Даже данных шины недостаточно для вычисления точного состояния трафика в реальном времени. Инциденты, светофор и другие вещи повлияют на статус трафика. Но я думаю, что это начало.

В конце концов, я думаю, вы могли бы попытаться найти, предоставляет ли ваш город эти данные.

PS: Я всегда думаю, что жизнь будет лучше для людей в будущем, но не сейчас.

Ответ 9

Есть возможность получить данные о трафике. Ниже моя реализация в Python. API имеет некоторую квоту и не полностью бесплатен, но достаточно хорош для небольших проектов

import requests
import time
import json


while True:

    url = "https://maps.googleapis.com/maps/api/distancematrix/json"

    querystring = {"units":"metric","departure_time":str(int(time.time())),"traffic_model":"best_guess","origins":"ITPL,Bangalore","destinations":"Tin Factory,Bangalore","key":"GetYourKeyHere"}

    headers = {
        'cache-control': "no-cache",
        'postman-token': "something"
        }

    response = requests.request("GET", url, headers=headers, params=querystring)
    d = json.loads(response.text)
    print("On", time.strftime("%I:%M:%S"),"time duration is",d['rows'][0]['elements'][0]['duration']['text'], " & traffic time is ",d['rows'][0]['elements'][0]['duration_in_traffic']['text'])
    time.sleep(1800)
    print(response.text)

Ответ: -

{
    "destination_addresses": [
        "Tin Factory, Swamy Vivekananda Rd, Krishna Reddy Industrial Estate, Dooravani Nagar, Bengaluru, Karnataka 560016, India"
    ],
    "origin_addresses": [
        "Whitefield Main Rd, Pattandur Agrahara, Whitefield, Bengaluru, Karnataka 560066, India"
    ],
    "rows": [
        {
            "elements": [
                {
                    "distance": {
                        "text": "10.5 km",
                        "value": 10505
                    },
                    "duration": {
                        "text": "35 mins",
                        "value": 2120
                    },
                    "duration_in_traffic": {
                        "text": "45 mins",
                        "value": 2713
                    },
                    "status": "OK"
                }
            ]
        }
    ],
    "status": "OK"
}

Вам нужно передать "departure_time":str(int(time.time())) является обязательным параметром строки запроса для информации о трафике.

Ваша информация о трафике будет присутствовать в duration_in_traffic.

Обратитесь к этой документации для получения дополнительной информации.

https://developers.google.com/maps/documentation/distance-matrix/intro#traffic-model