রিয়েল-টাইম ডেটা-ড্রিভেন স্টাইলিং

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

পোস্টাল কোড অনুযায়ী NYC-তে ট্যাক্সির সংখ্যা
পোস্টাল কোড অনুযায়ী নিউ ইয়র্ক সিটিতে অ্যানিমেটেড ট্যাক্সির সংখ্যা (সিমুলেটেড, টাইম-ল্যাপ্সড):
পিন কোড অনুযায়ী NYC-তে ট্যাক্সির সংখ্যা (টাইম-ল্যাপ্স) ম্যাপ লিজেন্ড

ডেটা-ড্রিভেন স্টাইলিং হল Google Maps Platform-এর একটি ক্ষমতা যা আপনাকে Google-এর প্রশাসনিক সীমানা বহুভুজ ব্যবহার করতে, আপনার ম্যাপে দেখানোর জন্য সেই বহুভুজগুলিতে স্টাইলিং প্রয়োগ করতে এবং আপনার নিজস্ব ডেটা একত্রিত করে সমৃদ্ধ, কাস্টমাইজ করা ম্যাপ তৈরি করতে দেয় যা ভিজ্যুয়াল বিশ্লেষণ এবং আপনার ডেটার উন্নত বোঝার জন্য ব্যবহার করা যেতে পারে। এই ডকুমেন্টে কিছু ব্যবহারের কেস নিয়ে আলোচনা করা হবে যা ব্যাখ্যা করে যে কেন এবং কীভাবে আপনি ডাইনামিক ডেটা ফিড ইন্টিগ্রেট করে প্রায় রিয়েল-টাইমে ম্যাপে ডেটা-ড্রিভেন স্টাইলিংয়ের মাধ্যমে আপনার ডেটা ভিজ্যুয়ালাইজ করতে পারবেন।

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

ডেটা-ড্রিভেন স্টাইলিংয়ে ডাইনামিক ডেটা আপডেট দেখানো ম্যাপের ক্ষেত্রে প্রযোজ্য হতে পারে এমন কিছু ব্যবহারের উদাহরণ এখানে দেওয়া হল:

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

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

সমাধানের জন্য আর্কিটেকচারাল অ্যাপ্রোচ

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

আর্কিটেকচার
এখানে এই পদ্ধতির একটি অ্যাপ্লিকেশন আর্কিটেকচার ডায়াগ্রাম দেওয়া হল:
অ্যাপ্লিকেশন আর্কিটেকচার

ডায়নামিক ডেটা-ড্রিভেন স্টাইলিং সমাধান

এখন, আপনার ডেটাসেটের জন্য ডায়নামিক ডেটা-ড্রিভেন স্টাইলিং কোরোপ্লেথ ম্যাপ প্রয়োগ করার জন্য প্রয়োজনীয় ধাপগুলি দেখে নেওয়া যাক।

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

ধাপ ১: ভিজ্যুয়ালাইজ করার জন্য ডেটা বেছে নিন এবং বাউন্ডারি প্লেস আইডিতে যোগ দিন

প্রথম ধাপ হল, আপনি যে ডেটা দেখাতে চান তা শনাক্ত করা এবং এটি Google-এর সীমানার সাথে ম্যাচ করছে কিনা তা নিশ্চিত করা। প্রতিটি postalCode-এর জন্য findPlaceFromQuery কলব্যাক পদ্ধতি কল করে আপনি এই ম্যাচিং ক্লায়েন্ট-সাইড পারফর্ম করতে পারবেন। মনে রাখবেন, মার্কিন যুক্তরাষ্ট্রে পোস্টাল কোডের আলাদা নাম আছে, কিন্তু অন্যান্য প্রশাসনিক স্তরে তা নেই। যেসব ক্ষেত্রে অস্পষ্ট ফলাফল আসতে পারে, সেখানে আপনার কোয়েরির জন্য সঠিক Place ID বেছে নিয়েছেন কিনা তা নিশ্চিত করতে হবে।


const request = {
    query: postalCode,
    fields: ['place_id'],
};
 
function findPlaceId() {
   placesService.findPlaceFromQuery(request, function (results, status) {
      if (status === google.maps.places.PlacesServiceStatus.OK) {
         console.log(results[0]);
      }
   });
}

আপনার ডেটাতে অক্ষাংশ ও দ্রাঘিমাংশের মান থাকলে, আপনি যে ফিচার লেয়ার স্টাইল করতে চান তার জন্য সেই অক্ষাংশ/দ্রাঘিমাংশের মানকে স্থান আইডি মানে সমাধান করতে কম্পোনেন্ট ফিল্টারিং সহ Geocoding API ব্যবহার করতে পারেন। এই উদাহরণে আপনি POSTAL_CODE ফিচার লেয়ার স্টাইল করবেন।

ধাপ ২: রিয়েল-টাইম ডেটার সাথে কানেক্ট করুন

ডেটা সোর্সের সাথে কানেক্ট করার বিভিন্ন উপায় আছে এবং আপনার নির্দিষ্ট প্রয়োজন ও প্রযুক্তিগত পরিকাঠামোর উপর নির্ভর করে সবচেয়ে ভালো প্রয়োগ করা হবে। এই ক্ষেত্রে, ধরে নেওয়া যাক যে আপনার ডেটা দুটি কলাম সহ BigQuery টেবিলে আছে: “zip_code” এবং “taxi_count” এবং আপনি Firebase Cloud Function-এর মাধ্যমে এটি কোয়েরি করবেন।

async function queryNycTaxis() {
   // Queries the NYC Taxis dataset.

   // Create a client
   const bigqueryClient = new BigQuery();
  
   // The SQL query to run
   const sqlQuery = 'SELECT zip_code, taxi_count
      FROM \'YOUR_DATASET_ID.TABLE\' LIMIT 100';
      
   const options = {
      query: sqlQuery,
      // Location must match that of the dataset(s)
      // referenced in the query.
      location: 'US',
   };
  
   // Run the query
   const [rows] = await bigqueryClient.query(options);
  
   rows.forEach(row => {
      const postalCode = row['zip_code'];
      const taxiCount = row['taxi_count'];
   });
}

এরপর, আপনি ডেটা আপ-টু-ডেট রাখতে চাইবেন। এটি করার একটি উপায় হল, ওয়েব ওয়ার্কার ব্যবহার করে উপরের কোয়েরি কল করা এবং setInterval ফাংশন ব্যবহার করে আপনার ডেটা রিফ্রেশ করার জন্য টাইমার সেট করা। আপনি উপযুক্ত ভ্যালুতে ইন্টারভাল সেট করতে পারেন, যেমন প্রতি ১৫ সেকেন্ডে ম্যাপ রিফ্রেশ করা। প্রতিবার ইন্টারভ্যাল সময় পেরিয়ে গেলে, ওয়েব ওয়ার্কার প্রতিটি postalCode-এর জন্য আপডেট করা taxiCount ভ্যালুর অনুরোধ করবে।

এখন আমরা ডেটা কোয়েরি ও রিফ্রেশ করতে পারি, তাই আসুন নিশ্চিত করি যে ম্যাপ পলিগনের চেহারা যেন এইসব পরিবর্তন প্রতিফলিত করে।

ধাপ ৩: ডেটা-ড্রিভেন স্টাইলিংয়ের মাধ্যমে আপনার ম্যাপ স্টাইল করুন

এখন আপনার কাছে JSON অবজেক্ট হিসেবে Maps JavaScript ইনস্ট্যান্সে পোস্টাল কোড সীমানায় ভিজ্যুয়াল স্টাইল তৈরি ও প্রয়োগ করার জন্য প্রয়োজনীয় ডায়নামিক ডেটা ভ্যালু আছে, এবার এটিকে কোরোপ্লেথ ম্যাপ হিসেবে স্টাইল দেওয়ার সময় এসেছে।

এই উদাহরণে, আপনি প্রতিটি পোস্টাল কোডে ট্যাক্সির সংখ্যার উপর ভিত্তি করে ম্যাপ স্টাইল করবেন, যা আপনার ব্যবহারকারীদের তাদের এলাকায় ট্যাক্সির ঘনত্ব এবং উপলভ্যতা সম্পর্কে ধারণা দেবে। ট্যাক্সি কাউন্ট ভ্যালুর উপর নির্ভর করে স্টাইল পরিবর্তিত হবে। যেসব এলাকায় সবচেয়ে কম ট্যাক্সি আছে সেখানে বেগুনি রঙের স্টাইলিং প্রয়োগ করা হবে এবং রঙের সমাহার লাল, কমলা হয়ে সবচেয়ে বেশি ট্যাক্সি থাকা এলাকার জন্য NYC ট্যাক্সি হলুদ রঙে শেষ হবে। এই রঙের স্কিমের জন্য আপনি fillColor এবং strokeColor-এ এইসব রঙের ভ্যালু প্রয়োগ করবেন। fillOpacity-কে ০.৫-এ সেট করলে আপনার ব্যবহারকারীরা অন্তর্নিহিত ম্যাপ দেখতে পাবেন এবং strokeOpacity-কে ১.০-এ সেট করলে তারা একই রঙের বহুভুজের সীমানার মধ্যে পার্থক্য করতে পারবেন:


const featureLayer = map.getFeatureLayer(
   google.maps.FeatureType.POSTAL_CODE
);
featureLayer.style = (featureStyleFunctionOptions) => {
   const placeFeature = featureStyleFunctionOptions.feature;
   // taxiCount per (postal_code) PlaceID 
   const taxiCount = zips[placeFeature.placeId];
   let fillColor;
   let strokeColor;
// Apply colors to features based on taxiCount values
if (taxiCount < 8) {
   fillColor = "#571845";  
   strokeColor = "#571845"; 
} else if (taxiCount < 13) {
   fillColor = "#900c3e";
   strokeColor = "#900c3e";
} else if (taxiCount < 21) {
   fillColor = "#c60039"; 
   strokeColor = "#c60039"; 
} else if (taxiCount < 34) {
   fillColor = "#fe5733";
   strokeColor = "#fe5733";
// keep else if or the whole map gets this style with else
} else if (taxiCount >= 34) { 
   fillColor = "#fec30f";
   strokeColor = "#fec30f";
}  
return {
   fillColor,
   strokeColor,
   fillOpacity: 0.5,
   strokeOpacity: 1.0,
};
 

উপসংহার

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

পরবর্তী অ্যাকশন

অবদানকারী

প্রধান লেখক:

জিম লেফলার | Google Maps Platform সলিউশন ইঞ্জিনিয়ার