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

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

इस गाइड में क्या शामिल है: इस गाइड में, बड़े वाहन के लिए रूटिंग की सुविधा के साथ 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 ऑब्जेक्ट फ़ील्ड

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

फ़ील्ड ब्यौरा Notes / Values
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 को शामिल किया जाता है, तो टोल रोड वाले रास्तों को इस फ़ील्ड में उसी हिसाब से एनोटेट किया जाएगा.

रूटिंग के अन्य तरीके

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

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

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

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

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

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 with Large Vehicle Routing का इस्तेमाल करें.
  • एपीआई का संदर्भ: सभी संभावित फ़ील्ड और वैल्यू की पूरी सूची देखने के लिए, Routes API का संदर्भ देखें.