মূল ধারণা

আইসোক্রোন তৈরি করতে, API-কে একটি উৎস, ভ্রমণের মোড যেমন ড্রাইভিং, টু-হুইলার, সাইকেল চালানো বা হাঁটা এবং একটি সময়সীমা প্রদান করুন। এছাড়াও, আপনি রাউটিং সংক্রান্ত পছন্দ এবং ফলাফল হিসেবে দেখানো পলিগনের ভিজ্যুয়াল উপস্থিতি অ্যাডজাস্ট করতে পারবেন।

ভ্রমণ মোড

পরিবহনের মোড নির্দিষ্ট করতে প্রয়োজনীয় travelMode (travel_mode) প্যারামিটার ব্যবহার করুন:

  • DRIVE: পোস্ট করা স্পিড লিমিট, রাস্তার শ্রেণিবিন্যাস, টার্ন পেনাল্টি এবং (ঐচ্ছিক) লাইভ ট্রাফিক পরিস্থিতি ব্যবহার করে গাড়ি চালানোর উপযোগী রাস্তায় একটি যাত্রীবাহী গাড়ির পৌঁছানোর ক্ষমতা গণনা করে।
  • TWO_WHEELER: মোড-নির্দিষ্ট রোড অ্যাক্সেস নিয়ম এবং হাই-স্পিড রোডে DRIVE-এর চেয়ে কম মডেল করা স্পিড ব্যবহার করে মোটরসাইকেল বা স্কুটারের মতো দুই চাকার মোটরচালিত গাড়ির জন্য পৌঁছানোর সময় গণনা করে। এর ফলে, TWO_WHEELER আইসোক্রোন সাধারণত হাই-স্পিড হাইওয়ে বরাবর BICYCLE-এর থেকে বড় কিন্তু DRIVE-এর থেকে ছোট এলাকা কভার করে।
  • BICYCLE: সাইকেল চালানো যায় এমন রাস্তা, সাইকেল চালানোর রাস্তা ও শেয়ার করা পথের মাধ্যমে সাইকেল আরোহীর পৌঁছানোর সময় হিসেব করে। রাস্তার ধরন ও ঢাল অনুযায়ী গতি অ্যাডজাস্ট করা হয়। মোটরওয়ে ও নিয়ন্ত্রিত অ্যাক্সেস ফ্রিওয়ে বাদ দেওয়া হয়।
  • WALK: ফুটপাথ, পায়ে হাঁটার রাস্তা, ট্রেল এবং পথচারীদের জন্য অ্যাক্সেসযোগ্য রাস্তা বরাবর একজন পথচারীর পৌঁছানোর ক্ষমতা গণনা করে, যেখানে হাঁটার গতি ঢালের সাথে সামঞ্জস্যপূর্ণ। হাঁটার ট্রাভার্সাল একমুখী যানবাহন সংক্রান্ত বিধিনিষেধ উপেক্ষা করে।

টাইম হরাইজন

পরিষেবার জন্য আপনি যে প্রাথমিক সীমাবদ্ধতা প্রদান করেন তা হল travelDuration (travel_duration)। এটি গণনার জন্য সময়সীমা নির্ধারণ করে।

  • ন্যূনতম ও সর্বাধিক সময়সীমা: সময়সীমা কমপক্ষে "1s" (১ সেকেন্ড) হতে হবে। শূন্য ("0s"), নেগেটিভ সময়সীমা এবং ১ সেকেন্ডের কম সময়সীমা (যেমন "0.5s") 400 INVALID_ARGUMENT সমস্যা দেখায়। API DRIVE এবং TWO_WHEELER মোডের জন্য সর্বাধিক ৩,৬০০ সেকেন্ড (১ ঘণ্টা) এবং WALK এবং BICYCLE মোডের জন্য ৭,২০০ সেকেন্ড (২ ঘণ্টা) ভ্রমণের সময় সাপোর্ট করে।
  • ন্যূনতম পলিগন ফ্লোর: API যেহেতু পৌঁছে যাওয়া রাস্তার অংশকে স্পেশিয়াল গ্রিড সেলে কনভার্ট করে, তাই খুব কম সময়ের জন্য স্ন্যাপ করা অরিজিনের চারপাশে গ্রিড সেল কভার করে এমন একটি ছোট পলিগন রিটার্ন করে।
  • পারফর্ম্যান্স: অনুরোধ করা সময়সীমা এবং বেছে নেওয়া ট্রাভেল মোডের উপর ভিত্তি করে গণনার সময় স্কেল করা হয়। এক ঘণ্টা হেঁটে যাওয়ার আইসোক্রোনের তুলনায় এক ঘণ্টা গাড়ি চালিয়ে যাওয়ার আইসোক্রোন অনেক বড় ভৌগোলিক এলাকা ও রোড নেটওয়ার্ক কভার করে, যার ফলে গাড়ি চালিয়ে যাওয়ার অনুরোধের ক্ষেত্রে লেটেন্সি বেশি হয়।
  • ফর্ম্যাট করা: API যেহেতু google.protobuf.Duration ব্যবহার করে, তাই সময়সীমা অবশ্যই একটি স্ট্রিং হিসেবে ফর্ম্যাট করতে হবে যা "s" (যেমন, "3600s") দিয়ে শেষ হয়, কোনও পূর্ণসংখ্যা দিয়ে নয়।

যাত্রা শুরুর পয়েন্ট ও রোড স্ন্যাপিং

আপনি দুটি উপায়ে আইসোক্রোনের জন্য শুরুর পয়েন্ট নির্দিষ্ট করতে পারেন:

  • স্থানাঙ্ক (location): অক্ষাংশ ও দ্রাঘিমাংশের একটি জোড়া। latitude ([-90, 90]-এ) এবং longitude ([-180, 180]-এ) দুটিই প্রদান করুন। আপনি যদি এর মধ্যে একটি বাদ দেন, তাহলে API এটিকে 0.0 হিসেবে বিবেচনা করে, যা নিরক্ষরেখা বা মূল মধ্যরেখায় বিন্দুটি স্থাপন করে। আপনি যদি দুটিই ({}) বাদ দেন বা (0, 0) পাঠান, তাহলে API একটি 400 INVALID_ARGUMENT সমস্যা দেখায়।
  • প্লেস আইডি (place): Google Maps-এ নির্দিষ্ট কোনও জায়গার জন্য অনন্য শনাক্তকারী। আপনি কোনও জায়গার আইডি প্রদান করলে, পরিষেবাটি সেই জায়গার সেন্ট্রয়েড কোঅর্ডিনেট নির্ণয় করে এবং সেই পয়েন্টটি সবচেয়ে কাছের রাস্তার সাথে স্ন্যাপ করে। places/ দিয়ে শুরু হওয়া রিসোর্স নামের ফর্ম্যাট ব্যবহার করুন (যেমন, places/ChIJIQBpAG2ahYAR_6128GcTUEo); places/ প্রিফিক্স ছাড়া শুধু প্লেস আইডি ব্যবহার করলেও চলবে। প্লেস আইডি সম্পর্কে আরও জানতে, প্লেস আইডি দেখুন।

ইনপুট পদ্ধতি যাই হোক না কেন, কোনও নির্দিষ্ট ফিজিক্যাল পয়েন্ট যদি কোনও রাস্তার উপর না হয়, যেমন কোনও পার্ক বা বিল্ডিংয়ের ভিতরে, তাহলে API সেই পয়েন্ট থেকে ভ্রমণের সময় গণনা করে না। এই পরিস্থিতি সামাল দিতে, পরিষেবাটি রোড স্ন্যাপিং ব্যবহার করে। রাস্তা স্ন্যাপ করার নিম্নলিখিত ফিচার আছে:

  • স্মার্ট স্ন্যাপিং: পরিষেবাটি আপনার শুরুর পয়েন্টকে সবচেয়ে কাছের অতিক্রমযোগ্য রাস্তার অংশের সাথে স্ন্যাপ করার চেষ্টা করে।
  • মোড সম্পর্কে সচেতনতা: স্ন্যাপিং লজিক আপনার travel_mode বিবেচনা করে। আপনি DRIVE বা TWO_WHEELER-এর জন্য অনুরোধ করলে, API শুধুমাত্র পথচারীদের জন্য তৈরি রাস্তা উপেক্ষা করে এবং কাছাকাছি গাড়ি চালানোর উপযুক্ত রাস্তা খোঁজে। আপনি WALK-এর জন্য অনুরোধ করলে, API হাঁটার রাস্তা ও ফুটপাথকে অগ্রাধিকার দেয়।
  • ব্যর্থতার ঘটনা: API যদি আপনার শুরু করার পয়েন্টের সর্বাধিক স্ন্যাপিং দূরত্বের (প্রায় ২০০ মিটার বা WALK ও BICYCLE-এর জন্য কম) মধ্যে উপযুক্ত রাস্তার অংশ খুঁজে না পায়, তাহলে API 404 NOT_FOUND সমস্যা দেখায়। বড় ভৌগলিক বৈশিষ্ট্য (যেমন পার্ক, ক্যাম্পাস বা মনোরম ভিউপয়েন্ট) ভ্রমণ মোড দ্বারা ব্যবহারযোগ্য নিকটতম রাস্তা থেকে স্ন্যাপিং দূরত্বের চেয়ে দূরে একটি স্থান আইডি সেন্ট্রয়েড থাকতে পারে; সেই ক্ষেত্রে, পরিবর্তে একটি রাস্তা প্রবেশদ্বারের স্পষ্ট location স্থানাঙ্ক পাস করুন।

ট্রাভেলের দিকনির্দেশ (ইনবাউন্ড বনাম আউটবাউন্ড)

আপনি travelDirection (travel_direction) প্যারামিটার ব্যবহার করে ইনবাউন্ড ও আউটবাউন্ড, উভয় ধরনের রিচেবিলিটি গণনা করতে পারবেন:

  • FROM (আউটবাউন্ড): নির্দিষ্ট সময়সীমার মধ্যে উৎস বিন্দু থেকে পৌঁছানো যায় এমন এলাকা গণনা করে। এটি ডেলিভারি জোন বা পরিষেবা কভারেজের মতো ব্যবহারের ক্ষেত্রে উপযুক্ত।
  • TO (ইনবাউন্ড): নির্দিষ্ট সময়সীমার মধ্যে আপনি যে জায়গা থেকে শুরু করে গন্তব্যে পৌঁছাতে পারবেন সেই এলাকা গণনা করে। এটি ক্যাচমেন্ট জোন নির্ধারণের জন্য উপযুক্ত, যেমন কর্মীরা সেন্ট্রাল অফিসে পৌঁছানোর জন্য কোথা থেকে যাতায়াত করতে পারেন।

ট্রাফিক সচেতনতা

ট্রাফিক ডেটা কীভাবে জেনারেট করা পলিগনকে প্রভাবিত করে তা নিয়ন্ত্রণ করুন routingPreference (routing_preference) প্যারামিটার দিয়ে:

  • TRAFFIC_UNAWARE (ডিফল্ট): আইসোক্রোন পলিগন তৈরি করতে ফ্রি-ফ্লো স্পিড লিমিট ও রাস্তার হায়ারার্কি ব্যবহার করে। এর ফলে একটি নির্ধারক আকৃতি তৈরি হয় যা দিনের সময়ের উপর নির্ভর করে পরিবর্তিত হয় না। এই প্যারামিটারটি সাধারণ বিশ্লেষণ বা বেসলাইন সিনারিও প্ল্যানিংয়ের জন্য আদর্শ।
  • TRAFFIC_AWARE: অনুরোধ প্রসেস করার সঠিক সময়ে লাইভ ট্রাফিক পরিস্থিতি ব্যবহার করে আইসোক্রোন গণনা করে (কাস্টম ভবিষ্যৎ বা ঐতিহাসিক প্রস্থান বা আগমনের টাইমস্ট্যাম্প v1-এ কনফিগার করা যায় না)। এর ফলে, ট্রাফিক জ্যামের সময় পৌঁছানো যায় এমন এলাকা সঙ্কুচিত হয় এবং অফ-পিক আওয়ারে প্রসারিত হয়; ফ্রি-ফ্লো বা অফ-পিক পরিস্থিতিতে, TRAFFIC_AWARE এবং TRAFFIC_UNAWARE প্রায় একই ধরনের পলিগন দেখাতে পারে। মনে রাখবেন: travelMode-এর মান DRIVE বা TWO_WHEELER-এ সেট করা থাকলে তবেই ট্রাফিক-অ্যাওয়ার রাউটিং কাজ করে।

স্মুদিং ও ফিডেলিটি

আপনি polygonFidelity (polygon_fidelity) এবং enableSmoothing (enable_smoothing) প্যারামিটার ব্যবহার করে আউটপুট পলিগনের চেহারা এবং নির্ভুলতা কাস্টমাইজ করতে পারেন। এইসব বিকল্প স্বতন্ত্র হলেও, চূড়ান্ত আকার নির্ধারণ করতে এগুলি একসাথে কাজ করে।

  • polygonFidelity: পৌঁছানো যাবে এমন সীমানা আনুমানিক হিসেব করতে ব্যবহৃত স্পেশিয়াল গ্রিড সেল রেজোলিউশন নিয়ন্ত্রণ করে:

    • LOW: সবচেয়ে বড় গ্রিড সেল ব্যবহার করে (কয়েকশো মিটার জুড়ে)। কম ভার্টিসেস ও অভ্যন্তরীণ ফাঁক ছাড়াই বড় এলাকা কভার করার জন্য সেরা, যার ফলে একটি সাধারণ আকৃতি তৈরি হয় যা সরু রাস্তার করিডোর বরাবর পৌঁছানো যায় এমন এলাকাকে অতিরিক্ত অনুমান করতে পারে।
    • MEDIUM: ব্যালেন্সড প্রিসিশন ও ভার্টেক্স কাউন্ট।
    • HIGH: সবচেয়ে ছোট গ্রিড সেল ব্যবহার করে (মোটামুটি ১০০-১৫০ মিটার জুড়ে)। এর ফলে, পৌঁছে যাওয়া রোড নেটওয়ার্কের সাথে আরও ভালভাবে ফিট করে, তবে যেখানে রোড নেটওয়ার্ক কম সেখানে ইন্টেরিয়র হোল তৈরি করতে পারে।
    • POLYGON_FIDELITY_UNSPECIFIED: উল্লেখ করা না থাকলে, পরিষেবাটি ভ্রমণের মোড এবং সময়কালের উপর ভিত্তি করে অটোমেটিক রেজোলিউশন বেছে নেয়, স্বল্প সময়ের জন্য এবং WALK-এর জন্য সূক্ষ্ম সেল এবং দীর্ঘ সময়ের জন্য মোটা সেল ব্যবহার করে। বিভিন্ন সময়সীমা বা ভ্রমণের মোড জুড়ে আইসোক্রোন তুলনা করতে, polygonFidelity স্পষ্টভাবে সেট করুন।
      হাই, মিডিয়াম ও লো পলিগন ফিডেলিটি
      বেশি, মাঝারি ও কম পলিগন ফিডেলিটি
  • enableSmoothing: ফিডেলিটি দ্বারা নির্ধারিত গ্রিড সেলের স্টেপড এজ রাউন্ড অফ করা হবে কিনা তা কন্ট্রোল করে।

    • false (Raw): ডিফল্ট। গ্রিড-অ্যালাইন করা বাউন্ডারি দেখায়। গ্রিড সেলের ধার বরাবর প্রান্তগুলি দেখা যায়। বিশ্লেষণাত্মক নির্ভুলতার জন্য সেরা, যেমন কঠোর পয়েন্ট-ইন-বহুভুজ পরীক্ষা।
    • true (স্মুথ করা): ভিজ্যুয়াল ম্যাপ ডিসপ্লের জন্য তীক্ষ্ণ কোণগুলি রাউন্ড অফ করে এবং প্রতিটি রিংয়ের ক্ষেত্রফল প্রায় একই রাখে। সীমানা আর গ্রিড সেল অনুসরণ করে না।
      স্মুদিং সহ এবং স্মুদিং ছাড়া আইসোক্রোন
      স্মুদিং সহ এবং স্মুদিং ছাড়া আইসোক্রোন