রিভার্স জিওকোডিং (ঠিকানা লুকআপ) অনুরোধ এবং প্রতিক্রিয়া

জিওকোডিং শব্দটি সাধারণত একটি মানচিত্রের একটি অবস্থানে একটি মানব-পাঠযোগ্য ঠিকানা অনুবাদ করাকে বোঝায়। বিপরীতটি করার প্রক্রিয়া, মানচিত্রের একটি অবস্থানকে একটি মানব-পাঠযোগ্য ঠিকানায় অনুবাদ করে, এটি বিপরীত জিওকোডিং নামে পরিচিত।

রিভার্স জিওকোডিং অনুরোধ

প্রয়োজনীয় পরামিতি

  • latlng — অক্ষাংশ এবং দ্রাঘিমাংশ স্থানাঙ্ক নির্দিষ্ট করে যে অবস্থানের জন্য আপনি সবচেয়ে কাছের, মানুষের-পাঠযোগ্য ঠিকানা চান।
  • key — আপনার অ্যাপ্লিকেশনের API কী। এই কী কোটা ব্যবস্থাপনার উদ্দেশ্যে আপনার আবেদনকে চিহ্নিত করে। কিভাবে একটি চাবি পেতে শিখুন.

ঐচ্ছিক পরামিতি

এইগুলি হল ঐচ্ছিক পরামিতি যা আপনি একটি বিপরীত জিওকোডিং অনুরোধে অন্তর্ভুক্ত করতে পারেন:

  • language - যে ভাষায় ফলাফল দিতে হবে।
    • সমর্থিত ভাষার তালিকা দেখুন। Google প্রায়ই সমর্থিত ভাষা আপডেট করে, তাই এই তালিকাটি সম্পূর্ণ নাও হতে পারে।
    • language সরবরাহ করা না হলে, জিওকোডার Accept-Language হেডারে উল্লেখিত পছন্দের ভাষা ব্যবহার করার চেষ্টা করে, অথবা যে ডোমেনের স্থানীয় ভাষা থেকে অনুরোধ পাঠানো হয়েছে।
    • জিওকোডার একটি রাস্তার ঠিকানা প্রদান করার জন্য যথাসাধ্য চেষ্টা করে যা ব্যবহারকারী এবং স্থানীয় উভয়ের জন্যই পাঠযোগ্য। সেই লক্ষ্য অর্জনের জন্য, এটি স্থানীয় ভাষায় রাস্তার ঠিকানা ফেরত দেয়, পছন্দের ভাষা পর্যবেক্ষণ করে প্রয়োজনে ব্যবহারকারীর দ্বারা পাঠযোগ্য একটি স্ক্রিপ্টে প্রতিলিপি করা হয়। অন্য সব ঠিকানা পছন্দের ভাষায় ফেরত দেওয়া হয়। ঠিকানার উপাদানগুলি একই ভাষায় ফেরত দেওয়া হয়, যা প্রথম উপাদান থেকে বেছে নেওয়া হয়।
    • পছন্দের ভাষায় নাম না পাওয়া গেলে, জিওকোডার সবচেয়ে কাছের মিল ব্যবহার করে।
  • region — অঞ্চল কোড, একটি ccTLD ("টপ-লেভেল ডোমেন") দুই-অক্ষরের মান হিসাবে নির্দিষ্ট করা হয়েছে। প্যারামিটার প্রযোজ্য আইনের উপর ভিত্তি করে ফলাফলকেও প্রভাবিত করতে পারে।
  • result_type — এক বা একাধিক অ্যাড্রেস টাইপের একটি ফিল্টার, একটি পাইপ ( | ) দ্বারা পৃথক করা হয়েছে। যদি প্যারামিটারে একাধিক অ্যাড্রেস টাইপ থাকে, তাহলে এপিআই সমস্ত অ্যাড্রেস রিটার্ন করে যা যেকোনো প্রকারের সাথে মেলে। প্রক্রিয়াকরণ সম্পর্কে একটি নোট: result_type পরামিতি নির্দিষ্ট ঠিকানা প্রকার(গুলি) অনুসন্ধানকে সীমাবদ্ধ করে না। বরং, result_type একটি পোস্ট-সার্চ ফিল্টার হিসাবে কাজ করে: API নির্দিষ্ট latlng এর জন্য সমস্ত ফলাফল নিয়ে আসে, তারপর সেই ফলাফলগুলি বাতিল করে যেগুলি নির্দিষ্ট ঠিকানা প্রকার(গুলি) এর সাথে মেলে না৷ নিম্নলিখিত মানগুলি সমর্থিত:
    • street_address একটি সুনির্দিষ্ট রাস্তার ঠিকানা নির্দেশ করে।
    • route একটি নামযুক্ত রুট নির্দেশ করে (যেমন "US 101")।
    • intersection একটি প্রধান ছেদ নির্দেশ করে, সাধারণত দুটি প্রধান রাস্তা।
    • political একটি রাজনৈতিক সত্তা নির্দেশ করে। সাধারণত, এই ধরনের কিছু বেসামরিক প্রশাসনের বহুভুজ নির্দেশ করে।
    • country জাতীয় রাজনৈতিক সত্তাকে নির্দেশ করে এবং এটি সাধারণত জিওকোডার দ্বারা প্রত্যাবর্তিত সর্বোচ্চ অর্ডার প্রকার।
    • administrative_area_level_1 দেশের স্তরের নিচে একটি প্রথম-ক্রম নাগরিক সত্তা নির্দেশ করে। মার্কিন যুক্তরাষ্ট্রের মধ্যে, এই প্রশাসনিক স্তরগুলি হল রাজ্য। সমস্ত জাতি এই প্রশাসনিক স্তর প্রদর্শন করে না। বেশিরভাগ ক্ষেত্রে, প্রশাসনিক_ক্ষেত্র_স্তরের_1 সংক্ষিপ্ত নামগুলি ISO 3166-2 উপবিভাগ এবং অন্যান্য ব্যাপকভাবে প্রচারিত তালিকাগুলির সাথে ঘনিষ্ঠভাবে মিলবে; তবে এটি নিশ্চিত নয় কারণ আমাদের জিওকোডিং ফলাফল বিভিন্ন সংকেত এবং অবস্থান ডেটার উপর ভিত্তি করে।
    • administrative_area_level_2 দেশের স্তরের নিচে একটি দ্বিতীয়-ক্রম নাগরিক সত্তা নির্দেশ করে। মার্কিন যুক্তরাষ্ট্রের মধ্যে, এই প্রশাসনিক স্তরগুলি হল কাউন্টি। সমস্ত জাতি এই প্রশাসনিক স্তর প্রদর্শন করে না।
    • administrative_area_level_3 দেশের স্তরের নীচে একটি তৃতীয়-ক্রম নাগরিক সত্তা নির্দেশ করে৷ এই ধরনের একটি ছোট নাগরিক বিভাগ নির্দেশ করে। সমস্ত জাতি এই প্রশাসনিক স্তর প্রদর্শন করে না।
    • administrative_area_level_4 দেশের স্তরের নিচে একটি চতুর্থ ক্রম নাগরিক সত্তা নির্দেশ করে। এই ধরনের একটি ছোট নাগরিক বিভাগ নির্দেশ করে। সমস্ত জাতি এই প্রশাসনিক স্তর প্রদর্শন করে না।
    • administrative_area_level_5 দেশের স্তরের নিচে একটি পঞ্চম-ক্রম নাগরিক সত্তা নির্দেশ করে। এই ধরনের একটি ছোট নাগরিক বিভাগ নির্দেশ করে। সমস্ত জাতি এই প্রশাসনিক স্তর প্রদর্শন করে না।
    • administrative_area_level_6 দেশের স্তরের নিচে একটি ষষ্ঠ-ক্রম নাগরিক সত্তা নির্দেশ করে। এই ধরনের একটি ছোট নাগরিক বিভাগ নির্দেশ করে। সমস্ত জাতি এই প্রশাসনিক স্তর প্রদর্শন করে না।
    • administrative_area_level_7 দেশের স্তরের নিচে একটি সপ্তম ক্রম নাগরিক সত্তা নির্দেশ করে। এই ধরনের একটি ছোট নাগরিক বিভাগ নির্দেশ করে। সমস্ত জাতি এই প্রশাসনিক স্তর প্রদর্শন করে না।
    • colloquial_area সত্তার জন্য একটি সাধারণভাবে ব্যবহৃত বিকল্প নাম নির্দেশ করে।
    • locality একটি নিগমিত শহর বা শহরের রাজনৈতিক সত্তা নির্দেশ করে।
    • sublocality একটি এলাকার নীচে একটি প্রথম-ক্রম নাগরিক সত্তা নির্দেশ করে। কিছু অবস্থানের জন্য অতিরিক্ত প্রকারের একটি পেতে পারে: sublocality_level_1 থেকে sublocality_level_5 । প্রতিটি উপ-স্থানীয় স্তর একটি নাগরিক সত্তা। বড় সংখ্যা একটি ছোট ভৌগলিক এলাকা নির্দেশ করে।
    • neighborhood একটি নামযুক্ত প্রতিবেশ নির্দেশ করে
    • premise একটি নামযুক্ত অবস্থান নির্দেশ করে, সাধারণত একটি বিল্ডিং বা একটি সাধারণ নাম সহ বিল্ডিংগুলির সংগ্রহ৷
    • subpremise একটি নামযুক্ত অবস্থানের নীচে একটি প্রথম-ক্রম সত্তা নির্দেশ করে, সাধারণত একটি সাধারণ নাম সহ বিল্ডিংগুলির সংগ্রহের মধ্যে একটি একক বিল্ডিং
    • plus_code অক্ষাংশ এবং দ্রাঘিমাংশ থেকে প্রাপ্ত একটি এনকোড করা অবস্থানের রেফারেন্স নির্দেশ করে। প্লাস কোডগুলি এমন জায়গায় রাস্তার ঠিকানাগুলির প্রতিস্থাপন হিসাবে ব্যবহার করা যেতে পারে যেখানে সেগুলি বিদ্যমান নেই (যেখানে বিল্ডিংগুলি সংখ্যাযুক্ত নয় বা রাস্তার নাম দেওয়া হয়নি)। বিস্তারিত জানার জন্য https://plus.codes দেখুন।
    • postal_code একটি পোস্টাল কোড নির্দেশ করে যেটি দেশের মধ্যে ডাক মেইলের ঠিকানা দিতে ব্যবহৃত হয়।
    • natural_feature একটি বিশিষ্ট প্রাকৃতিক বৈশিষ্ট্য নির্দেশ করে।
    • airport একটি বিমানবন্দর নির্দেশ করে।
    • park একটি নামযুক্ত পার্ক নির্দেশ করে।
    • point_of_interest একটি নামকৃত আগ্রহের পয়েন্ট নির্দেশ করে। সাধারণত, এই "POI"গুলি হল বিশিষ্ট স্থানীয় সত্ত্বা যা "এম্পায়ার স্টেট বিল্ডিং" বা "আইফেল টাওয়ার" এর মতো অন্য বিভাগে সহজে ফিট করে না।
  • location_type — এক বা একাধিক অবস্থানের ধরনগুলির একটি ফিল্টার, একটি পাইপ ( | ) দ্বারা পৃথক করা হয়েছে। যদি প্যারামিটারে একাধিক অবস্থানের ধরন থাকে, তাহলে API সমস্ত প্রকারের সাথে মেলে এমন সমস্ত ঠিকানা প্রদান করে। প্রক্রিয়াকরণ সম্পর্কে একটি নোট: location_type প্যারামিটারটি নির্দিষ্ট অবস্থানের প্রকারের মধ্যে অনুসন্ধানকে সীমাবদ্ধ করে না। বরং, location_type একটি পোস্ট-অনুসন্ধান ফিল্টার হিসাবে কাজ করে: API নির্দিষ্ট latlng এর জন্য সমস্ত ফলাফল নিয়ে আসে, তারপর সেই ফলাফলগুলি বাতিল করে যা নির্দিষ্ট অবস্থানের প্রকারের সাথে মেলে না। নিম্নলিখিত মানগুলি সমর্থিত:
    • "ROOFTOP" শুধুমাত্র সেই ঠিকানাগুলি প্রদান করে যেগুলির জন্য Google-এর কাছে রাস্তার ঠিকানার নির্ভুলতা পর্যন্ত সঠিক অবস্থানের তথ্য রয়েছে৷
    • "RANGE_INTERPOLATED" শুধুমাত্র সেই ঠিকানাগুলি প্রদান করে যেগুলি দুটি সুনির্দিষ্ট বিন্দুর (যেমন ছেদ) মধ্যে অন্তর্নিহিত একটি আনুমানিকতা (সাধারণত একটি রাস্তায়) প্রতিফলিত করে। একটি ইন্টারপোলেটেড পরিসর সাধারণত নির্দেশ করে যে রাস্তার ঠিকানার জন্য ছাদের জিওকোডগুলি অনুপলব্ধ৷
    • "GEOMETRIC_CENTER" শুধুমাত্র একটি অবস্থানের জ্যামিতিক কেন্দ্র যেমন একটি পলিলাইন (উদাহরণস্বরূপ, একটি রাস্তা) বা বহুভুজ (অঞ্চল) প্রদান করে।
    • "APPROXIMATE" শুধুমাত্র সেই ঠিকানাগুলি প্রদান করে যা আনুমানিক হিসাবে চিহ্নিত করা হয়।

result_type এবং location_type উভয় ফিল্টার উপস্থিত থাকলে API শুধুমাত্র সেই ফলাফল প্রদান করে যা result_type এবং location_type উভয় মানের সাথে মেলে। যদি কোনো ফিল্টার মান গ্রহণযোগ্য না হয়, তাহলে API ZERO_RESULTS প্রদান করে।

বিপরীত জিওকোডিংয়ের উদাহরণ

নিম্নলিখিত ক্যোয়ারীতে ব্রুকলিনের একটি অবস্থানের জন্য অক্ষাংশ/দ্রাঘিমাংশের মান রয়েছে:

https://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&key=YOUR_API_KEY

উপরের প্রশ্নটি নিম্নলিখিত ফলাফল প্রদান করে:

{
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "277",
               "short_name" : "277",
               "types" : [ "street_number" ]
            },
            {
               "long_name" : "Bedford Avenue",
               "short_name" : "Bedford Ave",
               "types" : [ "route" ]
            },
            {
               "long_name" : "Williamsburg",
               "short_name" : "Williamsburg",
               "types" : [ "neighborhood", "political" ]
            },
            {
               "long_name" : "Brooklyn",
               "short_name" : "Brooklyn",
               "types" : [ "sublocality", "political" ]
            },
            {
               "long_name" : "Kings",
               "short_name" : "Kings",
               "types" : [ "administrative_area_level_2", "political" ]
            },
            {
               "long_name" : "New York",
               "short_name" : "NY",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "United States",
               "short_name" : "US",
               "types" : [ "country", "political" ]
            },
            {
               "long_name" : "11211",
               "short_name" : "11211",
               "types" : [ "postal_code" ]
            }
         ],
         "formatted_address" : "277 Bedford Avenue, Brooklyn, NY 11211, USA",
         "geometry" : {
            "location" : {
               "lat" : 40.714232,
               "lng" : -73.9612889
            },
            "location_type" : "ROOFTOP",
            "viewport" : {
               "northeast" : {
                  "lat" : 40.7155809802915,
                  "lng" : -73.9599399197085
               },
               "southwest" : {
                  "lat" : 40.7128830197085,
                  "lng" : -73.96263788029151
               }
            }
         },
         "place_id" : "ChIJd8BlQ2BZwokRAFUEcm_qrcA",
         "types" : [ "street_address" ]
      },

  ... Additional <code>results[]</code> ...

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

বিপরীত জিওকোডার রাজনৈতিক সত্তা (দেশ, প্রদেশ, শহর এবং পাড়া), রাস্তার ঠিকানা এবং পোস্টাল কোডের সাথে মেলে।

পূর্ববর্তী ক্যোয়ারী দ্বারা প্রত্যাবর্তিত formatted_address মানগুলির সম্পূর্ণ তালিকা নীচে দেখানো হয়েছে৷

{
   "plus_code" : {
      "compound_code" : "P27Q+MCM New York, NY, USA",
      "global_code" : "87G8P27Q+MCM"
   },
   "results" : [
      {
         "formatted_address" : "277 Bedford Ave, Brooklyn, NY 11211, USA",
         ...
         "types" : [ "street_address" ]
      },
      {
         "formatted_address" : "279 Bedford Ave, Brooklyn, NY 11211, USA",
         ...
         "types" : [ "premise" ]
      },
      {
         "formatted_address" : "277 Bedford Ave, Brooklyn, NY 11211, USA",
         ...
         "types" : [ "establishment", "point_of_interest" ]
      },
      {
         "formatted_address" : "291-275 Bedford Ave, Brooklyn, NY 11211, USA",
         ...
         "types" : [ "route" ]
      },
      {
         "formatted_address" : "P27Q+MC New York, NY, USA",
         ...
         "types" : [ "plus_code" ]
      },
      {
         "formatted_address" : "South Williamsburg, Brooklyn, NY, USA",
         ...
         "types" : [ "neighborhood", "political" ]
      },
      {
         "formatted_address" : "Brooklyn, NY 11211, USA",
         ...
         "types" : [ "postal_code" ]
      },
      {
         "formatted_address" : "Williamsburg, Brooklyn, NY, USA",
         ...
         "types" : [ "neighborhood", "political" ]
      },
      {
         "formatted_address" : "Kings County, Brooklyn, NY, USA",
         ...
         "types" : [ "administrative_area_level_2", "political" ]
      },
      {
         "formatted_address" : "Brooklyn, NY, USA",
         ...
         "types" : [ "political", "sublocality", "sublocality_level_1" ]
      },
      {
         "formatted_address" : "New York, NY, USA",
         ...
         "types" : [ "locality", "political" ]
      },
      {
         "formatted_address" : "New York, USA",
         ...
         "types" : [ "administrative_area_level_1", "political" ]
      },
      {
         "formatted_address" : "United States",
         ...
         "types" : [ "country", "political" ]
      }
   ],
   "status" : "OK"
}

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

টাইপ দ্বারা ফিল্টার করা রিভার্স জিওকোডিং

নিম্নলিখিত উদাহরণটি শুধুমাত্র ROOFTOP এর অবস্থানের ধরন এবং street_address একটি ঠিকানার ধরন সহ ফেরত ঠিকানাগুলিকে ফিল্টার করে।

https://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452
&location_type=ROOFTOP&result_type=street_address&key=YOUR_API_KEY

দ্রষ্টব্য: এই ফিল্টারগুলি শুধুমাত্র বিপরীত জিওকোডিংয়ের জন্য বৈধ।

বিপরীত জিওকোডিং প্রতিক্রিয়া

বিপরীত জিওকোডিং প্রতিক্রিয়ার বিন্যাস জিওকোডিং প্রতিক্রিয়ার মতোই। জিওকোডিং প্রতিক্রিয়া দেখুন। নীচে একটি বিপরীত জিওকোডিং প্রতিক্রিয়া সম্ভাব্য স্থিতি কোড আছে.

রিভার্স জিওকোডিং স্ট্যাটাস কোড

জিওকোডিং রেসপন্স অবজেক্টের মধ্যে "status" ফিল্ডে অনুরোধের স্ট্যাটাস থাকে এবং রিভার্স জিওকোডিং কেন কাজ করছে না তা ট্র্যাক করতে সাহায্য করার জন্য ডিবাগিং তথ্য থাকতে পারে। "status" ক্ষেত্রে নিম্নলিখিত মান থাকতে পারে:

  • "OK" নির্দেশ করে যে কোনও ত্রুটি ঘটেনি এবং অন্তত একটি ঠিকানা ফেরত দেওয়া হয়েছে৷
  • "ZERO_RESULTS" ইঙ্গিত করে যে বিপরীত জিওকোডিং সফল হয়েছে কিন্তু কোনো ফলাফল দেয়নি। এটি ঘটতে পারে যদি জিওকোডারটি দূরবর্তী অবস্থানে latlng পাস করা হয়।
  • "OVER_QUERY_LIMIT" নির্দেশ করে যে আপনি আপনার কোটা অতিক্রম করেছেন৷
  • "REQUEST_DENIED" নির্দেশ করে যে অনুরোধটি অস্বীকার করা হয়েছে৷ সম্ভবত কারণ অনুরোধটিতে একটি result_type বা location_type প্যারামিটার রয়েছে কিন্তু একটি API কী অন্তর্ভুক্ত করে না।
  • "INVALID_REQUEST" সাধারণত নিম্নলিখিতগুলির একটি নির্দেশ করে:
    • ক্যোয়ারী ( address , components বা latlng ) অনুপস্থিত।
    • একটি অবৈধ result_type বা location_type দেওয়া হয়েছে।
  • "UNKNOWN_ERROR" নির্দেশ করে যে সার্ভার ত্রুটির কারণে অনুরোধটি প্রক্রিয়া করা যায়নি৷ আপনি আবার চেষ্টা করলে অনুরোধ সফল হতে পারে।

রিভার্স জিওকোডিং প্লাস কোড

জিওকোডিং প্রতিক্রিয়ার মধ্যে plus_code ক্ষেত্রটিতে একটি প্লাস কোড রয়েছে যা জিজ্ঞাসা করা অক্ষাংশ এবং দ্রাঘিমাংশের সর্বোত্তম অনুমান করে। উপরন্তু, বেশিরভাগ ক্ষেত্রে JSON ফলাফল অ্যারেতে একটি plus_code প্রকার এবং একটি প্লাস কোড সম্বলিত ঠিকানা সহ একটি সম্পূর্ণ জিওকোডিং ফলাফল থাকে। ডিকোড করা প্লাস কোড এবং রিকোয়েস্ট পয়েন্টের মধ্যে দূরত্ব 10 মিটারের নিচে নিশ্চিত।