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

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

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

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

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

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

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

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

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

सीमाएं

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

  • भौगोलिक उपलब्धता: बड़े वाहनों के लिए रास्तों की जानकारी देने की सुविधा, अमेरिका के 48 राज्यों में उपलब्ध है. यह सुविधा जापान में एक्सपेरिमेंट के तौर पर उपलब्ध है. यह सुविधा अलास्का, हवाई या अमेरिका के इलाकों में उपलब्ध नहीं है.
  • ड्राइवर को सलाह देना और सुरक्षा से जुड़ी जानकारी देना. ड्राइवरों को सुरक्षित या कानूनी तौर पर सही रास्ते के लिए, सिर्फ़ इस एपीआई से मिले रास्तों पर भरोसा नहीं करना चाहिए. इस बात की कोई गारंटी नहीं है कि रास्ते वाहन के हिसाब से सही होंगे. इन रास्तों पर चलने से, ड्राइवर को कम ऊंचाई वाले पुल या ऐसी सड़कों पर जाने का खतरा हो सकता है जहां बड़े वाहनों को जाने की अनुमति नहीं है.
  • बेस्ट-एफ़र्ट रूट. कुछ मामलों में, एपीआई ऐसा रास्ता नहीं ढूंढ पाता जो यात्रा से जुड़ी पाबंदियों का पूरी तरह से पालन करता हो. इसके बजाय, यह "सबसे अच्छा" रास्ता दिखाता है. हालांकि, यह रास्ता अब भी प्रतिबंधित इलाकों से होकर गुज़र सकता है. 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 (ज़रूरी नहीं है) यह कैटगरी, जहाज़ पर मौजूद किसी भी खतरनाक सामान के बारे में बताती है. विस्फोटक, गैसें, ज्वलनशील, दहनशील, कार्बनिक, ज़हर, संक्षारक, एस्पिरेशन_हैज़र्ड, पर्यावरण_के_लिए_खतरनाक, अन्य

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

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

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

टोल

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

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

राउटिंग से जुड़े अन्य व्यवहार

travelMode को TRUCK पर सेट करने पर, एपीआई बड़े वाहनों के लिए रास्ते को अपने-आप ऑप्टिमाइज़ करता है. जनरेट किए गए रास्तों में यू-टर्न से बचा जाता है. साथ ही, छोटी सड़कों के बजाय इंटरस्टेट और हाइवे को प्राथमिकता दी जाती है. इन व्यवहारों को चालू करने के लिए, आपको कोई अतिरिक्त पैरामीटर या मॉडिफ़ायर सेट करने की ज़रूरत नहीं है.

computeRoutes की मदद से किसी एक रूट का हिसाब लगाना

एक जगह से दूसरी जगह तक ट्रक के हिसाब से सबसे सही रास्ता पता करने के लिए, computeRoutes एंडपॉइंट का इस्तेमाल करें.

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

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

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 जवाब का उदाहरण

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

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

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

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

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

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

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

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

रास्तों का मैट्रिक्स कैलकुलेट करना (computeRouteMatrix)

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

computeRouteMatrix का इस्तेमाल करने के लिए, अनुरोध के रूट में तय करने के बजाय, हर origin ऑब्जेक्ट में vehicleInfo तय करें.

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

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

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

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

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

अगले चरण

  • रास्ते के दिशा-निर्देश उपलब्ध कराना: Android या iOS के लिए Navigation SDK टूल में routeToken का इस्तेमाल करने का तरीका जानें.
  • फ़्लीट-लेवल पर ऑप्टिमाइज़ेशन करना: Route Optimization API के साथ Large Vehicle Routing का इस्तेमाल करें.
  • एपीआई का संदर्भ: सभी संभावित फ़ील्ड और वैल्यू की पूरी सूची देखने के लिए, Routes API का संदर्भ देखें.