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


79

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

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

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


developers.google.com/maps/documentation/javascript/examples/… кажется недавним дополнением.
Blazemonger

Ответы:


44

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

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

ОБНОВЛЕНИЕ (март 2016 г.): с тех пор, как этот ответ был написан в 2011 году, произошло много событий, но основные моменты, похоже, остаются в силе: вы не найдете необработанных данных о трафике в бесплатных службах API (по крайней мере, не для США, и, вероятно, нет большинство других мест). Но если вы не против немного заплатить и / или вам просто нужны такие вещи, как «время в пути по определенному маршруту с учетом трафика», у вас есть варианты. Ответ @ Anto , например, указывает на Google Maps For Work как на платную службу API, которая позволяет вам узнать время в пути с учетом трафика.


14

Судя по всему, информация доступна с помощью Google Directions API в его профессиональной версии Maps for Work . Согласно документации API :

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

  • Запрос маршрута включает параметр отправления_время, для которого задано значение в пределах нескольких минут от текущего времени.
  • Запрос включает действующий клиент Google Maps API for Work и параметр подписи .
  • Доступны условия движения по запрошенному маршруту.
  • Запрос маршрута не включает промежуточные путевые точки.

13

Возможно, вы захотите взглянуть на ЗДЕСЬ СЛУЖБА КАРТ. У них есть прямые данные о трафике, которые вы можете использовать, а это именно то, что вам нужно: 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
                    }
                  ]
                }
              ]
            }
          ],
....

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

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

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

Также источник поступает из https://developer.here.com/rest-apis/documentation/traffic/topics/additional-parameters.html.


1
Хотя эта ссылка может дать ответ на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными, если ссылка на страницу изменится. - Из
отзыва

3
@CinCout Спасибо за предложения. Я обновил свой пост.
Коста Хуанг

Как мне определить полностью квалифицированный идентификатор, указанный в поле QD?
diegopso

12

В Bing Maps API есть служба REST, которая возвращает информацию о трафике.

http://msdn.microsoft.com/en-us/library/hh441725


Но это означает, что если вы хотите отобразить информацию о дорожном движении на карте, вы должны использовать карты Bing.
noRema

6

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

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


Это не работает, поскольку Google возвращает длину и продолжительность поездки без учета загруженности дорог. Я имею в виду, что он возвращает одни и те же цифры, будь то час пик или спокойная ночь :(
4lberto

1
Это работает, если у вас есть платная учетная запись с картами Google, однако подписка смехотворно дорога, а использование данных ограничено.
Betelguese


4

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

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


3

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

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

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

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

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

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

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

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


3

Есть возможность получить данные о трафике. Ниже моя реализация на 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

если мне нужно попробовать, мне нужно только заменить ключ на "GetYourKeyHere" или есть что-то еще? потому что у меня была ошибка, поэтому я хочу убедиться, что я на правильном пути
Фатима

0

Есть проект под названием Open Traffic, который сейчас не работает полностью, но кажется правильным ответом в будущем.

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.