चुने गए रास्ते बनाना

इस पेज पर, Roads Selection API का इस्तेमाल करके रूट बनाने और कस्टम एट्रिब्यूट जोड़ने का तरीका बताया गया है. इसके बारे में यहां दिए गए सेक्शन में बताया गया है:

कोई रूट बनाना

कोई रूट बनाने के लिए, create एंडपॉइंट पर POST अनुरोध भेजें.

https://roads.googleapis.com/selection/v1/projects/PROJECT_NUMBER/selectedRoutes?selectedRouteId=SELECTED_ROUTE_ID

अनुरोध का मुख्य हिस्सा, एक JSON ऑब्जेक्ट होना चाहिए जो SelectedRoute संसाधन के बारे में बताता हो. इस ऑब्जेक्ट में यह जानकारी दी जाती है:

  • एक dynamicRoute ऑब्जेक्ट, जिसमें यह जानकारी शामिल हो:
    • चुने गए रास्ते की origin.
    • चुने गए रास्ते की destination.
    • रास्ते का कोई भी intermediates. इन्हें वेपॉइंट भी कहा जाता है.
  • एक यूनीक selectedRouteId. इस वैल्यू में 4 से 63 वर्ण होने चाहिए. साथ ही, मान्य वर्ण a-z, A-Z, 0-9, - या _ हैं. अगर कोई आईडी नहीं दिया जाता है, तो सिस्टम चुने गए रूट के लिए एक यूनीक आईडी जनरेट करता है.

तय किया गया रूट बनाना (डिफ़ॉल्ट)

रूट, डिफ़ॉल्ट रूप से फ़िक्स्ड रूट के तौर पर बनाए जाते हैं. साथ ही, ये स्टैटिक रूट ज्यामिति (routes_status BigQuery टेबल में एक्सपोर्ट की गई) के मुताबिक होते हैं. इसे रूट बनाते समय, लाइव ट्रैफ़िक के बिना कैलकुलेट किया जाता है. इससे यह पक्का होता है कि ट्रैफ़िक के हाल में होने वाले बदलावों से प्रभावित हुए बिना, ट्रैफ़िक की जानकारी की लगातार निगरानी की जा सके.

अनुरोध के मुख्य हिस्से में dynamicRouting बूलियन फ़ील्ड को सेट करके, यह तय किया जा सकता है कि रूट तय (false, डिफ़ॉल्ट) है या डाइनैमिक (true).

यहां दिए गए कोड सैंपल में, किसी तय रास्ते के लिए create POST अनुरोध का स्ट्रक्चर दिखाया गया है.

curl -X POST -d '
    {
      "dynamicRoute": {
        "origin": {
          "latitude": ORIGIN_LATITUDE,
          "longitude": ORIGIN_LONGITUDE
        },
        "destination": {
          "latitude": DESTINATION_LATITUDE,
          "longitude": DESTINATION_LONGITUDE
        }
      }
    }' \
  -H 'X-Goog-User-Project: PROJECT_NUMBER' \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  "https://roads.googleapis.com/selection/v1/projects/"\
"PROJECT_NUMBER/selectedRoutes?selectedRouteId=SELECTED_ROUTE_ID"

अनुरोध पूरा होने पर, एपीआई SelectedRoute संसाधन दिखाता है. रिस्पॉन्स में, name फ़ील्ड में selectedRouteId शामिल होता है. SelectedRoute संसाधन को वापस पाने या मिटाने के लिए, इस selectedRouteId का इस्तेमाल किया जा सकता है.

यहां दिए गए कोड सैंपल में, create एंडपॉइंट से मिले जवाब का स्ट्रक्चर दिखाया गया है.

{
  "name": "projects/PROJECT_NUMBER/selectedRoutes/SELECTED_ROUTE_ID",
  "dynamicRoute": {
    "origin": {
      "latitude": ORIGIN_LATITUDE,
      "longitude": ORIGIN_LONGITUDE
    },
    "destination": {
      "latitude": DESTINATION_LATITUDE,
      "longitude": DESTINATION_LONGITUDE
    }
  },
  "createTime": "CREATE_TIME",
  "state": "STATE_VALIDATING",
  "dynamicRouting": false
}

डाइनैमिक रूट बनाना

इसके अलावा, dynamicRouting फ़ील्ड को true पर सेट करके, डाइनैमिक रूट बनाया जा सकता है. ट्रैफ़िक की अलग-अलग स्थितियों की वजह से, रास्ते की ज्यामिति बदल सकती है. ऐसा इसलिए होता है, क्योंकि Google का रूटिंग प्लैटफ़ॉर्म हर बार सबसे अच्छा रास्ता ढूंढता है.

यहां दिए गए कोड सैंपल में, डाइनैमिक रूट को create करने के लिए, POST अनुरोध का स्ट्रक्चर दिखाया गया है:

curl -X POST -d '
    {
      "dynamicRoute": {
        "origin": {
          "latitude": ORIGIN_LATITUDE,
          "longitude": ORIGIN_LONGITUDE
        },
        "destination": {
          "latitude": DESTINATION_LATITUDE,
          "longitude": DESTINATION_LONGITUDE
        }
      },
      "dynamicRouting": true
    }' \
  -H 'X-Goog-User-Project: PROJECT_NUMBER' \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  "https://roads.googleapis.com/selection/v1/projects/"\
"PROJECT_NUMBER/selectedRoutes?selectedRouteId=SELECTED_ROUTE_ID"

यहां दिए गए कोड सैंपल में, create एंडपॉइंट से मिले जवाब का स्ट्रक्चर दिखाया गया है.

{
  "name": "projects/PROJECT_NUMBER/selectedRoutes/SELECTED_ROUTE_ID",
  "dynamicRoute": {
    "origin": {
      "latitude": ORIGIN_LATITUDE,
      "longitude": ORIGIN_LONGITUDE
    },
    "destination": {
      "latitude": DESTINATION_LATITUDE,
      "longitude": DESTINATION_LONGITUDE
    }
  },
  "createTime": "CREATE_TIME",
  "state": "STATE_VALIDATING",
  "dynamicRouting": true
}

रास्ते में पड़ने वाली जगहों के साथ कोई रूट बनाना

शुरुआती जगह और मंज़िल के बीच के कुछ खास पॉइंट से होकर गुज़रने वाला रास्ता बनाने के लिए, अपने अनुरोध के मुख्य हिस्से में मौजूद dynamicRoute ऑब्जेक्ट में intermediates कलेक्शन शामिल करें. intermediates कलेक्शन में मौजूद हर एलिमेंट, एक वेपॉइंट होता है. इसे latitude और longitude से तय किया जाता है. किसी रास्ते में ज़्यादा से ज़्यादा 25 वेपॉइंट हो सकते हैं.

यहां दिए गए कोड सैंपल में, इंटरमीडिएट वेपॉइंट के साथ SelectedRoute बनाने का तरीका बताया गया है:

curl -X POST -d '
    {
      "dynamicRoute": {
        "origin": {
          "latitude": ORIGIN_LATITUDE,
          "longitude": ORIGIN_LONGITUDE
        },
        "intermediates": [
          {"latitude": INTERMEDIATE_LATITUDE_1, "longitude": INTERMEDIATE_LONGITUDE_1},
          {"latitude": INTERMEDIATE_LATITUDE_2, "longitude": INTERMEDIATE_LONGITUDE_2},
          {"latitude": INTERMEDIATE_LATITUDE_3, "longitude": INTERMEDIATE_LONGITUDE_3}
        ],
        "destination": {
          "latitude": DESTINATION_LATITUDE,
          "longitude": DESTINATION_LONGITUDE
        }
      }
    }' \
  -H 'X-Goog-User-Project: PROJECT_NUMBER' \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  "https://roads.googleapis.com/selection/v1/projects/"\
"PROJECT_NUMBER/selectedRoutes?selectedRouteId=SELECTED_ROUTE_ID"

कस्टम रूट एट्रिब्यूट का इस्तेमाल करना

Roads Management Insights में, रूट मैनेजमेंट और डेटा के विश्लेषण को बेहतर बनाने के लिए, SelectedRoute ऑब्जेक्ट में routeAttributes फ़ील्ड शामिल होता है.

अलग-अलग रास्तों के लिए अपनी कस्टम प्रॉपर्टी तय करने के लिए, routeAttributes फ़ील्ड का इस्तेमाल करें. इसमें हर एट्रिब्यूट, की-वैल्यू पेयर होता है. हर रूट के लिए, ज़्यादा से ज़्यादा 25 कस्टम की-वैल्यू पेयर दिए जा सकते हैं.

इन एट्रिब्यूट का इस्तेमाल, खास रूट की पहचान करने या अपनी ज़रूरतों के हिसाब से रूट को ग्रुप में बांटने के लिए किया जाता है.

यहां रूट एट्रिब्यूट के कुछ उदाहरण दिए गए हैं, जिनका इस्तेमाल किया जा सकता है:

  • "road_classification": "highway"
  • "maintenance_zone": "north_district"
  • "event_id": "marathon_2024"
  • "pavement_type": "asphalt"

routeAttributes फ़ील्ड तय करते समय, इन दिशा-निर्देशों का पालन करें:

  • कुंजी, प्रीफ़िक्स goog से शुरू नहीं होनी चाहिए.
  • हर कुंजी और हर वैल्यू की लंबाई 100 वर्णों से ज़्यादा नहीं होनी चाहिए.

इसके बाद, Roads Management Insights में इन कस्टम routeAttributes का इस्तेमाल, इन तरीकों से किया जा सकता है:

  • Pub/Sub सूचनाओं को फ़िल्टर करना: अपनी Pub/Sub सदस्यताओं पर फ़िल्टर सेट किए जा सकते हैं. इससे आपको सिर्फ़ उन रास्तों के अपडेट मिलेंगे जो एट्रिब्यूट की खास कुंजियों और उनसे जुड़ी वैल्यू से मैच करते हैं या मैच नहीं करते.
  • BigQuery विश्लेषण को बेहतर बनाना: BigQuery टेबल में, इन एट्रिब्यूट का इस्तेमाल करके किसी एट्रिब्यूट की वैल्यू के आधार पर, खास रूट फ़िल्टर किए जा सकते हैं. ज़्यादा टारगेट किए गए डेटा विश्लेषण के लिए, रूट को किसी खास एट्रिब्यूट कुंजी के हिसाब से भी ग्रुप किया जा सकता है.

अगले कोड सैंपल में, कस्टम routeAttributes के साथ SelectedRoute बनाने का तरीका बताया गया है.

curl -X POST -d '
    {
    "dynamicRoute": {
      "origin": {
        "latitude": ORIGIN_LATITUDE,
        "longitude": ORIGIN_LONGITUDE
      },
      "destination": {
        "latitude": DESTINATION_LATITUDE,
        "longitude": DESTINATION_LONGITUDE
      }
    },
    "routeAttributes": {
      "ATTRIBUTE_KEY": "ATTRIBUTE_VALUE"
    }
  }' \
  -H 'X-Goog-User-Project: PROJECT_NUMBER' \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  "https://roads.googleapis.com/selection/v1/projects/"\
"PROJECT_NUMBER/selectedRoutes?selectedRouteId=SELECTED_ROUTE_ID"

एक साथ कई रूट बनाना

एक ही अनुरोध में कई रास्ते बनाने के लिए, batchCreate एंडपॉइंट का इस्तेमाल करें. इस एंडपॉइंट की मदद से, एक कॉल में ज़्यादा से ज़्यादा 1,000 रूट तय किए जा सकते हैं.

batchCreate एंडपॉइंट पर POST अनुरोध भेजें:

https://roads.googleapis.com/selection/v1/projects/PROJECT_NUMBER/selectedRoutes:batchCreate

यह यूआरएल, gRPC ट्रांसकोडिंग सिंटैक्स का इस्तेमाल करता है.

अनुरोध के मुख्य हिस्से में एक JSON ऑब्जेक्ट होना चाहिए, जिसमें requests कलेक्शन शामिल हो. इस कलेक्शन में मौजूद हर ऑब्जेक्ट एक CreateSelectedRouteRequest है, जो किसी SelectedRoute संसाधन के बारे में बताता है.

यहां दिए गए कोड सैंपल में, batchCreate एंडपॉइंट पर POST अनुरोध का स्ट्रक्चर दिखाया गया है:

curl -X POST -d '
    {
      "requests": [
        {
          "selectedRoute": {
            "dynamicRoute": {
              "origin": {
                "latitude": ORIGIN_LATITUDE_1,
                "longitude": ORIGIN_LONGITUDE_1
              },
              "destination": {
                "latitude": DESTINATION_LATITUDE_1,
                "longitude": DESTINATION_LONGITUDE_1
              }
            }
          },
          "selectedRouteId": "route-one"
        },
        {
          "selectedRoute": {
            "dynamicRoute": {
              "origin": {
                "latitude": ORIGIN_LATITUDE_2,
                "longitude": ORIGIN_LONGITUDE_2
              },
              "destination": {
                "latitude": DESTINATION_LATITUDE_2,
                "longitude": DESTINATION_LONGITUDE_2
              }
            }
          },
          "selectedRouteId": "route-two"
        }
      ]
    }' \
  -H 'X-Goog-User-Project: PROJECT_NUMBER' \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  "https://roads.googleapis.com/selection/v1/projects/"\
"PROJECT_NUMBER/selectedRoutes:batchCreate"

अनुरोध पूरा होने पर, एपीआई जवाब के तौर पर बनाए गए SelectedRoute संसाधनों का कलेक्शन दिखाता है.

यहां दिए गए कोड सैंपल में, batchCreate एंडपॉइंट के रिस्पॉन्स का स्ट्रक्चर दिखाया गया है:

{
  "selectedRoutes": [
    {
      "name": "projects/PROJECT_NUMBER/selectedRoutes/SELECTED_ROUTE_ID_1",
      "dynamicRoute": {
        "origin": {
          "latitude": ORIGIN_LATITUDE_1,
          "longitude": ORIGIN_LONGITUDE_1
        },
        "destination": {
          "latitude": DESTINATION_LATITUDE_1,
          "longitude": DESTINATION_LONGITUDE_1
        }
      },
      "createTime": "CREATE_TIME_1",
      "state": "STATE_VALIDATING",
      "dynamicRouting": false
    },
    {
      "name": "projects/PROJECT_NUMBER/selectedRoutes/SELECTED_ROUTE_ID_2",
      "dynamicRoute": {
        "origin": {
          "latitude": ORIGIN_LATITUDE_2,
          "longitude": ORIGIN_LONGITUDE_2
        },
        "destination": {
          "latitude": DESTINATION_LATITUDE_2,
          "longitude": DESTINATION_LONGITUDE_2
        }
      },
      "createTime": "CREATE_TIME_2",
      "state": "STATE_VALIDATING",
      "dynamicRouting": false
    }
  ]
}