Isochrones API-এর পেশাদার পদ্ধতি

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

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

  • polygonFidelity (polygon_fidelity): রেজোলিউশন। পৌঁছানো যাবে এমন এলাকা গণনা করার জন্য ব্যবহৃত অন্তর্নিহিত স্পেশিয়াল গ্রিড সেলের সাইজ নিয়ন্ত্রণ করে।

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

    সেলের সাইজ আনুমানিক। উত্তরের সাইজ ম্যানেজ করার জন্য খুব বড় আইসোক্রোনকে আরও জেনারেলাইজ করা হতে পারে।

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

এগুলি কীভাবে ইন্টার‍্যাক্ট করে: ফিডেলিটি বেসলাইন বিবরণ সেট করে যার উপর স্মুদিং অ্যালগরিদম কাজ করে।

  • হাই ফিডেলিটি + স্মুদিং: রাস্তার শেষ প্রান্তের সাথে ঘনিষ্ঠভাবে মিলে যায় এমন একটি বিস্তারিত, অর্গ্যানিক-লুকিং আকৃতি তৈরি করে।
  • লো ফিডেলিটি + স্মুদিং: একটি বড়, সাধারণ "ব্লব" আকৃতি তৈরি করে।

পে-লোড সাইজ ও রেন্ডারিং

বড় আইসোক্রোনে (বিশেষ করে HIGH ফিডেলিটি সহ দীর্ঘ-মেয়াদী অনুরোধ) হাজার হাজার কোঅর্ডিনেট থাকতে পারে এবং আনকমপ্রেসড JSON রেসপন্স কয়েকশো কিলোবাইট বা তার বেশি হতে পারে।

  • ব্যান্ডউইথ: মনে রাখবেন, হাই ফিডেলিটি সহ সর্বাধিক সময়সীমার অনুরোধের জন্য JSON রেসপন্সের সাইজ অনেক বড় হয়।
  • রেন্ডারিং: অত্যন্ত বিস্তারিত পলিগন রেন্ডার করলে ক্লায়েন্টের পারফর্ম্যান্সের উপর প্রভাব পড়ে। ভার্টেক্স কাউন্ট ও পেলোড সাইজ কমাতে, polygonFidelity: MEDIUM বা LOW বেছে নিন অথবা রেন্ডার করার আগে ক্লায়েন্টে জিওমেট্রি সরল করুন। এর জন্য Douglas-Peucker-এর মতো লাইন-সিমপ্লিফিকেশন অ্যালগরিদম ব্যবহার করুন।

লেটেন্সি ও ক্লায়েন্ট টাইমআউট

রাস্তার নেটওয়ার্কের সাইজ যত বড় হয়, রেসপন্স লেটেন্সি তত বাড়ে: কম সময় এবং WALK ও BICYCLE মোড সবচেয়ে দ্রুত, যেখানে দীর্ঘ DRIVE এবং TWO_WHEELER অনুরোধ (বিশেষ করে TRAFFIC_AWARE সহ) সবচেয়ে বেশি সময় নেয়।

  • সাজেস্ট করা ক্লায়েন্ট টাইমআউট: HTTP বা gRPC ক্লায়েন্টের ডেডলাইন অন্তত ৩০ সেকেন্ড হিসেবে কনফিগার করুন যাতে ক্লায়েন্ট টাইমআউট কম হওয়ার কারণে দীর্ঘ অনুরোধ আগেভাগে বাতিল না হয়ে যায়।

সমস্যা ম্যানেজ করা

429 RESOURCE_EXHAUSTED রেট-লিমিট রেসপন্স এবং 5xx সার্ভার এররের জন্য এক্সপোনেনশিয়াল ব্যাকঅফ ও জিটার সহ রিট্রাই লজিক প্রয়োগ করুন। আপনার অনুরোধ পরিবর্তন না করে 400, 403 বা 404 ক্লায়েন্ট সংক্রান্ত সমস্যার ক্ষেত্রে আবার চেষ্টা করবেন না:

  • INVALID_ARGUMENT (400): travelDuration, 1s এবং 3600s (DRIVE/TWO_WHEELER) অথবা 7200s (WALK/BICYCLE)-এর মধ্যে আছে কিনা তা চেক করুন, location বাদ দেওয়া হয়নি এবং (0, 0) নয় (অথবা place হল একটি সঠিক স্থান আইডি), এবং TRAFFIC_AWARE শুধুমাত্র DRIVE অথবা TWO_WHEELER-এর সাথে ব্যবহার করা হয়। বাদ দেওয়া latitude বা longitude-কে 0.0 হিসেবে বিবেচনা করা হয়, তাই এদের মধ্যে যেকোনও একটি বাদ দিলে সাধারণত 400 সমস্যা হয় না (যদি না অন্য ভ্যালুটিও 0.0 হয়)। আইসোক্রোন ভুল জায়গায় দেখালে দুটি ভ্যালুই ডবল-চেক করুন।
  • PERMISSION_DENIED (403): আপনার API কী বা OAuth টোকেন অন্তর্ভুক্ত করা হয়েছে কিনা এবং আপনার Google Cloud প্রোজেক্টে Isochrones API ও বিলিং চালু করা আছে কিনা তা যাচাই করুন।
  • NOT_FOUND (404): place-এর লোকেশন খুঁজে পাওয়া যায়নি অথবা ভ্রমণ মোডের মাধ্যমে ব্যবহার করা যায় এমন কাছাকাছি কোনও রাস্তার সাথে শুরুর লোকেশন স্ন্যাপ করা যায়নি (প্রায় ২০০ মিটার বা তার কম দূরত্বের মধ্যে WALK এবং BICYCLE-এর জন্য)।
  • RESOURCE_EXHAUSTED (429): আপনার প্রোজেক্ট প্রতি মিনিটে অনুরোধের কোটা (ডিফল্ট ৩০০ QPM) ছাড়িয়ে গেছে। এক্সপোনেনশিয়াল ব্যাক-অফ ব্যবহার করে আবার চেষ্টা করুন।