웹 서비스를 통해 Google의 트래픽 데이터에 액세스


79

Google이 웹 서비스를 통해 제공하는 교통 데이터에 액세스 할 수있는 방법이 있습니까?

GTrafficOverlay포함 된 Google지도의 경로 위에 트래픽을 배치 하는 것으로 보이지만 소스와 목적지를 제공하고 둘 사이의 트래픽을 찾는 데 사용할 수있는 직접 웹 서비스가 없습니까?

이 데이터를 얻을 수있는 다른 소스가 있습니까?


답변:


44

Google Maps Javascript API v3에서 원시 트래픽 데이터를 가져올 수있는 방법은 없습니다 (또는 적어도 합리적이고 쉽고 편리한 방법은 없습니다). 그렇게 할 수 있더라도 Google지도 서비스 약관의 일부 조항을 위반할 가능성이 있습니다. 다른 서비스에서이 정보를 얻어야합니다. 현재이 정보를 제공하는 무료 서비스가 있는지는 의심 스럽지만 누군가가 저를 틀렸다는 것을 증명하면 좋겠습니다.

@crdzoba가 지적했듯이 Bing Maps API는 일부 트래픽 데이터를 노출합니다 . 아마도 그것은 당신의 필요를 채울 수 있습니다. "사건"에 대한 데이터 일 뿐이므로 노출되는 트래픽 데이터의 양은 문서에서 명확하지 않습니다. 공사로 인한 느린 교통 체증이있을 수 있지만 단순히 볼륨으로 인한 느린 교통 체증이 있는지는 분명하지 않습니다.

UPDATE (2016 월) :이 답변은 2011 년에 기록 된 이후에 많은 일이있다,하지만 핵심 포인트는 끊고 나타납니다 당신은 찾을 수 없습니다 원시 트래픽 데이터무료 API 서비스를 (적어도이 아닌 우리를 위해, 그리고 아마 대부분의 다른 장소). 그러나 약간의 비용을 지불해도 괜찮거나 "교통량을 고려한 특정 경로의 이동 시간"과 같은 것이 필요한 경우 옵션이 있습니다. 예를 들어 @Anto의 답변 은 교통량을 고려하여 이동 시간을 얻을 수있는 유료 API 서비스로서 Google의 Maps For Work 를 가리 킵니다 .


14

이 정보는 전문가 용 Maps for Work 에서 Google Directions API 를 사용하여 사용할 수 있습니다 . API의 문서 에 따르면 :

참고 : Maps for Work 사용자는 키 대신 요청에 클라이언트 및 서명 매개 변수를 포함해야합니다.
[...]
duration_in_traffic 은 현재 교통 상황을 고려하여이 구간의 총 소요 시간을 나타냅니다. 트래픽 기간은 다음이 모두 참인 경우에만 반환됩니다.

  • 길 찾기 요청에는 현재 시간에서 몇 분 이내의 값으로 설정된 출발 시간 매개 변수가 포함됩니다.
  • 요청에는 유효한 Google Maps API for Work 클라이언트 및 서명 매개 변수가 포함 됩니다.
  • 요청한 경로에 대한 교통 상황을 확인할 수 있습니다.
  • 길 찾기 요청에는 경유지 경유지가 포함되지 않습니다.

13

HERE MAP SERVICE를 살펴보십시오. 그들은 당신이 사용할 수있는 직접적인 교통 데이터를 가지고 있으며, 정확히 당신이 필요로하는 것입니다 : 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입니다. Jam factor JF는 3.3이며 여전히 자유 흐름으로 간주 되지만 느려 집니다. 사용 된 단위 (마일 / km)는 API 호출에서 정의 할 수 있습니다. TMC 위치를 처리하지 않으려면 요청을 추가하여 도로 구간의 지리 좌표를 요청할 수 있습니다 responseattributes=sh.

사용 된 약어는 여기에서 찾을 수 있습니다. Interpreting HERE Maps real-time traffic tags :

  • "RWS"-도로 (RW) 항목 목록
  • "RW"= 이것은 전체 도로를 가로 지르는 흐름에 대한 복합 항목입니다. 사용 가능한 교통 흐름 정보와 함께 각 도로에 대한 도로 항목이 표시됩니다.
  • "FIS"= 흐름 항목 (FI) 요소 목록
  • "FI"= 단일 흐름 항목
  • "TMC"= 주문 된 TMC 위치 모음
  • "PC"= 포인트 TMC 위치 코드
  • "DE"= 도로에 대한 텍스트 설명
  • "QD"= 대기열 방향. '+'또는 '-'. 이는 정규화 된 ID의 이동 방향과 반대입니다. 예를 들어 위치 107 + 03021의 경우 QD는 '-'입니다.
  • "LE"= 도로 연장 길이. 단위는 파일 헤더에 정의됩니다.
  • "CF"= 현재 흐름. 이 요소에는 지정된 흐름 항목에 대한 속도 및 Jam Factor 정보에 대한 세부 정보가 포함됩니다.
  • "CN"= 신뢰도, 속도가 어떻게 결정되었는지를 나타냅니다. -1.0 도로 폐쇄. 1.0 = 100 % 0.7-100 % 과거 일반적으로 .7과 1.0 사이의 값 "FF"=이
    도로 구간의 자유 유속 입니다.
  • "JF"= 예상되는 여행 품질을 나타내는 0.0에서 10.0 사이의 숫자입니다. 도로가 폐쇄되면 Jam Factor는 10이됩니다. 10.0에 가까워 질수록 여행의 질이 나빠집니다. -1.0은 Jam Factor를 계산할 수 없음을 나타냅니다.
  • "SP"= 속도 제한에 의해 제한되는 속도 (UNIT 기준)
  • "SU"= 속도 제한에 의해 제한되지 않는 속도 (UNIT 기준)
  • "TY"= 지정된 위치 참조 컨테이너에 대한 유형 정보. 자유롭게 정의 된 문자열 일 수 있습니다.

또한 소스는 https://developer.here.com/rest-apis/documentation/traffic/topics/additional-parameters.html 에서 제공됩니다.


1
이 링크가 질문에 답할 수 있지만 여기에 답변의 필수 부분을 포함하고 참조 용 링크를 제공하는 것이 좋습니다. 링크 된 페이지가 변경되면 링크 전용 답변이 무효화 될 수 있습니다. - 검토에서
CinCout

3
@CinCout 제안 해 주셔서 감사합니다. 내 게시물을 업데이트했습니다.
Costa Huang

QD 필드에 설명 된 정규화 된 ID는 어떻게 확인합니까?
diegopso


6

원시 트래픽 데이터를 가져 오는 대신 다른 접근 방식을 시도 할 수 있습니다. Google Directions API를 사용하면 특정 경로로 API를 쿼리하고 결과로 JSON 문자열 또는 XML 요소를 반환 할 수 있습니다. 이 결과에는 'duration_in_traffic'요소가 포함됩니다. 이는 현재 교통 상황을 고려하여 여정의 특정 구간의 총 소요 시간을 나타냅니다. ( 'leg'및 기타 Directions API에서 반환하는 JSON 문자열 요소에 대한 자세한 내용은 아래 링크를 참조하십시오.)

https://developers.google.com/maps/documentation/directions/#JSON 직접 시도하지는 않았지만 설명서에서 발견 한 것입니다.


Google은 교통 상황을 고려하지 않고 여행의 길이와 기간을 반환하므로 작동하지 않습니다. 내 말은,
러시아 워든

1
Google지도로 유료 계정이 있으면 작동하지만 구독은 엄청나게 비싸고 데이터 사용량이 제한적입니다.
Betelguese


4

Mapquests Traffic API ( 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

버스 데이터조차도 정확한 실시간 교통 상태를 계산하기에 충분하지 않습니다. 사고, 신호등 및 기타 사항이 교통 상황에 영향을 미칩니다. 하지만 이것이 시작이라고 생각합니다.

마지막으로 귀하의 도시가 이러한 데이터를 제공하는지 여부를 찾으려고 노력할 수 있다고 생각합니다.

추신 : 나는 항상 미래의 사람들에게 삶이 더 나아질 것이라고 생각하지만 지금은 아닙니다.


3

교통 데이터를 얻을 수 있습니다. 아래는 파이썬으로 구현 한 것입니다. 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"의 키만 교체하면됩니까? 아니면 다른 것이 있습니까? 오류가 있었기 때문에 올바른 방법인지 확인하고 싶습니다
Fatima

0

지금은 제대로 작동하지 않지만 앞으로는 정답이 될 것 같은 Open Traffic 이라는 프로젝트 가 있습니다.

OpenTraffic은 차량 및 스마트 폰의 익명 위치를 실시간 및 과거 교통 통계로 처리하는 글로벌 데이터 플랫폼입니다. 우리는 점점 늘어나는 파트너 목록의 참여와 함께 완전한 오픈 소스 소프트웨어를 사용하여 개방형으로 구축하고 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.