Greifen Sie über einen Webdienst auf die Verkehrsdaten von Google zu

79

Gibt es eine Möglichkeit, auf Verkehrsdaten zuzugreifen, die Google über einen Webdienst bereitstellt?

Es scheint einen zu geben GTrafficOverlay, der den Verkehr auf einer eingebetteten Google-Karte über eine Route stellt, aber keinen direkten Webdienst, den ich nutzen kann, um beispielsweise die Quelle und das Ziel anzugeben und den Verkehr zwischen ihnen zu finden?

Gibt es eine andere Quelle, aus der ich diese Daten beziehen kann?

Tejaswi Yerukalapudi
quelle
developer.google.com/maps/documentation/javascript/examples/… scheint eine neue Ergänzung zu sein.
Blazemonger

Antworten:

44

Es gibt keine Möglichkeit (oder zumindest keine einigermaßen einfache und bequeme Möglichkeit), die rohen Verkehrsdaten von der Google Maps Javascript API v3 abzurufen. Selbst wenn Sie dies tun könnten, verstößt dies wahrscheinlich gegen eine Klausel in den Nutzungsbedingungen für Google Maps. Sie müssten diese Informationen von einem anderen Dienst erhalten. Ich bezweifle, dass es derzeit einen kostenlosen Dienst gibt, der diese Informationen bereitstellt, aber ich würde es lieben, wenn mir jemand das Gegenteil beweisen würde.

Wie @crdzoba hervorhebt, macht die Bing Maps-API einige Verkehrsdaten verfügbar . Vielleicht kann das Ihre Bedürfnisse erfüllen. Aus der Dokumentation geht nicht hervor, wie viele Verkehrsdaten verfügbar sind, da es sich nur um Daten zu "Vorfällen" handelt. Langsamer Verkehr aufgrund von Bauarbeiten wäre dort, aber es ist mir nicht klar, ob langsamer Verkehr aufgrund des Volumens wäre.

UPDATE (März 2016): Seit diese Antwort im Jahr 2011 geschrieben wurde, ist viel passiert, aber die Kernpunkte scheinen zu stimmen: In kostenlosen API-Diensten werden Sie keine rohen Verkehrsdaten finden (zumindest nicht für die USA und wahrscheinlich auch nicht die meisten anderen Orte). Aber wenn es Ihnen nichts ausmacht, ein bisschen zu bezahlen und / oder wenn Sie nur Dinge wie "Reisezeit für eine bestimmte Route unter Berücksichtigung des Verkehrs" benötigen, haben Sie Optionen. Die Antwort von @ Anto verweist beispielsweise auf Google Maps For Work als kostenpflichtigen API-Dienst, mit dem Sie Reisezeiten unter Berücksichtigung des Datenverkehrs ermitteln können.

Trott
quelle
14

Anscheinend sind die Informationen über die Google Directions-API in der Professional Edition Maps for Work verfügbar . Gemäß der API-Dokumentation :

Hinweis: Benutzer von Maps for Work müssen ihren Anforderungen anstelle eines Schlüssels Client- und Signaturparameter hinzufügen.
[...]
duration_in_traffic gibt die Gesamtdauer dieser Etappe unter Berücksichtigung der aktuellen Verkehrsbedingungen an. Die Dauer des Datenverkehrs wird nur zurückgegeben, wenn alle der folgenden Bedingungen erfüllt sind:

  • Die Richtungsanforderung enthält einen Parameter für die Abfahrtszeit, der innerhalb weniger Minuten nach der aktuellen Zeit auf einen Wert gesetzt wird.
  • Die Anforderung enthält einen gültigen Google Maps API für Work-Client und einen Signaturparameter .
  • Für die angeforderte Route stehen Verkehrsbedingungen zur Verfügung.
  • Die Wegbeschreibung enthält keine Zwischenstopp-Wegpunkte.
Anto
quelle
13

Vielleicht möchten Sie einen Blick auf HERE MAP SERVICE werfen. Sie verfügen über direkte Verkehrsdaten, die Sie verwenden können. Genau das benötigen Sie: https://developer.here.com/api-explorer/rest/traffic/traffic-flow-bounding-box

Wenn Sie beispielsweise einen Bereich von Interesse abfragen, erhalten Sie möglicherweise Folgendes:

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

Dieses Beispiel zeigt eine aktuelle Durchschnittsgeschwindigkeit SUvon 9,1, wobei die Geschwindigkeit des freien Flusses FF17 betragen würde. Der Staufaktor JFbeträgt 3,3, was immer noch als freier Fluss betrachtet wird, aber träge wird. Die verwendeten Einheiten (Meilen / km) können im API-Aufruf definiert werden. Um den Umgang mit TMC-Standorten zu vermeiden, können Sie Geokoordinaten der Straßensegmente responseattributes=shanfordern, indem Sie die Anforderung hinzufügen .

Die verwendeten Abkürzungen finden Sie hier. HIER Karten interpretieren Echtzeit-Verkehrstags :

  • "RWS" - Eine Liste von Roadway (RW) -Elementen
  • "RW" = Dies ist das zusammengesetzte Element für den Fluss über eine gesamte Fahrbahn. Für jede Fahrbahn ist ein Fahrbahnelement mit verfügbaren Verkehrsflussinformationen vorhanden
  • "FIS" = Eine Liste von Flow Item (FI) -Elementen
  • "FI" = Ein einzelnes Durchflusselement
  • "TMC" = Eine geordnete Sammlung von TMC-Standorten
  • "PC" = Punkt-TMC-Standortcode
  • "DE" = Textbeschreibung der Straße
  • "QD" = Warteschlangenrichtung. '+' oder '-'. Beachten Sie, dass dies das Gegenteil der Fahrtrichtung in der vollständig qualifizierten ID ist. Beispiel: Für Standort 107 + 03021 wäre der QD '-'
  • "LE" = Länge der Straße. Die Einheiten werden im Dateikopf definiert
  • "CF" = Stromfluss. Dieses Element enthält Details zu Geschwindigkeit und Staufaktor für das angegebene Durchflusselement.
  • "CN" = Confidence, ein Hinweis darauf, wie die Geschwindigkeit bestimmt wurde. -1,0 Straße gesperrt. 1,0 = 100% 0,7-100% Historisch Normalerweise ein Wert zwischen 0,7 und 1,0 "FF" = Die Geschwindigkeit
    des freien Flusses auf dieser Strecke.
  • "JF" = Die Zahl zwischen 0,0 und 10,0, die die erwartete Reisequalität angibt. Bei einer Straßensperrung beträgt der Jam-Faktor 10. Wenn sich die Zahl 10,0 nähert, verschlechtert sich die Reisequalität. -1,0 zeigt an, dass ein Staufaktor nicht berechnet werden konnte
  • "SP" = Geschwindigkeit (basierend auf EINHEITEN), begrenzt durch Geschwindigkeitsbegrenzung
  • "SU" = Geschwindigkeit (basierend auf EINHEITEN), die nicht durch die Geschwindigkeitsbegrenzung begrenzt ist
  • "TY" = Typinformationen für den angegebenen Standortreferenzcontainer. Dies kann eine frei definierte Zeichenfolge sein

Die Quelle stammt auch von https://developer.here.com/rest-apis/documentation/traffic/topics/additional-parameters.html

Costa Huang
quelle
1
Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert. - Von der Überprüfung
CinCout
3
@CinCout Danke für die Vorschläge. Ich habe meinen Beitrag aktualisiert.
Costa Huang
Wie bestimme ich die im QD-Feld beschriebene vollständig qualifizierte ID?
Diegopso
12

Die Bing Maps-API verfügt über einen REST-Service, der Verkehrsinformationen zurückgibt

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

crdzoba
quelle
Dies bedeutet jedoch, dass Sie Bing-Karten verwenden müssen, wenn Sie die Verkehrsinformationen auf einer Karte anzeigen möchten.
noRema
6

Anstatt zu versuchen, die rohen Verkehrsdaten abzurufen, können Sie einen anderen Ansatz wählen. Mit der Google Directions-API können Sie die API mit einer bestimmten Route abfragen und als Ergebnis eine JSON-Zeichenfolge oder ein XML-Element zurückgeben. Dieses Ergebnis enthält das Element 'duration_in_traffic'. Dies gibt die Gesamtdauer der jeweiligen Etappe der Reise unter Berücksichtigung der aktuellen Verkehrsbedingungen an. (Informationen zu 'leg' und anderen Elementen der von der Directions-API zurückgegebenen JSON-Zeichenfolge finden Sie unter dem folgenden Link.)

https://developers.google.com/maps/documentation/directions/#JSON Ich habe dies nicht selbst versucht, sondern nur etwas, auf das ich in der Dokumentation gestoßen bin.

Betelguese
quelle
Es funktioniert nicht, da Google die Länge und Dauer der Reise ohne Berücksichtigung des Verkehrszustands zurückgibt. Ich meine, es gibt die gleichen Zahlen zurück, egal ob es Hauptverkehrszeit oder eine ruhige Nacht ist :(
4lberto
1
Es funktioniert, wenn Sie ein kostenpflichtiges Konto bei Google Maps haben. Das Abonnement ist jedoch lächerlich teuer und die Datennutzung ist restriktiv.
Betelguese
5

In Indien verwenden wir http://www.itrafficnews.com . Die Daten werden jedoch von den Benutzern gepostet. Ich glaube nicht, dass Google die Daten bereitstellen wird.

Kaifi
quelle
4

Vielleicht sollten Sie sich die Mapquests Traffic API ansehen: http://www.mapquestapi.com/traffic/

Der Webservice ist leider nur für einige Städte in den USA verfügbar, denke ich. Aber wahrscheinlich löst es Ihr Problem.

Seb
quelle
3

Ich glaube nicht, dass Google diese API bereitstellen wird. Und Verkehrsdaten enthalten nicht nur die Ereignisdaten.

Heutzutage zeigen viele Online-Karten den Stadtverkehr, aber sie haben die API für den Entwickler nicht bereitgestellt. Wir wissen nicht einmal, woher sie die Verkehrsdaten beziehen. Vielleicht hat die Regierung die Daten.

Ich denke, Sie könnten aus einer anderen Richtung darüber nachdenken. Zum Beispiel gibt es viele soziale Netzwerke. Jeder konnte die Verkehrsinformationen auf der Website veröffentlichen. Wir können diese Informationen sammeln, um den Verkehrsstatus zu erhalten. Oder vielleicht können wir eine solche Website erstellen.

Diese Art von Verkehrsdaten (über die oben gesprochen wurde) ist jedoch nicht korrekt. Sogar die vom Menschen bereitgestellten Informationen werden falsch sein.

Zum Glück habe ich festgestellt, dass meine Stadt jetzt eine mobile App namens "Echtzeit-Businformationen" bietet. Es könnte dem Bürger sagen, wo der Bus jetzt ist und wann er am Busbahnhof ankommt. Und ich schnüffle an der REST-API in dieser App. Die Daten der REST-API geben die wichtigen Daten an, z. B. Lat und Lon sowie die Busgeschwindigkeit. Und es sind Echtzeitdaten! Ich denke also, wir könnten den Verkehrsstatus aus diesen Daten berechnen (durch etwas Programmierung). Hier einige Beispieldaten: https://github.com/sp-chenyang/bus/blob/master/sample_data/bjgj_aibang_com_8899_bjgj_php_city_linename_stationno_datatype_type.json

Selbst die Busdaten reichen nicht aus, um den genauen Echtzeit-Verkehrsstatus zu berechnen. Vorfälle, Ampeln und andere Dinge beeinflussen den Verkehrsstatus. Aber ich denke das ist der Anfang.

Am Ende könnten Sie versuchen herauszufinden, ob Ihre Stadt diese Daten liefert.

PS: Ich denke immer, dass das Leben in Zukunft für die Menschen besser sein wird, aber nicht jetzt.

Chen Yang
quelle
3

Es ist möglich, Verkehrsdaten abzurufen. Unten ist meine Implementierung in Python. Die API hat ein gewisses Kontingent und ist nicht vollständig kostenlos, aber gut genug für kleine Projekte

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)

Antwort ist: -

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

Du musst bestehen "departure_time":str(int(time.time())) einen erforderlichen Abfragezeichenfolgenparameter für Verkehrsinformationen übergeben.

Ihre Verkehrsinformationen wären in vorhanden duration_in_traffic .

Weitere Informationen finden Sie in dieser Dokumentation.

https://developers.google.com/maps/documentation/distance-matrix/intro#traffic-model
Penta
quelle
Wenn ich es versuchen muss, muss ich nur meinen Schlüssel auf "GetYourKeyHere" ersetzen oder gibt es noch etwas anderes? weil ich einen Fehler hatte, möchte ich sicherstellen, dass es richtig ist
Fatima
0

Es gibt ein Projekt namens Open Traffic, das derzeit nicht voll funktionsfähig ist, aber in Zukunft die richtige Antwort zu sein scheint.

OpenTraffic ist eine globale Datenplattform zur Verarbeitung anonymer Positionen von Fahrzeugen und Smartphones in Echtzeit- und historischen Verkehrsstatistiken. Wir bauen dies unter Verwendung einer vollständig Open-Source-Software unter Einbeziehung einer wachsenden Liste von Partnern im Freien auf.

pouya
quelle