Acceda a los datos de tráfico de Google a través de un servicio web

79

¿Existe alguna forma de acceder a los datos de tráfico que proporciona Google a través de un servicio web?

Parece haber un GTrafficOverlayque coloca el tráfico en la parte superior de una ruta en un mapa de Google incrustado, pero no hay un servicio web directo que pueda consumir para, por ejemplo, dar la fuente y el destino y encontrar el tráfico entre ellos.

¿Hay alguna otra fuente de la que pueda obtener estos datos?

Tejaswi Yerukalapudi
fuente
developers.google.com/maps/documentation/javascript/examples/… parece ser una adición reciente.
Blazemonger

Respuestas:

44

No hay forma (o al menos ninguna forma razonablemente fácil y conveniente) de obtener los datos de tráfico sin procesar de Google Maps Javascript API v3. Incluso si pudieras hacerlo, es probable que hacerlo infrinja alguna cláusula de los Términos de servicio de Google Maps. Tendría que obtener esta información de otro servicio. Dudo que exista un servicio gratuito que brinde esta información en este momento, pero me encantaría que alguien me demuestre que estoy equivocado.

Como señala @crdzoba, la API de Bing Maps expone algunos datos de tráfico . Quizás eso pueda satisfacer sus necesidades. No está claro en la documentación cuántos datos de tráfico se exponen, ya que solo son datos sobre "incidentes". El tráfico lento debido a la construcción estaría allí, pero no es obvio para mí si sería lento debido simplemente al volumen.

ACTUALIZACIÓN (marzo de 2016): Mucho ha ocurrido desde esta respuesta fue escrito en 2011, pero los puntos centrales parecen contener hasta: Usted no encontrará los datos de tráfico en bruto en forma gratuita los servicios de API (al menos no para los EE.UU., y probablemente no la mayoría de los otros lugares). Pero si no le importa pagar un poco y / o si solo necesita cosas como "tiempo de viaje para una ruta específica teniendo en cuenta el tráfico", tiene opciones. La respuesta de @Anto , por ejemplo, apunta a Google Maps For Work como un servicio de API de pago que le permite obtener tiempos de viaje teniendo en cuenta el tráfico.

Trott
fuente
14

Al parecer, la información está disponible utilizando la API de Google Directions en su edición profesional Maps for work . Según la documentación de la API :

Nota: Los usuarios de Maps for Work deben incluir parámetros de firma y cliente con sus solicitudes en lugar de una clave.
[...]
duration_in_traffic indica la duración total de este tramo, teniendo en cuenta las condiciones actuales del tráfico. La duración del tráfico solo se devolverá si se cumplen todas las condiciones siguientes:

  • La solicitud de indicaciones incluye un parámetro de salida_tiempo establecido en un valor dentro de unos minutos de la hora actual.
  • La solicitud incluye un cliente válido de Google Maps API for Work y un parámetro de firma. .
  • Las condiciones del tráfico están disponibles para la ruta solicitada.
  • La solicitud de indicaciones no incluye puntos de paso de escala.
Anto
fuente
13

Es posible que desee echar un vistazo a AQUÍ MAP SERVICE. Tienen datos de tráfico directo que puede usar, que es exactamente lo que necesita: https://developer.here.com/api-explorer/rest/traffic/traffic-flow-bounding-box

Por ejemplo, al consultar un área de interés, puede obtener algo como esto:

{
  "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
                    }
                  ]
                }
              ]
            }
          ],
....

Este ejemplo muestra una velocidad promedio actual SUde 9.1, donde la velocidad de flujo libre FFsería 17. El factor de atasco JFes 3.3, que todavía se considera flujo libre pero se vuelve lento. Las unidades utilizadas (millas / km) se pueden definir en la llamada API. Para evitar tener que lidiar con ubicaciones de TMC, puede solicitar geocoordenadas de los tramos de carretera agregandoresponseattributes=sh la solicitud.

Las abreviaturas utilizadas se pueden encontrar aquí Interpretando HERE Maps etiquetas de tráfico en tiempo real :

  • "RWS": una lista de elementos de calzada (RW)
  • "RW" = Este es el elemento compuesto para el flujo a través de una calzada completa. Habrá un elemento de calzada para cada calzada con información de flujo de tráfico disponible
  • "FIS" = una lista de elementos de flujo de elementos (FI)
  • "FI" = Un solo elemento de flujo
  • "TMC" = Una colección ordenada de ubicaciones TMC
  • "PC" = Código de ubicación de TMC de punto
  • "DE" = descripción de texto de la carretera
  • "QD" = dirección de la cola. '+' o '-'. Tenga en cuenta que esto es lo opuesto a la dirección de viaje en el ID totalmente calificado. Por ejemplo, para la ubicación 107 + 03021, el QD sería '-'
  • "LE" = Longitud del tramo de carretera. Las unidades se definen en el encabezado del archivo
  • "CF" = flujo de corriente. Este elemento contiene información sobre la velocidad y el factor de atasco para el elemento de flujo dado.
  • "CN" = Confianza, una indicación de cómo se determinó la velocidad. -1,0 carretera cerrada. 1.0 = 100% 0.7-100% Histórico Usualmente un valor entre .7 y 1.0 "FF" = La velocidad de flujo libre en este
    tramo de carretera.
  • "JF" = El número entre 0.0 y 10.0 que indica la calidad de viaje esperada. Cuando hay un cierre de ruta, el factor de atasco será 10. A medida que el número se acerca a 10.0, la calidad del viaje empeora. -1,0 indica que no se pudo calcular un factor de atasco
  • "SP" = Velocidad (basada en UNIDADES) limitada por el límite de velocidad
  • "SU" = Velocidad (basada en UNITS) sin límite de velocidad
  • "TY" = Información de tipo para el contenedor de referencia de ubicación dado. Esta puede ser una cadena definida libremente

Además, la fuente proviene de https://developer.here.com/rest-apis/documentation/traffic/topics/additional-parameters.html

Costa Huang
fuente
1
Si bien este enlace puede responder la pregunta, es mejor incluir aquí las partes esenciales de la respuesta y proporcionar el enlace como referencia. Las respuestas de solo enlace pueden perder su validez si cambia la página enlazada. - De la crítica
CinCout
3
@CinCout Gracias por las sugerencias. He actualizado mi publicación.
Costa Huang
¿Cómo determino la ID totalmente calificada que se describe en el campo QD?
diegopso
6

En lugar de intentar extraer los datos de tráfico sin procesar, puede intentar un enfoque diferente. La API de Google Directions le permite consultar la API con una ruta en particular y, como resultado, devuelve una cadena JSON o un elemento XML. Este resultado incluye el elemento - 'duration_in_traffic' Esto indica la duración total del tramo particular del viaje, teniendo en cuenta las condiciones actuales del tráfico. (para obtener información sobre 'tramo' y otros elementos de la cadena JSON devuelta por la API de direcciones, consulte el enlace a continuación)

https://developers.google.com/maps/documentation/directions/#JSON No lo he probado yo mismo, pero es algo que encontré en la documentación.

Betelguese
fuente
No funciona ya que Google devuelve la duración y la duración del viaje sin considerar el estado del tráfico. Quiero decir, devuelve los mismos números ya sea en hora pico o en una noche tranquila :(
4lberto
1
Funciona si tiene una cuenta paga con Google Maps, sin embargo, la suscripción es ridículamente cara y el uso de datos es restrictivo.
Betelguese
4

Tal vez debería echar un vistazo a Mapquests Traffic API: http://www.mapquestapi.com/traffic/

Desafortunadamente, el servicio web solo está disponible para algunas ciudades de los EE. UU., Creo. Pero probablemente resuelva tu problema.

Seb
fuente
3

No creo que Google proporcione esta API. Y los datos de tráfico no solo contienen los datos del incidente.

Hoy en día, muchos mapas en línea muestran el tráfico de la ciudad, pero no proporcionan la API para el desarrollador. Incluso no sabemos de dónde obtienen los datos de tráfico. Quizás el gobierno tenga los datos.

Así que creo que podrías pensarlo desde otra dirección. Por ejemplo, existen muchos sitios web de redes sociales. Todo el mundo puede publicar la información de tráfico en el sitio web. Podemos recopilar esta información para obtener el estado del tráfico. O tal vez podamos crear un sitio web de este tipo.

Pero ese tipo de datos de tráfico (mencionado anteriormente) no es exacto. Incluso la información proporcionada por humanos será incorrecta.

Afortunadamente, descubrí que mi ciudad ahora ofrece una aplicación móvil llamada "Información de autobuses en tiempo real". Podría decirle al ciudadano dónde está ahora el autobús y cuándo llegará a la estación de autobuses. Y huelo la API REST en esta aplicación. Los datos de la API REST proporcionan los datos importantes, por ejemplo, la latitud y la longitud, y también la velocidad del bus. ¡Y son datos en tiempo real! Así que creo que podríamos calcular el estado del tráfico a partir de estos datos (mediante alguna programación). Aquí hay algunos datos de muestra: https://github.com/sp-chenyang/bus/blob/master/sample_data/bjgj_aibang_com_8899_bjgj_php_city_linename_stationno_datatype_type.json

Incluso los datos del autobús no serán suficientes para calcular el estado del tráfico en tiempo real con precisión. Los incidentes, el semáforo y otras cosas afectarán el estado del tráfico. Pero creo que este es el comienzo.

Al final, creo que podría intentar averiguar si su ciudad proporciona estos datos.

PD: Siempre pienso que la vida será mejor para las personas en el futuro, pero no ahora.

Chen Yang
fuente
3

Es posible obtener datos de tráfico. A continuación se muestra mi implementación en python. La API tiene cierta cuota y no es completamente gratuita, pero es lo suficientemente buena para proyectos pequeños

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)

La respuesta es: -

{
    "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"
}

Debe pasar "departure_time":str(int(time.time()))es un parámetro de cadena de consulta obligatorio para la información de tráfico.

Su información de tráfico estaría presente en duration_in_traffic.

Consulte esta documentación para obtener más información.

https://developers.google.com/maps/documentation/distance-matrix/intro#traffic-model
penta
fuente
si necesito probarlo, solo tengo que reemplazar mi clave en "GetYourKeyHere" o hay algo más? porque tuve un error, así que quiero asegurarme de que estoy en la forma correcta
Fátima
0

Existe un proyecto llamado Open Traffic que no es completamente funcional en este momento, pero parece ser la respuesta correcta en el futuro.

OpenTraffic es una plataforma de datos global para procesar posiciones anónimas de vehículos y teléfonos inteligentes en estadísticas de tráfico históricas y en tiempo real. Estamos construyendo esto de forma abierta, utilizando software de código abierto, con la participación de una lista creciente de socios.

pouya
fuente