জিওকোডিং করার সময় কোটা ব্যবহার অপ্টিমাইজ করা

জিওকোডিং হল এমন একটি প্রসেস যার মাধ্যমে ঠিকানা ("1600 Amphitheatre Parkway, Mountain View, CA") থেকে ভৌগোলিক কোঅর্ডিনেট (37.423021, -122.083739) তৈরি করা হয়, যা আপনি মার্কার প্লেস করতে বা ম্যাপের পজিশন সেট করতে ব্যবহার করতে পারেন। Google Maps Platform API জিওকোডিংয়ের জন্য দুটি পদ্ধতি প্রদান করে:

  • ক্লায়েন্ট-সাইড জিওকোডিং, যা ব্রাউজারে এক্সিকিউট করা হয়, সাধারণত ব্যবহারকারীর অ্যাকশনের উত্তরে। Maps JavaScript API এমন ক্লাস প্রদান করে যা আপনার হয়ে অনুরোধ করে। এই পদ্ধতিটি Maps JavaScript API ডকুমেন্টে বর্ণনা করা হয়েছে।
  • HTTP সার্ভার-সাইড জিওকোডিং, যা আপনার সার্ভারকে সরাসরি কোয়েরি করতে দেয় জিওকোডের জন্য Google-এর সার্ভার। Geocoding API হল ওয়েব পরিষেবা যা এই কার্যকারিতা প্রদান করে। সাধারণত, আপনি এই পরিষেবাটি সার্ভার-সাইডে রান করা অন্যান্য কোডের সাথে ইন্টিগ্রেট করেন। সার্ভার-সাইড জিওকোডিং সম্পর্কে জিওকোডিং API ডকুমেন্টেশনে বর্ণনা করা আছে।

ক্লায়েন্ট-সাইড ও সার্ভার-সাইড জিওকোডিংয়ের উদাহরণ

এখানে ক্লায়েন্ট-সাইড জিওকোডিং-এর একটি স্যাম্পেল দেওয়া হল যা একটি ঠিকানা নেয়, সেটিকে জিওকোড করে, ম্যাপের কেন্দ্রকে সেই লোকেশনে নিয়ে যায় এবং সেখানে একটি ম্যাপ মার্কার যোগ করে:

geocoder = new google.maps.Geocoder();
geocoder.geocode({ 'address': address }, function(results, status) {
  if (status == google.maps.GeocoderStatus.OK) {
    map.setCenter(results[0].geometry.location);
    var marker = new google.maps.Marker({
      map: map,
      position: results[0].geometry.location
    });
  }
});

আরও উদাহরণ দেখতে, Maps JavaScript API ডকুমেন্টেশন দেখুন।

সার্ভার-সাইড জিওকোডিং অনুরোধ করার জন্য Python ব্যবহার করে এখানে একটি উদাহরণ দেওয়া হল:

import urllib2

address="1600+Amphitheatre+Parkway,+Mountain+View,+CA"
key="my-key-here"
url="https://maps.googleapis.com/maps/api/geocode/json?address=%s&key=%s" % (address, key)

response = urllib2.urlopen(url)

jsongeocode = response.read()

এর ফলে নিম্নলিখিত কন্টেন্ট সহ একটি JSON অবজেক্ট তৈরি হয়:

{
  "status": "OK",
  "results": [ {
    "types": street_address,
    "formatted_address": "1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA",
    "address_components": [ {
      "long_name": "1600",
      "short_name": "1600",
      "types": street_number
    }, {
      "long_name": "Amphitheatre Pkwy",
      "short_name": "Amphitheatre Pkwy",
      "types": route
    }, {
      "long_name": "Mountain View",
      "short_name": "Mountain View",
      "types": [ "locality", "political" ]
    }, {
      "long_name": "San Jose",
      "short_name": "San Jose",
      "types": [ "administrative_area_level_3", "political" ]
    }, {
      "long_name": "Santa Clara",
      "short_name": "Santa Clara",
      "types": [ "administrative_area_level_2", "political" ]
    }, {
      "long_name": "California",
      "short_name": "CA",
      "types": [ "administrative_area_level_1", "political" ]
    }, {
      "long_name": "United States",
      "short_name": "US",
      "types": [ "country", "political" ]
    }, {
      "long_name": "94043",
      "short_name": "94043",
      "types": postal_code
    } ],
    "geometry": {
      "location": {
        "lat": 37.4220323,
        "lng": -122.0845109
      },
      "location_type": "ROOFTOP",
      "viewport": {
        "southwest": {
          "lat": 37.4188847,
          "lng": -122.0876585
        },
        "northeast": {
          "lat": 37.4251799,
          "lng": -122.0813633
        }
      }
    }
  } ]
}

এছাড়াও, সার্ভার-সাইড জিওকোডার JSON-এর বিকল্প হিসেবে XML ফর্ম্যাট প্রদান করে। আরও উদাহরণের জন্য, Geocoding API ডকুমেন্টেশন এবং Python ও অন্যান্য ভাষার জন্য ক্লায়েন্ট লাইব্রেরি দেখুন।

কোটা ও খরচ সংক্রান্ত বিষয়

জিওকোডিং সংক্রান্ত খরচ, কোটা ও রেট লিমিট এই ডকুমেন্টে উল্লেখ করা স্ট্র্যাটেজি নির্ধারণ করে।

খরচ

জিওকোডিং সংক্রান্ত অনুরোধের জন্য প্রতিদিন কোটা (QPD) সংক্রান্ত সীমা আর ব্যবহার করা হয় না। পরিবর্তে, প্রতিটি জিওকোডিং অনুরোধ, ব্রাউজারের মাধ্যমে ক্লায়েন্ট-সাইড বা Geocoding API ওয়েব পরিষেবার মাধ্যমে সার্ভার-সাইড যাই হোক না কেন, প্রতিটি মূল্যে বিল করা হয়। ব্যবহারের খরচ ম্যানেজ করতে, আপনার দৈনিক কোটা সীমিত করার কথা বিবেচনা করুন।

রেট লিমিট

জিওকোডিং পরিষেবার রেট ৩,০০০ QPM (প্রতি মিনিটে কোয়েরি) পর্যন্ত সীমিত, যা ক্লায়েন্ট-সাইড ও সার্ভার-সাইড কোয়েরির যোগফল হিসেবে গণনা করা হয়।

মোবাইল অ্যাপের মতো নির্দিষ্ট সময় অন্তর ক্লায়েন্ট-সাইড জিওকোডিং অনুরোধ চালানোর সময়, আপনার সব ব্যবহারকারী যদি একই সময়ে অনুরোধ করেন (যেমন, প্রতি মিনিটের একই সেকেন্ডে), তাহলে আপনার অনুরোধে সমস্যা হতে পারে। এটি এড়াতে, নিম্নলিখিতগুলির মধ্যে একটি বিবেচনা করুন:

  • আপনার অনুরোধে (জিটার) র‍্যান্ডম ইন্টারভাল যোগ করুন। আপনার সম্পূর্ণ ব্যবহারকারী বেস জুড়ে অনুরোধগুলি যেন র্যান্ডম হয় তা নিশ্চিত করুন।
  • Android-এর জন্য ডেভেলপ করলে, অনির্দিষ্ট রিপিটিং অ্যালার্ম ব্যবহার করুন।
  • Android-এর জন্য ডেভেলপ করলে, উপযুক্ত লোকেশন স্ট্র্যাটেজি বেছে নিন।

ক্যাশ করা হচ্ছে

ক্যাশিং সম্পর্কে Geocoding API নীতি দেখুন।

কখন ক্লায়েন্ট-সাইড জিওকোডিং ব্যবহার করতে হয়

এর সংক্ষিপ্ত উত্তর হল, "প্রায় সবসময়ই"। কারণগুলি হল:

  • ক্লায়েন্ট-সাইড অনুরোধ ও উত্তর ব্যবহারকারীদের জন্য আরও দ্রুত, আরও ইন্টার‍্যাক্টিভ অভিজ্ঞতা প্রদান করে।
  • ক্লায়েন্ট-সাইড অনুরোধে এমন তথ্য থাকতে পারে যা জিওকোডিংয়ের কোয়ালিটি উন্নত করে: ব্যবহারকারীর ভাষা, অঞ্চল ও ভিউপোর্ট।

বিশেষ করে, ব্যবহারকারীর দেওয়া ইনপুটের উপর ভিত্তি করে ঠিকানা জিওকোডিং করার সময় ক্লায়েন্ট-সাইড জিওকোডিং সবচেয়ে ভাল কাজ করে।

ক্লায়েন্ট-সাইড জিওকোডিংয়ের দুটি প্রাথমিক আর্কিটেকচার রয়েছে:

  • সম্পূর্ণ জিওকোডিং ও ডিসপ্লে ব্রাউজারে করুন। যেমন, ব্যবহারকারী আপনার পৃষ্ঠায় কোনও ঠিকানা লিখলেন। আপনার অ্যাপ্লিকেশন এটি জিওকোড করে। তারপর আপনার পৃষ্ঠা ম্যাপে মার্কার তৈরি করতে জিওকোড ব্যবহার করে। অথবা আপনার অ্যাপ জিওকোড ব্যবহার করে কিছু সাধারণ বিশ্লেষণ করে। আপনার সার্ভারে কোনও ডেটা পাঠানো হয় না। এর ফলে আপনার সার্ভারের উপর লোড কমে যায়।
  • ব্রাউজারে জিওকোডিং করে সার্ভারে পাঠান। যেমন, ব্যবহারকারী আপনার পৃষ্ঠায় একটি ঠিকানা লিখলেন। আপনার অ্যাপ্লিকেশন ব্রাউজারে এটি জিওকোড করে। তারপরে অ্যাপটি আপনার সার্ভারে ডেটা পাঠায়। সার্ভার কিছু ডেটা সহ উত্তর দেয়, যেমন কাছাকাছি উল্লেখযোগ্য স্থান। এটি আপনাকে নিজের ডেটার উপর ভিত্তি করে উত্তর কাস্টমাইজ করার অনুমতি দেয়।

সার্ভার-সাইড জিওকোডিং কখন ব্যবহার করতে হয়

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

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