জিওকোডিং বলতে সাধারণত মানুষের-পঠনযোগ্য ঠিকানা ম্যাপের লোকেশনে অনুবাদ করাকে বোঝায়। এর বিপরীত প্রক্রিয়া, অর্থাৎ ম্যাপে কোনও লোকেশনকে মানুষের-পঠনযোগ্য ঠিকানায় অনুবাদ করাকে রিভার্স জিওকোডিং বলা হয়।
রিভার্স জিওকোডিং সংক্রান্ত অনুরোধ
প্রয়োজনীয় প্যারামিটার
latlng— অক্ষাংশ ও দ্রাঘিমাংশ স্থানাঙ্ক যা সেই লোকেশনকে নির্দিষ্ট করে যার জন্য আপনি সবচেয়ে কাছের, মানুষের-পঠনযোগ্য ঠিকানা চান।key— আপনার অ্যাপ্লিকেশনের API key। কোটা ম্যানেজমেন্টের উদ্দেশ্যে এই কী আপনার অ্যাপ্লিকেশনকে শনাক্ত করে। কীভাবে কী পাবেন তা জানুন।
ঐচ্ছিক প্যারামিটার
এগুলি হল ঐচ্ছিক প্যারামিটার যা আপনি রিভার্স জিওকোডিং অনুরোধে যোগ করতে পারেন:
language— যে ভাষায় ফলাফল দেখানো হবে।- অনুমোদিত ভাষার তালিকা দেখুন। Google প্রায়ই কাজ করে এমন ভাষার তালিকা আপডেট করে, তাই এই তালিকা সম্পূর্ণ নাও হতে পারে।
languageপ্রদান করা না হলে, জিওকোডারAccept-Languageহেডারে উল্লেখ করা পছন্দের ভাষা অথবা যে ডোমেন থেকে অনুরোধ পাঠানো হয়েছে সেটির নেটিভ ভাষা ব্যবহার করার চেষ্টা করে।- জিওকোডার এমন রাস্তার ঠিকানা প্রদান করার জন্য যথাসাধ্য চেষ্টা করে যা ব্যবহারকারী এবং স্থানীয় লোকজন উভয়ের জন্যই বোধগম্য। এই লক্ষ্য পূরণ করতে, এটি স্থানীয় ভাষায় রাস্তার ঠিকানা দেখায়, প্রয়োজনে ব্যবহারকারীর পছন্দের ভাষা অনুযায়ী তার পড়ার উপযোগী স্ক্রিপ্টে লিপ্যন্তর করে। অন্যান্য সব ঠিকানা পছন্দের ভাষায় ফেরত পাঠানো হয়। ঠিকানার সব কম্পোনেন্ট একই ভাষায় দেখানো হয়, যা প্রথম কম্পোনেন্ট থেকে বেছে নেওয়া হয়।
- পছন্দের ভাষায় কোনও নাম উপলভ্য না থাকলে, জিওকোডার সবচেয়ে কাছাকাছি মিল ব্যবহার করে।
region— অঞ্চল কোড, ccTLD ("টপ-লেভেল ডোমেন") হিসেবে দুই-অক্ষরের মান দিয়ে নির্দিষ্ট করা। এছাড়াও, প্রযোজ্য আইনের ভিত্তিতে প্যারামিটার ফলাফলকে প্রভাবিত করতে পারে।result_type— এক বা একাধিক ধরনের ঠিকানার ফিল্টার, যা পাইপ (|) দিয়ে আলাদা করা থাকে। প্যারামিটারে একাধিক ধরনের ঠিকানা থাকলে, API যেকোনও ধরনের ঠিকানার সাথে মেলে এমন সব ঠিকানা দেখায়। প্রসেসিং সম্পর্কে একটি নোট:result_typeপ্যারামিটারটি নির্দিষ্ট করা ঠিকানার ধরন(গুলি) অনুযায়ী সার্চকে সীমাবদ্ধ করে না। বরং,result_typeসার্চ-পরবর্তী ফিল্টার হিসেবে কাজ করে: API নির্দিষ্টlatlng-এর জন্য সব ফলাফল নিয়ে আসে, তারপর নির্দিষ্ট ঠিকানার ধরনের সাথে মেলে না এমন ফলাফল বাতিল করে দেয়। নিম্নলিখিত ভ্যালু কাজ করে:ঠিকানার ধরন এবং ঠিকানা উপাদানের ধরন
উত্তরে
GeocodeResultবডিতেtypesঅ্যারে ঠিকানার ধরন নির্দেশ করে। ঠিকানার ধরনের উদাহরণের মধ্যে রয়েছে রাস্তার ঠিকানা, দেশ বা রাজনৈতিক সত্তা।GeocodeResultবডিরAddressComponentsফিল্ডেtypesঅ্যারে ঠিকানার প্রতিটি অংশের ধরন নির্দেশ করে। উদাহরণের মধ্যে রাস্তার নম্বর বা দেশ অন্তর্ভুক্ত।ঠিকানার একাধিক ধরন থাকতে পারে। এই ধরনের তথ্যকে 'ট্যাগ' হিসেবে বিবেচনা করা হতে পারে। যেমন, অনেক শহর
politicalএবংlocalityধরনের সাথে ট্যাগ করা আছে।নিম্নলিখিত ধরনগুলি কাজ করে এবং ঠিকানা এবং ঠিকানা কম্পোনেন্ট ধরন অ্যারে উভয় ক্ষেত্রেই রিটার্ন করা হয়:
ঠিকানার ধরন বিবরণ street_addressরাস্তার সুনির্দিষ্ট ঠিকানা। routeনামযুক্ত রুট (যেমন "US 101")। intersectionএকটি প্রধান ইন্টারসেকশন, সাধারণত দুটি প্রধান রাস্তার। politicalএকটি রাজনৈতিক এন্টিটি। সাধারণত, এই ধরনের জায়গা কোনও সিভিল অ্যাডমিনিস্ট্রেশনের পলিগনকে নির্দেশ করে। countryজাতীয় রাজনৈতিক সত্তা এবং সাধারণত জিওকোডার দ্বারা রিটার্ন করা সর্বোচ্চ অর্ডার টাইপ। administrative_area_level_1দেশ লেভেলের নিচে প্রথম-অর্ডার সিভিল এন্টিটি। মার্কিন যুক্তরাষ্ট্রের মধ্যে, এই প্রশাসনিক লেভেলগুলি হল রাজ্য। সব দেশে এই প্রশাসনিক স্তর থাকে না। অধিকাংশ ক্ষেত্রে, administrative_area_level_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অক্ষাংশ ও দ্রাঘিমাংশ থেকে প্রাপ্ত, এনকোড করা লোকেশন রেফারেন্স। যেসব জায়গায় রাস্তার ঠিকানা নেই (যেখানে বিল্ডিংয়ের নম্বর বা রাস্তার নাম নেই), সেখানে রাস্তার ঠিকানার পরিবর্তে Plus কোড ব্যবহার করা যেতে পারে। আরও তথ্যের জন্য https://plus.codes দেখুন। postal_codeদেশের মধ্যে ডাকযোগে চিঠি পাঠানোর জন্য ব্যবহৃত পিন কোড। natural_featureএকটি বিশিষ্ট প্রাকৃতিক বৈশিষ্ট্য। airportএকটি বিমানবন্দর। parkনাম উল্লেখ করা পার্ক। point_of_interestউল্লেখযোগ্য স্থানের নাম। সাধারণত, এই "POI" হল বিশিষ্ট স্থানীয় এন্টিটি যা অন্য কোনও বিভাগে সহজে ফিট করে না, যেমন "এম্পায়ার স্টেট বিল্ডিং" বা "আইফেল টাওয়ার"। ধরনের খালি তালিকা থেকে বোঝা যায় যে নির্দিষ্ট ঠিকানা কম্পোনেন্টের জন্য কোনও পরিচিত ধরন নেই (যেমন, ফ্রান্সে Lieu-dit)।
location_type— এক বা একাধিক লোকেশন ধরনের ফিল্টার, পাইপ (|) দিয়ে আলাদা করা। প্যারামিটারে একাধিক লোকেশন ধরন থাকলে, API যেকোনও ধরনের সাথে ম্যাচ করা সব ঠিকানা ফিরিয়ে দেয়। প্রসেসিং সম্পর্কে একটি নোট:location_typeপ্যারামিটারটি নির্দিষ্ট লোকেশনের ধরনের জন্য সার্চকে সীমাবদ্ধ করে না। বরং,location_typeসার্চ-পরবর্তী ফিল্টার হিসেবে কাজ করে: API নির্দিষ্টlatlng-এর জন্য সব ফলাফল নিয়ে আসে, তারপর নির্দিষ্ট লোকেশন টাইপের সাথে ম্যাচ না করা ফলাফলগুলি বাতিল করে দেয়। নিম্নলিখিত ভ্যালু কাজ করে:"ROOFTOP"শুধুমাত্র সেইসব ঠিকানা রিটার্ন করে যেগুলির জন্য Google-এর কাছে রাস্তার ঠিকানা পর্যন্ত নির্ভুল লোকেশন তথ্য আছে।"RANGE_INTERPOLATED"শুধুমাত্র সেইসব ঠিকানা দেখায় যা দুটি নির্দিষ্ট পয়েন্টের (যেমন ইন্টারসেকশন) মধ্যে ইন্টারপোলেট করা আনুমানিক অবস্থান (সাধারণত কোনও রাস্তায়) দেখায়। ইন্টারপোলেট করা রেঞ্জ সাধারণত নির্দেশ করে যে রাস্তার ঠিকানার জন্য রুফটপ জিওকোড উপলভ্য নেই।"GEOMETRIC_CENTER"শুধুমাত্র কোনও লোকেশনের জ্যামিতিক কেন্দ্র যেমন পলিলাইন (যেমন, রাস্তা) বা পলিগন (অঞ্চল) রিটার্ন করে।"APPROXIMATE"শুধুমাত্র আনুমানিক হিসেবে চিহ্নিত করা ঠিকানাগুলিই দেখায়।
extra_computations— উত্তরে নিম্নলিখিত অতিরিক্ত ফিচার উল্লেখ করতে এই প্যারামিটার ব্যবহার করুন:ADDRESS_DESCRIPTORS— আরও জানতে ঠিকানার বিবরণ দেখুন।BUILDING_AND_ENTRANCES— আরও বিবরণের জন্য প্রবেশপথ ও বিল্ডিংয়ের আউটলাইন দেখুন।
extra_computationsপ্যারামিটার অন্তর্ভুক্ত করুন, যেমন:extra_computations=ADDRESS_DESCRIPTORS&extra_computations=BUILDING_AND_ENTRANCES
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 key নেই।"INVALID_REQUEST"সাধারণত নিম্নলিখিতগুলির মধ্যে একটি নির্দেশ করে:- কোয়েরি (
address,componentsঅথবাlatlng) নেই। - ভুল
result_typeবাlocation_typeদেওয়া হয়েছে।
- কোয়েরি (
"UNKNOWN_ERROR"-এর অর্থ হল, সার্ভারে সমস্যার কারণে অনুরোধটি প্রসেস করা যায়নি। আপনি আবার চেষ্টা করলে অনুরোধটি সফল হতে পারে।
রিভার্স জিওকোডিং প্লাস কোড
জিওকোডিং উত্তরের মধ্যে plus_code ফিল্ডে একটি প্লাস কোড থাকে যা
কোয়েরি করা অক্ষাংশ এবং দ্রাঘিমাংশের সবচেয়ে কাছাকাছি হয়।
এছাড়াও, বেশিরভাগ ক্ষেত্রে JSON ফলাফল অ্যারেতে plus_code টাইপ সহ সম্পূর্ণ জিওকোডিং
ফলাফল এবং প্লাস কোড সহ ঠিকানা
থাকে। ডিকোড করা প্লাস কোড এবং অনুরোধ করা পয়েন্টের মধ্যে দূরত্ব
১০ মিটারের কম হবে বলে গ্যারান্টি দেওয়া হয়।