Truy cập Dữ liệu lưu lượng truy cập của Google thông qua Dịch vụ web


79

Có cách nào để tôi có thể truy cập dữ liệu lưu lượng truy cập mà Google cung cấp thông qua dịch vụ web không?

Có vẻ như có một dịch vụ GTrafficOverlayđặt lưu lượng truy cập lên trên một tuyến đường trên bản đồ google được nhúng, nhưng không có dịch vụ web trực tiếp nào mà tôi có thể sử dụng, chẳng hạn như cung cấp nguồn và đích và tìm lưu lượng giữa chúng?

Tôi có thể lấy dữ liệu này từ nguồn nào khác không?


Develop.google.com/maps/documentation/javascript/examples/… dường như là một bổ sung gần đây.
Blazemonger

Câu trả lời:


44

Không có cách nào (hoặc ít nhất là không có cách nào hợp lý và thuận tiện) để lấy dữ liệu lưu lượng thô từ API Javascript v3 của Google Maps. Ngay cả khi bạn có thể làm điều đó, làm như vậy có khả năng vi phạm một số điều khoản trong Điều khoản dịch vụ của Google Maps. Bạn sẽ phải lấy thông tin này từ một dịch vụ khác. Tôi nghi ngờ có một dịch vụ miễn phí cung cấp thông tin này vào thời điểm hiện tại, nhưng tôi sẽ rất thích nếu ai đó chứng minh tôi sai về điều đó.

Như @crdzoba đã chỉ ra, API Bing Maps hiển thị một số dữ liệu giao thông . Có lẽ điều đó có thể đáp ứng nhu cầu của bạn. Tài liệu không rõ có bao nhiêu dữ liệu lưu lượng truy cập bị lộ vì đó chỉ là dữ liệu về "sự cố". Giao thông chậm do xây dựng sẽ ở đó, nhưng tôi không rõ liệu giao thông chậm do khối lượng sẽ là bao nhiêu.

CẬP NHẬT (tháng 3 năm 2016): Rất nhiều điều đã xảy ra kể từ khi câu trả lời này được viết vào năm 2011, nhưng điểm cốt lõi dường như vẫn giữ nguyên: Bạn sẽ không tìm thấy dữ liệu lưu lượng thô trong các dịch vụ API miễn phí (ít nhất là không dành cho Hoa Kỳ và có lẽ là không hầu hết các nơi khác). Nhưng nếu bạn không ngại chi trả một chút và / hoặc nếu bạn chỉ cần những thứ như "thời gian di chuyển cho một tuyến đường cụ thể có cân nhắc giao thông", bạn có các lựa chọn. Ví dụ, câu trả lời của @ Anto chỉ ra Maps For Work của Google là một dịch vụ API trả phí cho phép bạn xem xét thời gian di chuyển có tính đến lưu lượng truy cập.


14

Rõ ràng thông tin có sẵn bằng cách sử dụng API Google Directions trong phiên bản chuyên nghiệp của Maps dành cho công việc . Theo tài liệu của API :

Lưu ý: Người dùng Maps for Work phải bao gồm các thông số khách hàng và chữ ký với yêu cầu của họ thay vì khóa.
[...]
time_in_traffic cho biết tổng thời lượng của chặng này, có tính đến điều kiện giao thông hiện tại. Thời lượng lưu lượng truy cập sẽ chỉ được trả lại nếu tất cả những điều sau đây đều đúng:

  • Yêu cầu chỉ đường bao gồm tham số khởi hành_giờ_đi_chỉ được đặt thành giá trị trong vòng vài phút kể từ thời điểm hiện tại.
  • Yêu cầu bao gồm một ứng dụng khách Google Maps API for Work hợp lệ và thông số chữ ký .
  • Điều kiện giao thông có sẵn cho tuyến đường yêu cầu.
  • Yêu cầu chỉ đường không bao gồm các điểm dừng chân.

13

Bạn có thể muốn xem DỊCH VỤ BẢN ĐỒ TẠI ĐÂY. Họ có dữ liệu lưu lượng truy cập trực tiếp mà bạn có thể sử dụng, đó chính là thứ bạn cần: https://developer.here.com/api-explorer/rest/traffic/traffic-flow-bounds-box

Ví dụ: bằng cách truy vấn một lĩnh vực quan tâm, bạn có thể nhận được một thứ như sau:

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

Ví dụ này cho thấy tốc độ trung bình hiện tại là SU9,1, trong đó tốc độ dòng chảy tự do FFsẽ là 17. Hệ số Jam JFlà 3,3, vẫn được coi là dòng chảy tự do nhưng đang chậm dần. Các đơn vị sử dụng (dặm / km) có thể được định nghĩa trong các cuộc gọi API. Để tránh giao dịch với các vị trí TMC, bạn có thể yêu cầu tọa độ địa lý của các đoạn đường bằng cách thêm responseattributes=shvào yêu cầu.

Các từ viết tắt được sử dụng có thể được tìm thấy tại đây Diễn giải các thẻ giao thông thời gian thực của HERE Maps :

  • "RWS" - Danh sách các hạng mục Đường (RW)
  • "RW" = Đây là hạng mục tổng hợp cho dòng chảy trên toàn bộ con đường. Mỗi con đường sẽ có một hạng mục lòng đường với thông tin về luồng giao thông
  • "FIS" = Danh sách các phần tử Mục dòng (FI)
  • "FI" = Một mục dòng duy nhất
  • "TMC" = Tập hợp các vị trí TMC theo thứ tự
  • "PC" = Mã vị trí Point TMC
  • "DE" = Văn bản mô tả con đường
  • "QD" = Hướng xếp hàng. '+' hoặc '-'. Lưu ý rằng điều này ngược lại với hướng di chuyển trong ID đủ điều kiện, Ví dụ: đối với vị trí 107 + 03021, QD sẽ là '-'
  • "LE" = Chiều dài của đoạn đường. Các đơn vị được xác định trong tiêu đề tệp
  • "CF" = Dòng chảy. Phần tử này chứa thông tin chi tiết về tốc độ và Thông tin về yếu tố kẹt cho mục quy trình đã cho.
  • "CN" = Độ tin cậy, một chỉ báo về cách xác định tốc độ. -1.0 đường bị đóng. 1,0 = 100% 0,7-100% Lịch sử Thường có giá trị từ 0,7 đến 1,0 "FF" = Tốc độ dòng chảy tự do trên
    đoạn đường này.
  • "JF" = Số từ 0,0 đến 10,0 cho biết chất lượng du lịch mong đợi. Khi có một con đường bị đóng, Hệ số Kẹt xe sẽ là 10. Khi con số này tiến gần đến 10,0, chất lượng đi lại ngày càng trở nên tồi tệ. -1.0 cho biết rằng không thể tính được Hệ số kẹt
  • "SP" = Tốc độ (dựa trên UNITS) bị giới hạn bởi giới hạn tốc độ
  • "SU" = Tốc độ (dựa trên UNITS) không bị giới hạn bởi giới hạn tốc độ
  • "TY" = Nhập thông tin cho vùng chứa Tham chiếu Vị trí nhất định. Đây có thể là chuỗi được xác định tự do

Ngoài ra nguồn đến từ https://developer.here.com/rest-apis/documentation/traffic/topics/additional-parameters.html


1
Mặc dù liên kết này có thể trả lời câu hỏi, nhưng tốt hơn hết bạn nên đưa các phần thiết yếu của câu trả lời vào đây và cung cấp liên kết để tham khảo. Các câu trả lời chỉ có liên kết có thể trở nên không hợp lệ nếu trang được liên kết thay đổi. - Từ đánh giá
CinCout

3
@CinCout Cảm ơn vì những đề xuất. Tôi đã cập nhật bài viết của mình.
Costa Huang

Làm cách nào để xác định ID Đủ điều kiện được mô tả trong trường QD?
diegopso


6

Thay vì cố gắng lấy dữ liệu lưu lượng truy cập thô, bạn có thể thử một cách tiếp cận khác. API Google Directions cho phép bạn truy vấn api với một tuyến đường cụ thể và kết quả là trả về một chuỗi JSON hoặc phần tử XML. Kết quả này bao gồm phần tử - 'time_in_traffic' Điều này cho biết tổng thời lượng của chặng cụ thể của hành trình, có tính đến điều kiện giao thông hiện tại. (để biết thông tin về 'chân' và các phần tử khác của chuỗi JSON được trả về bởi liên kết tham khảo Directions API bên dưới)

https://developers.google.com/maps/documentation/directions/#JSON Tôi chưa thử điều này mà chỉ là một cái gì đó tôi đã xem qua trong tài liệu.


Nó không hoạt động vì Google trả về chiều dài và thời lượng của chuyến đi mà không xem xét tình trạng giao thông. Ý tôi là, nó trả về các con số giống nhau cho dù đó là giờ cao điểm hay đêm yên tĩnh :(
4lberto

1
Nó hoạt động nếu bạn có một tài khoản trả phí với google maps, tuy nhiên đăng ký này rất đắt và việc sử dụng dữ liệu bị hạn chế.
Betelortuguese

5

Ở Ấn Độ, chúng tôi đang sử dụng http://www.itrafficnews.com . Nhưng dữ liệu được đăng bởi người dùng. Tôi không nghĩ rằng google sẽ cung cấp dữ liệu.


4

Có lẽ bạn nên xem API lưu lượng của Mapquests: http://www.mapquestapi.com/traffic/

Thật không may, dịch vụ web chỉ có sẵn cho một số thành phố ở Hoa Kỳ. Nhưng có lẽ nó giải quyết được vấn đề của bạn.


3

Tôi không nghĩ rằng Google sẽ cung cấp API này. Và dữ liệu lưu lượng không chỉ chứa dữ liệu sự cố.

Ngày nay, nhiều bản đồ trực tuyến hiển thị giao thông thành phố, nhưng chúng không cung cấp API cho nhà phát triển. Chúng tôi thậm chí không biết họ lấy dữ liệu lưu lượng ở đâu. Có thể chính phủ có dữ liệu.

Vì vậy, tôi nghĩ bạn có thể nghĩ về nó từ một hướng khác. Ví dụ, có rất nhiều trang web mạng xã hội trên mạng. Mọi người đều có thể đăng thông tin về lưu lượng truy cập trên trang web. Chúng tôi có thể thu thập những thông tin này để có được tình trạng giao thông. Hoặc có thể chúng ta có thể tạo một trang web kiểu này.

Nhưng dữ liệu lưu lượng kiểu đó (đã nói ở trên) không chính xác. Ngay cả thông tin được cung cấp bởi con người sẽ bị sai.

May mắn thay, tôi thấy rằng thành phố của tôi hiện cung cấp một Ứng dụng di động có tên là "Thông tin xe buýt thời gian thực". Nó có thể cho người dân biết xe buýt hiện đang ở đâu và khi nào sẽ đến bến xe. Và tôi đánh hơi API REST trong Ứng dụng này. Dữ liệu từ API REST cung cấp dữ liệu quan trọng, ví dụ như vĩ độ và kinh độ, và cả tốc độ xe buýt. Và đó là dữ liệu thời gian thực! Vì vậy, tôi nghĩ chúng ta có thể tính toán trạng thái lưu lượng từ những dữ liệu này (bằng một số lập trình). Đây là một số dữ liệu mẫu: https://github.com/sp-chenyang/bus/blob/master/sample_data/bjgj_aibang_com_8899_bjgj_php_city_linename_stationno_datatype_type.json

Ngay cả dữ liệu xe buýt cũng sẽ không đủ để tính toán tình trạng giao thông thời gian thực chính xác. Sự cố, đèn giao thông và những thứ khác sẽ ảnh hưởng đến tình trạng giao thông. Nhưng tôi nghĩ đây là sự khởi đầu.

Cuối cùng, tôi nghĩ bạn có thể thử tìm xem thành phố của bạn có cung cấp những dữ liệu này hay không.

Tái bút: Tôi luôn nghĩ rằng cuộc sống của mọi người sẽ tốt hơn trong tương lai, nhưng không phải bây giờ.


3

Có thể lấy dữ liệu lưu lượng. Dưới đây là cách thực hiện của tôi trong python. API có một số hạn ngạch và không hoàn toàn miễn phí, nhưng đủ tốt cho các dự án nhỏ

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)

Câu trả lời là: -

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

Bạn cần chuyển "departure_time":str(int(time.time()))là tham số chuỗi truy vấn bắt buộc cho thông tin lưu lượng.

Thông tin giao thông của bạn sẽ có trong duration_in_traffic.

Tham khảo tài liệu này để biết thêm thông tin.

https://developers.google.com/maps/documentation/distance-matrix/intro#traffic-model

nếu tôi cần thử nó, tôi chỉ phải thay thế khóa của tôi trên "GetYourKeyHere" hoặc có cái gì khác? bởi vì tôi đã có một lỗi vì vậy tôi muốn chắc chắn rằng sáng một cách đúng đắn
Fatima

0

Có một dự án mang tên Open Traffic hiện chưa hoạt động đầy đủ nhưng có vẻ là câu trả lời phù hợp trong tương lai.

OpenTraffic là một nền tảng dữ liệu toàn cầu để xử lý các vị trí ẩn danh của xe cộ và điện thoại thông minh thành các thống kê giao thông lịch sử và thời gian thực. Chúng tôi đang xây dựng điều này theo hướng mở, sử dụng phần mềm hoàn toàn nguồn mở, với sự tham gia của danh sách đối tác ngày càng tăng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.