Pergunta

Existe uma maneira de acessar dados de tráfego que o Google fornece através de um serviço da Web?

Parece haver um GTrafficOverlay Isso coloca o tráfego no topo de uma rota em um mapa do Google incorporado, mas nenhum serviço da Web direto para o qual eu possa consumir, digamos, dar a fonte e o destino e encontrar o tráfego entre eles?

Existe alguma outra fonte da qual eu possa obter esses dados?

Foi útil?

Solução

Não há como (ou pelo menos nenhuma maneira razoavelmente fácil e conveniente) para obter os dados de tráfego bruto do Google Maps JavaScript API V3. Mesmo que você pudesse fazê -lo, é provável que isso viole alguma cláusula nos termos de serviço do Google Maps. Você teria que obter essas informações de outro serviço. Duvido que haja um serviço gratuito que forneça essas informações no momento atual, mas eu adoraria se alguém me provasse errado nisso.

Como @crdzoba aponta, A API do Bing Maps expõe alguns dados de tráfego. Talvez isso possa atender às suas necessidades. Não está claro na documentação quantos dados de tráfego expõem, pois são apenas dados sobre "incidentes". O tráfego lento devido à construção estaria lá, mas não é óbvio para mim se o tráfego lento devido ao volume seria.

Atualização (março de 2016): Muito aconteceu desde que esta resposta foi escrita em 2011, mas os pontos principais parecem se sustentar: você não encontrará dados de tráfego bruto dentro gratuitamente Serviços de API (pelo menos não para os EUA, e provavelmente não a maioria dos outros lugares). Mas se você não se importa de pagar um pouco e/ou se precisar apenas de coisas como "tempo de viagem para uma rota específica, levando em consideração o tráfego", você tem opções. @Resposta de Anto, por exemplo, aponta para Mapas do Google para o trabalho Como um serviço de API pago que permite que você obtenha tempos de viagem levando em consideração o tráfego.

Outras dicas

Aparentemente, a informação está disponível usando o API do Google Directions em sua edição profissional Mapas para o trabalho. De acordo com a documentação da API:

Nota: Os mapas para usuários de trabalho devem incluir parâmetros de cliente e assinatura com suas solicitações em vez de uma chave.
[...]
duração_in_traffic Indica a duração total dessa perna, levando em consideração as condições atuais de tráfego. A duração do tráfego só será retornada se todos os seguintes forem verdadeiros:

  • A solicitação de instruções inclui um parâmetro de partida_time definido para um valor dentro de alguns minutos do horário atual.
  • A solicitação inclui uma API válida do Google Maps para cliente de trabalho e parâmetro de assinatura.
  • As condições de tráfego estão disponíveis para a rota solicitada.
  • A solicitação de instruções não inclui waypoints de parada.

A API do Bing Maps tem um serviço de descanso que retorna informações de tráfego

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

Você pode querer dar uma olhada no serviço de mapa aqui. Eles têm dados de tráfego direto que você pode usar, o que é exatamente o que você precisa: https://developer.here.com/api-explorer/rest/traffic/traffic-flow-bounding-box

Por exemplo, ao consultar uma área de interesse, você pode obter algo assim:

{
  "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 exemplo mostra uma velocidade média atual SU de 9.1, onde a velocidade de fluxo livre FF seria 17. O fator Jam JF é 3,3, que ainda é considerado fluxo livre Mas ficando lento. As unidades utilizadas (milhas/km) podem ser definidas na chamada da API. Para evitar lidar com os locais do TMC, você pode solicitar geocoordinas dos segmentos de estrada, adicionando responseattributes=sh no pedido.

As abreviações usadas podem ser encontradas aqui Interpretar aqui mapeia tags de tráfego em tempo real:

  • "RWS" - Uma lista de itens de estrada (RW)
  • "RW" = Este é o item composto para fluxo em uma estrada inteira. Um item de estrada estará presente para cada estrada com informações de fluxo de tráfego disponíveis
  • "Fis" = uma lista de elementos de item de fluxo (fi)
  • "Fi" = um único item de fluxo
  • "TMC" = uma coleção ordenada de locais TMC
  • "PC" = Código de localização do ponto TMC
  • "DE" = Descrição do texto da estrada
  • "QD" = direção da fila. '+' ou '-'. Observe que este é o oposto da direção da viagem no ID totalmente qualificado, por exemplo, para o local 107+03021, o QD seria '-'
  • "LE" = comprimento do trecho da estrada. As unidades são definidas no cabeçalho do arquivo
  • "Cf" = fluxo de corrente. Este elemento contém detalhes sobre as informações do fator de velocidade e atolamento para o item de fluxo fornecido.
  • "CN" = confiança, uma indicação de como a velocidade foi determinada. -1,0 Estrada fechada. 1,0 = 100% 0,7-100% histórico geralmente um valor entre 0,7 e 1,0 "ff" = a velocidade de fluxo livre nisso
    trecho da estrada.
  • "JF" = o número entre 0,0 e 10,0 indicando a qualidade esperada da viagem. Quando houver um fechamento da estrada, o fator JAM será 10. À medida que o número se aproxima 10.0 A qualidade da viagem está piorando. -1,0 indica que um fator de atolamento não pôde ser calculado
  • "SP" = velocidade (com base em unidades) limitada pelo limite de velocidade
  • "SU" = velocidade (com base em unidades) não limitada pelo limite de velocidade
  • "Ty" = tipo de informação para o local fornecido referenciando o contêiner. Isso pode ser definido livremente string

Além disso, a fonte vem dehttps://developer.here.com/rest-apis/documentation/traffic/topics/additional-parameters.html

Na Índia, estamos usando http://www.itrafficnews.com. Mas os dados são publicados pelos usuários. Eu não acho que o Google fornecerá os dados.

Em vez de tentar extrair os dados de tráfego bruto, você pode tentar uma abordagem diferente. A API do Google Directions permite que você consulte a API com uma rota específica e retorna uma sequência JSON ou o elemento XML como resultado. Este resultado inclui o elemento - 'duration_in_traffic', isso indica a duração total da perna específica da jornada, levando em consideração as condições atuais de tráfego. (Para obter informações sobre 'perna' e outros elementos da string json retornada pela API de instruções, consulte o link abaixo)

https://developers.google.com/maps/documentation/directions/#jsonEu não tentei isso sozinho, mas apenas algo que encontrei na documentação.

Talvez você deva dar uma olhada na API de tráfego MapQuests: http://www.mapquestapi.com/traffic/

Infelizmente, o serviço da web está disponível apenas para algumas cidades nos EUA, eu acho. Mas provavelmente resolve seu problema.

Eu não acho que o Google fornecerá essa API. E dados de tráfego não apenas contêm os dados de incidentes.

Hoje, muitos mapas on -line mostram o tráfego da cidade, mas não fornecem a API para o desenvolvedor. Nós nem sabemos onde eles obtêm os dados de tráfego. Talvez o governo tenha os dados.

Então eu acho que você poderia pensar nisso de outra direção. Por exemplo, existem muitos sites de rede social por aí. Todo mundo poderia postar as informações de tráfego no site. Podemos coletar essas informações para obter o status de tráfego. Ou talvez possamos criar um site deste tipo.

Mas esse tipo de dados de tráfego (falado acima) não é preciso. Até as informações fornecidas pelo humano estarão erradas.

Felizmente, descobri que minha cidade agora fornece um aplicativo móvel chamado "Informações de ônibus em tempo real". Pode dizer ao cidadão onde está o ônibus agora e quando chegará à rodoviária. E eu cheirei a API REST neste aplicativo. Os dados da API REST fornecem os dados importantes, por exemplo, o LAT e o LON, e também a velocidade do barramento. E são dados em tempo real! Então, acho que poderíamos calcular o status de tráfego desses dados (por alguma programação). Aqui estão alguns dados de amostra: https://github.com/sp-chenyang/bus/blob/master/sample_data/bjgj_aibang_com_8899_bjgj_php_city_linename_stationno_datatype_type.json

Até os dados do barramento não serão suficientes para calcular o status de tráfego em tempo real preciso. Incidentes, semáforo e outras coisas afetarão o status do tráfego. Mas acho que este é o começo.

No final, acho que você poderia tentar descobrir se sua cidade fornece esses dados.

PS: Estou sempre pensando que a vida será melhor para as pessoas no futuro, mas não agora.

É possível obter dados de tráfego. Abaixo está minha implementação em Python. A API tem alguma cota e não é totalmente gratuita, mas boa o suficiente para pequenos projetos

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)

A resposta é:-

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

Você precisa passar "departure_time":str(int(time.time())) é um parâmetro de sequência de consulta necessário para informações de tráfego.

Suas informações de trânsito estariam presentes em duration_in_traffic.

Consulte esta documentação para obter mais informações.

https://developers.google.com/maps/documentation/distance-matrix/intro#traffic-model
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top