बड़े वाहनों के रास्ते और पहुंचने का अनुमानित समय जनरेट करना

यह गाइड किसके लिए है: अगर आप ट्रक या अन्य बड़े वाहनों का इस्तेमाल करके, यात्रा की योजना बनाने और उसे पूरा करने से जुड़ी सेवाएं बनाने वाले डेवलपर हैं, तो यह गाइड पढ़ें. इन एपीआई का इस्तेमाल, यात्रा में लगने वाले समय और दूरी का हिसाब लगाने, पहुंचने का अनुमानित समय (ईटीए) का पता लगाने या ऐसे रास्ते जनरेट करने के लिए किया जा सकता है जिनका इस्तेमाल नेविगेशन ऐप्लिकेशन करेगा.

इस गाइड में क्या शामिल है: इस गाइड में बताया गया है कि बड़े वाहन के हिसाब से रास्तों की जानकारी देने वाली सुविधा के साथ Routes API का इस्तेमाल कैसे किया जाता है. इससे रास्तों, यात्रा की दूरी, यात्रा में लगने वाले अनुमानित समय, और ईटीए का अनुरोध किया जा सकता है. इसमें बड़े वाहन की खास बातों का ध्यान रखा जाता है. जैसे, कमर्शियल ट्रक या यात्री बस.

अगर आपको Route Optimization API का इस्तेमाल करके, बड़े वाहनों के फ़्लीट-लेवल के हिसाब से हिसाब लगाने के तरीके के बारे में जानकारी चाहिए, तो Route Optimization API के ट्रक राउटिंग से जुड़े दस्तावेज़ देखें.

आपको क्या सीखने को मिलेगा

आपको इनके बारे में जानकारी मिलेगी:

  • रूटिंग का मान्य अनुरोध बनाएं.
  • अपने वाहन के लिए, डाइमेंशन, वज़न, और अन्य विशेषताओं का इस्तेमाल करके, वाहन की प्रोफ़ाइल तय करें.
  • जवाब को समझें. इसमें रूट टोकन और यात्रा की सुरक्षा से जुड़े फ़्लैग शामिल हैं.

ज़रूरी शर्तें

  1. आपका Google Cloud प्रोजेक्ट बना होना चाहिए और Routes API चालू होना चाहिए.
  2. आपके प्रोजेक्ट में बड़े वाहनों के लिए रूटिंग की सुविधा चालू होनी चाहिए. यह चरण पूरा करने के लिए, अपने Google प्रतिनिधि से संपर्क करें.

सीमाएं

शुरू करने से पहले, आपको यहां दी गई ज़रूरी शर्तों और सीमाओं के बारे में पता होना चाहिए.

  • उपलब्धता: बड़े वाहनों के लिए रूटिंग की सुविधा, सिर्फ़ अमेरिका के 48 राज्यों में उपलब्ध है.
  • बड़े वाहनों के लिए रास्तों की जानकारी देने की सुविधा, Preview-stage में उपलब्ध है. ड्राइवरों को सुरक्षित या कानूनी तौर पर सही रास्ते के लिए, सिर्फ़ इस एपीआई से मिले रास्तों पर भरोसा नहीं करना चाहिए. इस बात की कोई गारंटी नहीं है कि सुझाए गए रास्ते, वाहन के हिसाब से सही होंगे. इन रास्तों पर चलने से, ड्राइवर को कम ऊंचाई वाले पुल या ऐसी सड़कों पर जाने का खतरा हो सकता है जहां बड़े वाहनों को जाने की अनुमति नहीं है.
  • बेस्ट-एफ़र्ट राउट. कुछ मामलों में, एपीआई ऐसा रास्ता नहीं ढूंढ पाता जो यात्रा से जुड़ी पाबंदियों का पूरी तरह से पालन करता हो. इसके बजाय, यह "सबसे अच्छा" रास्ता दिखाता है. हालांकि, ऐसा हो सकता है कि यह रास्ता अब भी प्रतिबंधित इलाकों से होकर गुज़रे. Routes API से मिले जवाब में, routeRestrictionsPartiallyIgnored फ़ील्ड में इन रास्तों को साफ़ तौर पर फ़्लैग किया जाता है. ऐसे मामलों में, अपने रास्ते की योजना सावधानी से बनाएं. इसके लिए, सबसे अच्छा तरीका है कि आप किसी अन्य सोर्स के डेटा का इस्तेमाल करें. प्लानिंग या नेविगेशन के लिए, फ़्लैग किए गए रास्ते को भरोसेमंद सोर्स के तौर पर इस्तेमाल न करें.
  • काम न करने वाली सुविधाएं: हम इस सुविधा में और भी सुविधाएं जोड़ने पर काम कर रहे हैं. हालांकि, बड़े वाहनों के लिए रूटिंग की सुविधा में ये सुविधाएं काम नहीं करती हैं:
    • ट्रक के टोल की कीमतें
    • गति की सीमाएं
    • रेडियोऐक्टिव खतरनाक सामान के लिए रूटिंग
  • इस्तेमाल की सीमाएं: सभी अनुरोधों पर, क्वेरी प्रति सेकंड (क्यूपीएस) की स्टैंडर्ड सीमाएं लागू होती हैं.

ट्रक के रास्ते के लिए अनुरोध बनाना

ट्रक का रास्ता पाने के लिए, Routes API के एंडपॉइंट पर एचटीटीपीएस अनुरोध भेजा जाता है. इसमें कुछ ऐसे पैरामीटर होते हैं जिनसे आपके वाहन के बारे में जानकारी मिलती है.

एंडपॉइंट

ट्रक रूटिंग के लिए, दो एंडपॉइंट इस्तेमाल किए जा सकते हैं:

  • computeRoutes: यह एक शुरुआती जगह और एक मंज़िल के बीच का एक रूट कैलकुलेट करता है.
  • computeRouteMatrix: यह फ़ंक्शन, शुरुआती और मंज़िल की जगहों के मैट्रिक्स के लिए दूरी और अवधि का हिसाब लगाता है. हालांकि, यह रास्ते की पॉलीलाइन नहीं दिखाता है.

अनुरोध के मुख्य पैरामीटर

अनुरोध के मुख्य हिस्से में, यह जानकारी शामिल करना ज़रूरी है:

  • travelMode: इस वैल्यू को TRUCK पर सेट करें.
  • routingPreference: इस वैल्यू को TRAFFIC_AWARE_OPTIMAL पर सेट करें.
  • routeModifiers: इस ऑब्जेक्ट में vehicleInfo ऑब्जेक्ट होता है. इसमें वाहन के एट्रिब्यूट तय किए जाते हैं. vehicleInfo ऑब्जेक्ट के बारे में यहां ज़्यादा जानकारी दी गई है.

वाहन की प्रोफ़ाइल तय करना

अनुरोध भेजने के लिए, आपको अनुरोध के मुख्य हिस्से में एक vehicleInfo ऑब्जेक्ट देना होगा. यह ऑब्जेक्ट, आपके वाहन के बारे में जानकारी देता है. इस जानकारी को एक स्पेसिफ़िकेशन के तौर पर समझें. यह आपके वाहन की असल दुनिया की जानकारी से मेल खाती है. इस सेवा को यह जानकारी इसलिए चाहिए, ताकि वह ऐसे रास्ते दिखा सके जिन पर सड़क से जुड़ी पाबंदियों का पालन किया जाता हो. ये पाबंदियां, आपकी गाड़ी की विशेषताओं के आधार पर तय की जाती हैं.

वाहन की माप

वाहन का वज़न किलोग्राम में और वाहन के डाइमेंशन मिलीमीटर में डालें. जैसा कि फ़ील्ड के नामों से पता चलता है. उदाहरण के लिए, कुल ऊंचाई को मिलीमीटर (totalHeightMm) में दिखाना चाहिए. ट्रक के डाइमेंशन को अक्सर फ़ीट या मीटर में दिखाया जाता है. इसलिए, इसके लिए यूनिट बदलने की ज़रूरत पड़ सकती है.

इंपीरियल से मेट्रिक में बदलना

इंपीरियल यूनिट से कन्वर्ज़न करते समय, हमेशा अपनी गाड़ी के डाइमेंशन के साथ-साथ, सड़क और अंडरपास के साइज़ की स्टैंडर्ड सीमाओं को ध्यान में रखें. यह खास तौर पर, फ़्रैक्शनल वैल्यू के लिए अहम हो सकता है. वाहन के असल साइज़ के हिसाब से, भिन्नात्मक वैल्यू को पूर्णांक में बदलने से, वाहन के लिए रूटिंग बहुत ज़्यादा सीमित हो सकती है.

उदाहरण के लिए:

  • चौड़ाई: अमेरिका में कई ट्रेलर की चौड़ाई 8' 6" होती है, जो 2,590.8 मि॰मी॰ के बराबर होती है. 2,591 मि॰मी॰ तक राउंड अप करने से पता चलेगा कि वाहन 8' 6" से ज़्यादा है. इससे अमेरिका की सड़कों पर इसे बड़े साइज़ के वाहन के तौर पर क्लासिफ़ाई किया जाएगा. इससे, आपको ऐसा रास्ता मिलेगा जो आपकी ज़रूरत के हिसाब से नहीं होगा. ऐसा इसलिए होगा, क्योंकि रास्ते का हिसाब लगाने के लिए, आपकी ज़रूरत से अलग शर्तों का इस्तेमाल किया गया होगा.
  • ऊंचाई: 11 फ़ीट ऊंचे पुल के नीचे से गुज़रने वाला रास्ता, 13.5 फ़ीट ऊंचे सामान्य ट्रैक्टर-ट्रेलर के लिए सही नहीं होगा. हालांकि, 10 फ़ीट के छोटे बॉक्स ट्रक अंडरपास से गुज़र सकते हैं. इसलिए, यह ज़रूरी है कि आप अपने वाहन के एट्रिब्यूट की जानकारी सटीक तरीके से दें.

एक डायग्राम में, अंडरपास के डाइमेंशन के हिसाब से ट्रक के डाइमेंशन दिखाए गए हैं

यहां एक कोड स्निपेट दिया गया है, जिसमें vehicleInfo ऑब्जेक्ट का उदाहरण दिखाया गया है:

"vehicleInfo": {
      "totalAxleCount": 5,
      "totalHeightMm": 4114,
      "totalLengthMm": 21945,
      "totalWidthMm": 2590,
      "totalWeightKg": 32658,
      "trailerInfo": [{
        "lengthMm": 16154
      }

vehicleInfo ऑब्जेक्ट फ़ील्ड

इस टेबल में, वाहन और लोड की उन सभी परिभाषाओं को दिखाया गया है जिन्हें अनुरोध के साथ भेजा जा सकता है.

फ़ील्ड ब्यौरा ध्यान दें / वैल्यू
totalHeightMm वाहन की ज़्यादा से ज़्यादा ऊंचाई. मिलीमीटर में, पूर्णांक बनाकर. राउंडिंग के बारे में ज़्यादा जानने के लिए, इंपीरियल से मेट्रिक में कन्वर्ज़न देखें.
totalWidthMm वाहन की ज़्यादा से ज़्यादा चौड़ाई. मिलीमीटर में, पूर्णांक बनाकर.
totalLengthMm वाहन और किसी भी ट्रेलर की कुल लंबाई. मिलीमीटर में, पूर्णांक बनाकर.
totalWeightKg वाहन का कुल वज़न (इसमें ट्रेलर और लोड शामिल है). किलोग्राम में, कम करके दिखाई गई वैल्यू.
totalAxleCount वाहन और किसी भी ट्रेलर पर मौजूद एक्सल की कुल संख्या. एग्ज़ैक्ट.
trailerInfo (ज़रूरी नहीं है) ऑब्जेक्ट का कलेक्शन. हर ट्रेलर के लिए एक ऑब्जेक्ट. अगर वाहन में ट्रेलर नहीं है, तो इसे शामिल न करें. जैसे, बॉक्स ट्रक.
hazardousGoodsTypes (ज़रूरी नहीं है) यह एक कैटगरी है. इसमें जहाज़ पर मौजूद किसी भी खतरनाक सामान के बारे में बताया जाता है. EXPLOSIVES, GASES, FLAMMABLE, COMBUSTIBLE, ORGANIC, POISON, CORROSIVE, ASPIRATION_HAZARD, ENVIRONMENTAL_HAZARD, OTHER

फ़ील्ड मास्क का इस्तेमाल करना

बेहतर नतीजे पाने के लिए, अपने अनुरोध में X-Goog-FieldMask हेडर शामिल करें. इससे यह तय किया जा सकेगा कि आपको जवाब में कौनसे फ़ील्ड चाहिए. फ़ील्ड मास्क से, इंतज़ार का समय कम हो जाता है. साथ ही, यह पक्का होता है कि आपको सलाह देने वाले ज़रूरी फ़ील्ड मिलें. कम से कम, फ़ील्ड मास्क में हमेशा routes.travelAdvisory.routeRestrictionsPartiallyIgnored शामिल करें. इससे पता चलता है कि रास्ते पर एक या उससे ज़्यादा पाबंदियां हैं या नहीं, जो आपके वाहन पर लागू होती हैं.

Routes API के साथ FieldMasks के बारे में ज़्यादा जानने के लिए, यह लेख पढ़ें.

टोल

टोल-फ़्री रास्तों को प्राथमिकता देने के लिए, अनुरोध की routeModifiers प्रॉपर्टी में avoidTolls डालें. रास्ते में बदलाव करने वाले पैरामीटर के बारे में ज़्यादा जानने के लिए, रास्ते की उन सुविधाओं के बारे में बताना जिन्हें आपको शामिल नहीं करना है लेख पढ़ें.

avoidTolls को तय करने से, जवाब में बिना शुल्क वाले रूट की गारंटी नहीं मिलती. कुछ मामलों में, शुरुआती जगह से मंज़िल तक जाने के लिए टोल रोड का इस्तेमाल करना ज़रूरी होता है. अगर आपने Routes API के अनुरोध की फ़ील्डमास्क में routes.warnings शामिल किया है, तो टोल वाली सड़कों वाले रास्तों को इस फ़ील्ड में उसी के मुताबिक एनोटेट किया जाएगा.

पूरे कर्ल अनुरोध का उदाहरण

यहां एक सामान्य सेमी-ट्रेलर ट्रक के लिए, कर्ल अनुरोध दिया गया है. इस उदाहरण में एंडपॉइंट, हेडर, और अनुरोध का मुख्य हिस्सा शामिल है.

curl --location 'https://routes.googleapis.com/directions/v2:computeRoutes' \
--header 'Content-Type: application/json' \
--header 'X-Goog-Api-Key: YOUR_API_KEY' \
--header 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.routeToken,routes.travelAdvisory.routeRestrictionsPartiallyIgnored' \
--data '{
 "origin": {
    "location": {
      "latLng": {
        "latitude": 40.883274,
        "longitude": -74.704574
      }
    }
  },
  "destination": {
    "location": {
      "latLng": {
        "latitude": 40.991920,
        "longitude": -75.183371
      }
    }
  },
  "travelMode": "TRUCK",
  "routingPreference": "TRAFFIC_AWARE_OPTIMAL",
  "routeModifiers": {
    "vehicleInfo": {
      "totalAxleCount": 5,
      "totalHeightMm": 4114,
      "totalLengthMm": 21945,
      "totalWidthMm": 2590,
      "totalWeightKg": 32658,
      "trailerInfo": [{
        "lengthMm": 16154
      }]
    }
  }
}'

computeRoutes के जवाब को समझना

Routes API को भेजा गया अनुरोध पूरा होने पर, JSON रिस्पॉन्स ऑब्जेक्ट मिलता है. इसमें एक या उससे ज़्यादा संभावित रास्ते होते हैं.

जवाब के मुख्य फ़ील्ड

  • कोड में बदली गई रास्ते की ज्यामिति: routes.polyline. इसका इस्तेमाल, मैप पर रास्ता दिखाने के लिए किया जा सकता है.
  • यात्रा की अनुमानित अवधि: routes.duration (सेकंड में). बड़े वाहनों के लिए यात्रा की अवधि का अनुमान लगाने के लिए, एक नए मॉडल का इस्तेमाल किया जाता है. इस मॉडल को सड़क नेटवर्क पर मौजूद ट्रक की यात्रा की रफ़्तार के आधार पर ट्रेन किया गया है. इसका इस्तेमाल ईटीए का हिसाब लगाने के लिए भी किया जा सकता है. इसके लिए, यात्रा की अनुमानित अवधि को वाहन के रवाना होने के अनुमानित समय में जोड़ा जाता है.
  • रास्ते की कुल दूरी: routes.distanceMeters (मीटर में).
  • राउटर टोकन: routes.routeToken. यह एक अपारदर्शी टोकन है. यह कैलकुलेट किए गए सटीक रास्ते को दिखाता है. इस टोकन को Navigation SDK को पास किया जाता है, ताकि ड्राइवर को ट्रक के हिसाब से तय किया गया रूट दिखाया जा सके. ऐसा करने के तरीके के बारे में ज़्यादा जानने के लिए, टर्न-बाय-टर्न नेविगेशन की सुविधा उपलब्ध कराना गाइड देखें.

रास्ते की सुरक्षा से जुड़े फ़्लैग की जांच करना

जवाब मिलने पर, सबसे पहले आपको रास्ते की सुरक्षा से जुड़े फ़्लैग देखने चाहिए. अगर दिए गए रास्ते में एक या उससे ज़्यादा पाबंदियां हैं, जिनकी वजह से वह रास्ता वाहन के लिए सही नहीं है, तो आपको travelAdvisory.routeRestrictionsPartiallyIgnored फ़ील्ड में true दिखेगा.

यह फ़ील्ड, इस सवाल का जवाब देने के लिए फ़्लैग के तौर पर काम करता है: "क्या इस रास्ते को किसी संभावित समस्या के लिए फ़्लैग किया गया है?"

  • false(या जवाब में शामिल नहीं है): इस रास्ते को फ़्लैग नहीं किया गया है. सिस्टम को एक ऐसा रास्ता मिला है जो अनुरोध में दिए गए पैरामीटर के पूरी तरह से मुताबिक़ है.
  • true: इस रास्ते को फ़्लैग किया गया है. सिस्टम को पूरी तरह से नियमों का पालन करने वाला रूट नहीं मिला. इसलिए, उसने "बेस्ट एफर्ट" रूट दिखाया है. यह रूट सुरक्षित या कानूनी नहीं हो सकता. इस रास्ते का इस्तेमाल बहुत सावधानी से करना चाहिए.

उदाहरण: computeRoutes जवाब

ऊपर दिखाए गए अनुरोध के लिए, जवाब का एक उदाहरण यहां दिया गया है. ध्यान दें कि travelAdvisory ऑब्जेक्ट में, routeRestrictionsPartiallyIgnored फ़्लैग शामिल नहीं है. इससे पता चलता है कि रूट को फ़्लैग नहीं किया गया है और यह माना जाता है कि यह वाहन की प्रोफ़ाइल के मुताबिक है.

{
  "routes": [
    {
      "distanceMeters": 3426,
      "duration": "312s",
      "travelAdvisory": {},
      "routeToken": "CogCCogBChA7b39q54cKGCys_VXaDADjEhgszp8YhZFw0xvzm7SygpvCeIvJ7V0r6XIaJZ6BxNkMa_8HhhqlAci7hYMXi6UCpPgDW-yoAf8gzgHiEYyJAnoiAQU6AQFCB27cD9UCwwdKCMX2Ij7RpxY_eAGqARdUNENZWllLS0tJRGZ2T01QMVptSjRBaxAEGmIKYBIWCAAQAxAGEBMQEhgCQgQaAggFSgIIASIbChdUNENZWmVTc0o0RGZ2T01QMVptSjRBa3ABKAQyJ3RydWNraW5nOjpzZW1pLXRyYWlsZXItdHJ1Y2staGVhdnktc29mdCIVAOzExFsGGGfjVIIY7GXjYbPyONS8EiQiInRydWNraW5nOjpzZW1pLXRyYWlsZXItdHJ1Y2staGVhdnk"
    }
  ]
}

ट्रक के रास्तों की मैट्रिक्स पाना

एक साथ कई संभावित यात्राओं में लगने वाले समय का हिसाब लगाने के लिए, computeRouteMatrix एंडपॉइंट का इस्तेमाल करें. इससे, कई जगहों से अलग-अलग मंज़िलों तक की यात्रा में लगने वाले समय और दूरी की तुलना आसानी से की जा सकती है. उदाहरण के लिए, इसका इस्तेमाल पिकअप की नई जगह के सबसे पास मौजूद ट्रक को ढूंढने के लिए किया जा सकता है. अपने मकसद के लिए इस्तेमाल किए जाने वाले वाहन की पहचान करने के बाद, computeRoutes अनुरोध किया जा सकता है. इससे आपको प्रस्तावित वाहन के रास्ते की जानकारी और रास्ते का टोकन मिल जाएगा.

computeRouteMatrix का इस्तेमाल करने के लिए, आपको हर ऑरिजिन ऑब्जेक्ट में vehicleInfo की जानकारी देनी होगी.

अनुरोध का उदाहरण

{
  "origins": [
    {
      "waypoint": { "location": { "latLng": { "latitude": 32.77, "longitude": -96.85 }}},
      "routeModifiers": { "vehicleInfo": { /* ...vehicle attributes... */ } }
    },
    {
      "waypoint": { "location": { "latLng": { "latitude": 33.61, "longitude": -112.11 }}},
      "routeModifiers": { "vehicleInfo": { /* ...vehicle attributes... */ } }
    }
  ],
  "destinations": [
    { "waypoint": { "location": { "latLng": { "latitude": 35.02, "longitude": -106.64 }}}},
    { "waypoint": { "location": { "latLng": { "latitude": 29.77, "longitude": -95.40 }}}}
  ],
  "travelMode": "TRUCK",
  "routingPreference": "TRAFFIC_AWARE_OPTIMAL"
}

जवाब का उदाहरण

जवाब एक कलेक्शन होता है. इसमें मौजूद हर ऑब्जेक्ट में, एक ऑरिजिन-डेस्टिनेशन पेयर के लिए अवधि और distanceMeters शामिल होता है.

[
  {
    "originIndex": 0,
    "destinationIndex": 1,
    "status": {},
    "distanceMeters": 392372,
    "duration": "14037s",
    "condition": "ROUTE_EXISTS"
  },
  { ... }
]

अगले चरण