বেছে নেওয়া রুট তৈরি করুন

এই পৃষ্ঠায় 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। এই ভ্যালু ৪-৬৩টি অক্ষর হতে হবে এবং সঠিক অক্ষর হল a-z, A-Z, 0-9, - বা _। আইডি প্রদান করা না হলে, সিস্টেম বেছে নেওয়া রুটের জন্য একটি অনন্য আইডি তৈরি করে।

একটি নির্দিষ্ট রুট তৈরি করুন (ডিফল্ট)

রুটগুলি ডিফল্ট হিসেবে নির্দিষ্ট রুট হিসেবে তৈরি করা হয় এবং লাইভ ট্রাফিক ছাড়াই তৈরির সময় গণনা করা স্ট্যাটিক রুট জ্যামিতির (routes_status BigQuery টেবিলে এক্সপোর্ট করা হয়) সাথে সামঞ্জস্যপূর্ণ থাকে। এটি ট্রাফিক শর্তাবলী পরিবর্তনের দ্বারা প্রভাবিত না হয়ে ট্রাফিক ডেটার ধারাবাহিক পর্যবেক্ষণ নিশ্চিত করে।

আপনি অনুরোধের বডিতে dynamicRouting বুলিয়ান ফিল্ড সেট করে রুটটি নির্দিষ্ট (false, ডিফল্ট) নাকি ডায়নামিক (true) তা উল্লেখ করতে পারবেন।

নিম্নলিখিত কোড স্যাম্পেল থেকে একটি নির্দিষ্ট রুটের জন্য POST অনুরোধের create স্ট্রাকচার সম্পর্কে জানতে পারবেন।

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"

সফল হলে, API 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 দ্বারা সংজ্ঞায়িত। একটি রুটে সর্বাধিক ২৫টি ওয়েপয়েন্ট থাকতে পারে।

নিম্নলিখিত কোড স্যাম্পেল থেকে জানা যায় যে কীভাবে মধ্যবর্তী ওয়েপয়েন্ট সহ 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 ফিল্ড ব্যবহার করে প্রতিটি রুটের জন্য আপনার নিজস্ব কাস্টম প্রপার্টি নির্ধারণ করুন, যেখানে প্রতিটি অ্যাট্রিবিউট হল একটি কী-ভ্যালু পেয়ার। আপনি প্রতিটি রুটের জন্য সর্বাধিক ২৫টি কাস্টম কী-ভ্যালু পেয়ার প্রদান করতে পারবেন।

নির্দিষ্ট রুট শনাক্ত করতে বা আপনার প্রয়োজন অনুযায়ী মানদণ্ডের ভিত্তিতে রুট গ্রুপ করতে এইসব অ্যাট্রিবিউট কাজে লাগে।

আপনি ব্যবহার করতে পারেন এমন রুট অ্যাট্রিবিউটের কিছু উদাহরণ নিচে দেওয়া হল:

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

routeAttributes ফিল্ড নির্ধারণ করার সময় পরবর্তী নির্দেশিকা অনুসরণ করুন:

  • কী অবশ্যই goog প্রিফিক্স দিয়ে শুরু হতে হবে।
  • প্রতিটি 'কী' ও ভ্যালুর দৈর্ঘ্য ১০০ অক্ষরের বেশি হলে চলবে না।

আপনি 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 এন্ডপয়েন্ট ব্যবহার করুন। এই এন্ডপয়েন্ট আপনাকে একটি কলে ১০০০টি পর্যন্ত রুট নির্ধারণ করতে দেয়।

batchCreate এন্ডপয়েন্টে POST অনুরোধ পাঠান:

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

URL-এ 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"

সফল হলে, API একটি রেসপন্স ফেরত দেয় যাতে তৈরি করা 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
    }
  ]
}