قم بالوصول إلى بيانات حركة المرور الخاصة بـ Google من خلال خدمة الويب

StackOverflow https://stackoverflow.com/questions/4600656

  •  25-09-2019
  •  | 
  •  

سؤال

هل هناك طريقة يمكنني من خلالها الوصول إلى بيانات حركة المرور التي توفرها Google من خلال خدمة الويب؟

يبدو أن هناك أ GTrafficOverlay الذي يضع حركة المرور أعلى المسار على خريطة جوجل المضمنة، ولكن لا توجد خدمة ويب مباشرة يمكنني استخدامها، على سبيل المثال، لإعطاء المصدر والوجهة والعثور على حركة المرور بينهما؟

هل هناك أي مصدر آخر يمكنني الحصول على هذه البيانات منه؟

هل كانت مفيدة؟

المحلول

لا توجد طريقة (أو على الأقل لا توجد طريقة سهلة ومريحة بشكل معقول) للحصول على بيانات حركة المرور الخام من خرائط Google JavaScript API V3. حتى لو كان بإمكانك القيام بذلك ، فمن المحتمل أن ينتهك القيام ببعض الشرط في شروط الخدمة لخرائط Google. سيكون عليك الحصول على هذه المعلومات من خدمة أخرى. أشك في أن هناك خدمة مجانية توفر هذه المعلومات في الوقت الحالي ، لكنني أحب ذلك إذا أثبت لي أحدهم خطأ في ذلك.

كما يشير crdzoba ، Bing Maps API تكشف بعض بيانات حركة المرور. ربما يمكن أن تملأ احتياجاتك. ليس من الواضح من الوثائق مقدار بيانات حركة المرور التي تعرضها لأنها فقط بيانات حول "الحوادث". ستكون حركة المرور البطيئة بسبب البناء موجودة هناك ، لكن ليس من الواضح بالنسبة لي ما إذا كانت حركة المرور البطيئة بسبب الحجم ستكون كذلك.

تحديث (مارس 2016): لقد حدث الكثير منذ كتابة هذه الإجابة في عام 2011 ، ولكن يبدو أن النقاط الأساسية تصمد: لن تجد بيانات حركة المرور الخام في مجانا خدمات API (على الأقل ليس للولايات المتحدة ، وربما ليس معظم الأماكن الأخرى). ولكن إذا كنت لا تمانع في دفع القليل و/أو إذا كنت بحاجة فقط إلى "وقت السفر لمسار معين مع مرور حركة المرور" لديك خيارات. @إجابة أنتو, ، على سبيل المثال ، يشير إلى خرائط Google للعمل كخدمة واجهة برمجة تطبيقات مدفوعة الأجر تتيح لك الحصول على أوقات السفر مع مرور حركة المرور في الاعتبار.

نصائح أخرى

يبدو أن المعلومات متاحة باستخدام توجيهات Google API في نسختها المهنية خرائط للعمل. بالنسبة الى وثائق واجهة برمجة التطبيقات:

ملاحظة: يجب أن تتضمن خرائط مستخدمي العمل معلمات العميل والتوقيع مع طلباتهم بدلاً من المفتاح.
[...]
مدة _en_traffic يشير إلى المدة الإجمالية لهذا الساق ، مع مراعاة ظروف حركة المرور الحالية. لن يتم إرجاع المدة في حركة المرور إلا إذا كانت كل ما يلي صحيحًا:

  • يتضمن طلب الاتجاهات معلمة eventure_time تم تعيينها على قيمة في غضون بضع دقائق من الوقت الحالي.
  • يتضمن الطلب واجهة برمجة تطبيقات خرائط Google صالحة لعميل العمل ومعلمة التوقيع.
  • تتوفر ظروف حركة المرور للطريق المطلوب.
  • لا يتضمن طلب الاتجاهات نقاط التوقف.

Bing Maps API لديها خدمة REST التي تُرجع معلومات حركة المرور

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

قد ترغب في إلقاء نظرة على خدمة الخرائط هنا.لديهم بيانات حركة المرور المباشرة التي يمكنك استخدامها، وهو بالضبط ما تحتاجه: 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
                    }
                  ]
                }
              ]
            }
          ],
....

يوضح هذا المثال متوسط ​​السرعة الحالية SU 9.1، حيث سرعة التدفق الحر FF سيكون 17.عامل المربى JF هو 3.3، وهو لا يزال يعتبر التدفق الحر ولكن الحصول على بطيئا.يمكن تحديد الوحدات المستخدمة (أميال/كم) في استدعاء واجهة برمجة التطبيقات (API).لتجنب التعامل مع مواقع TMC، يمكنك طلب الإحداثيات الجغرافية لأجزاء الطريق عن طريق الإضافة responseattributes=sh في الطلب.

يمكن العثور على الاختصارات المستخدمة هنا الترجمة الفورية هنا ترسم علامات حركة المرور في الوقت الفعلي:

  • "RWS" - قائمة بعناصر الطريق (RW).
  • "RW" = هذا هو العنصر المركب للتدفق عبر طريق بأكمله.سيكون هناك عنصر طريق لكل طريق مع معلومات تدفق حركة المرور المتاحة
  • "FIS" = قائمة عناصر عنصر التدفق (FI).
  • "FI" = عنصر تدفق واحد
  • "TMC" = مجموعة مرتبة من مواقع TMC
  • "PC" = رمز موقع Point TMC
  • "DE" = الوصف النصي للطريق
  • "QD" = اتجاه قائمة الانتظار."+" أو "-".لاحظ أن هذا هو عكس اتجاه السفر في المعرف المؤهل تمامًا ، على سبيل المثال للموقع 107+03021 سيكون QD "-"
  • "LE" = طول امتداد الطريق.يتم تعريف الوحدات في رأس الملف
  • "CF" = التدفق الحالي.يحتوي هذا العنصر على تفاصيل حول معلومات السرعة وعامل الانحشار لعنصر التدفق المحدد.
  • "CN" = الثقة، وهي إشارة إلى كيفية تحديد السرعة.-1.0 الطريق مغلق.1.0 = 100 ٪ 0.7-100 ٪ تاريخية عادة ما بين .7 و 1.0 "FF" = سرعة التدفق الحرة في هذا
    امتداد الطريق.
  • "JF" = الرقم بين 0.0 و10.0 الذي يشير إلى جودة السفر المتوقعة.عندما يكون هناك إغلاق الطريق ، سيكون عامل المربى 10.مع اقتراب الرقم 10.0 تزداد جودة السفر.-1.0 يشير إلى أنه لا يمكن حساب عامل المربى
  • "SP" = السرعة (استنادًا إلى الوحدات) محددة بحد السرعة
  • "SU" = السرعة (استنادًا إلى الوحدات) غير محددة بحد السرعة
  • "TY" = اكتب معلومات لحاوية مرجع الموقع المحددة.قد تكون هذه سلسلة محددة بحرية

كما يأتي المصدر منhttps://developer.here.com/rest-apis/documentation/traffic/topics/additional-parameters.html

في الهند نحن نستخدمها http://www.itrafficnews.com. ولكن يتم نشر البيانات من قبل المستخدمين. لا أعتقد أن Google ستوفر البيانات.

بدلاً من محاولة سحب بيانات حركة المرور الخام ، يمكنك تجربة نهج مختلف. تتيح لك API لتوجيهات Google الاستعلام عن واجهة برمجة التطبيقات بمسار معين وإرجاع سلسلة JSON أو عنصر XML نتيجة لذلك. تتضمن هذه النتيجة العنصر - "matter_in_traffic" يشير هذا إلى المدة الإجمالية للساق المعينة في الرحلة ، مع مراعاة ظروف حركة المرور الحالية. (للحصول على معلومات حول "الساق" والعناصر الأخرى لسلسلة JSON التي تم إرجاعها بواسطة API التوجيهات ، قم بإشارة الرابط أدناه)

https://developers.google.com/maps/documentation/directions/#jsonلم أجرب هذا بنفسي ولكن مجرد شيء صادفته في الوثائق.

ربما يجب أن تلقي نظرة على واجهة برمجة تطبيقات حركة المرور في MapQuests: http://www.mapquestapi.com/traffic/

إن خدمة الويب متاحة للأسف فقط لبعض المدن في الولايات المتحدة ، على ما أعتقد. ولكن ربما يحل مشكلتك.

لا أعتقد أن Google ستوفر واجهة برمجة التطبيقات هذه. وبيانات حركة المرور لا تحتوي فقط على بيانات الحادث.

تُظهر العديد من الخرائط عبر الإنترنت اليوم حركة مرور المدينة ، لكنها لم تقدم واجهة برمجة التطبيقات للمطور. حتى أننا لا نعرف من أين يحصلون على بيانات حركة المرور. ربما الحكومة لديها البيانات.

لذلك أعتقد أنك يمكن أن تفكر في الأمر من اتجاه آخر. على سبيل المثال ، هناك العديد من موقع الشبكة الاجتماعية. يمكن للجميع نشر معلومات المرور على الموقع. يمكننا جمع هذه المعلومات للحصول على حالة حركة المرور. أو ربما يمكننا إنشاء موقع ويب هذا النوع.

لكن بيانات حركة المرور هذه (التي تم الحديث عنها أعلاه) ليست دقيقة. حتى المعلومات التي يوفرها الإنسان ستكون خاطئة.

لحسن الحظ ، وجدت أن مدينتي توفر الآن تطبيقًا للهاتف المحمول يسمى "معلومات الحافلة في الوقت الفعلي". يمكن أن تخبر المواطن أين توجد الحافلة الآن ، ومتى ستصل إلى محطة الحافلات. وأنا شم API الباقي في هذا التطبيق. تعطي البيانات من API REST البيانات المهمة ، على سبيل المثال LAT و LON ، وكذلك سرعة الحافلة. وهي بيانات في الوقت الفعلي! لذلك أعتقد أنه يمكننا حساب حالة حركة المرور من هذه البيانات (بواسطة بعض البرمجة). فيما يلي بعض بيانات العينة: https://github.com/sp-chenyang/bus/blob/master/sample_data/bjgj_aibang_com_8899_bjgj_php_city_linename_stationno_datatype_type.json

حتى بيانات الحافلة لن تكفي لحساب حالة حركة المرور الدقيقة في الوقت الفعلي. الحوادث وضوء حركة المرور وغيرها من الأشياء سوف تؤثر على حالة حركة المرور. لكنني أعتقد أن هذه هي البداية.

في النهاية ، أعتقد أنه يمكنك محاولة العثور على ما إذا كانت مدينتك توفر هذه البيانات.

ملاحظة: أفكر دائمًا أن الحياة ستكون أفضل للناس في المستقبل ، ولكن ليس الآن.

من الممكن الحصول على بيانات حركة المرور. فيما يلي تنفيذي في بيثون. تحتوي واجهة برمجة التطبيقات على بعض الحصص وليست مجانية تمامًا ، لكنها جيدة بما يكفي للمشاريع الصغيرة

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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top