এই ডকুমেন্ট Google Cloud BigQuery এবং Google Maps Platform Datasets API-এ লোকেশন ডেটা সহ ম্যাপ ডেটা ভিজ্যুয়ালাইজেশন তৈরি করার জন্য একটি রেফারেন্স আর্কিটেকচার এবং উদাহরণ প্রদান করে, যেমন ওপেন মিউনিসিপ্যাল ডেটা বিশ্লেষণ করা, একটি টেলিকমিউনিকেশন কভারেজ ম্যাপ তৈরি করা, বা মোবাইল ভেহিকল ফ্লিট মুভমেন্টের ট্রেস ভিজ্যুয়ালাইজ করা।
ম্যাপ ডেটা ভিজ্যুয়ালাইজেশন হল ব্যবহারকারীদের যুক্ত করার এবং লোকেশন ডেটাতে স্থানিক ইনসাইট উন্মোচন করার একটি শক্তিশালী টুল। লোকেশন ডেটা হল এমন ডেটা যাতে পয়েন্ট, লাইন বা পলিগন ফিচার থাকে। যেমন, আবহাওয়ার ম্যাপ গ্রাহকদের ট্রিপের পরিকল্পনা করতে এবং ঝড়ের জন্য প্রস্তুতি নিতে সাহায্য করে; বিজনেস ইন্টেলিজেন্স ম্যাপ ব্যবহারকারীদের ডেটা বিশ্লেষণ থেকে ইনসাইট পেতে সাহায্য করে এবং টেলিকমিউনিকেশন ম্যাপ ব্যবহারকারীদের নির্দিষ্ট পরিষেবা এলাকায় তাদের পরিষেবা প্রদানকারীর কভারেজ এবং কোয়ালিটি বুঝতে সাহায্য করে।
তবে, অ্যাপ ডেভেলপারদের পক্ষে বড় ম্যাপ ডেটা ভিজ্যুয়ালাইজেশন তৈরি করা কঠিন যা পারফর্ম্যান্স এবং ব্যবহারকারীর অভিজ্ঞতা উন্নত করে। ক্লায়েন্ট সাইডে মেমরিতে বিশাল ডেটা লোড করতে হয়, যার ফলে প্রথমবার ম্যাপ লোড হতে বেশি সময় লাগে। ভিজ্যুয়ালটি এমন হতে হবে যাতে মেমরি ও GPU-এর সীমাবদ্ধতা আছে এমন কম দামের মোবাইল ফোন সহ সব ডিভাইসে ভালোভাবে কাজ করে। সবশেষে, ডেভেলপারদের এমন একটি বড় ডেটা রেন্ডারিং লাইব্রেরি বেছে নিতে হবে যা পোর্টেবল, নির্ভরযোগ্য এবং বড় ডেটার সাথে পারফর্ম করতে পারে।
রেফারেন্স আর্কিটেকচার
বিশাল ডেটা ভিজ্যুয়ালাইজেশন সহ অ্যাপ ডেভেলপ করার জন্য দুটি প্রধান কম্পোনেন্ট প্রয়োজন।
- গ্রাহক ব্যাকএন্ড - প্রসেসিং ও স্টোরেজের মতো সব ব্যাকএন্ড অ্যাপ ডেটা ও পরিষেবা।
- গ্রাহক ক্লায়েন্ট - ম্যাপ ভিজ্যুয়ালাইজেশন কম্পোনেন্ট সহ আপনার অ্যাপ ইউজার ইন্টারফেস।
নিচে একটি সিস্টেম ডায়াগ্রাম দেওয়া হল যা দেখায় যে কীভাবে এই দুটি কম্পোনেন্ট অ্যাপ, ব্যবহারকারী, Google Cloud এবং Google Maps Platform-এর সাথে ইন্টার্যাক্ট করে একটি বড় ডেটা ভিজ্যুয়ালাইজেশন অ্যাপ তৈরি করে।

ডিজাইন সংক্রান্ত বিবেচনা
Google Cloud এবং Google Maps Platform ব্যবহার করে একটি পারফর্ম্যান্ট ডেটা ভিজ্যুয়ালাইজেশন তৈরি করতে অনুসরণ করার জন্য বেশ কয়েকটি ডিজাইন বিবেচনা রয়েছে।
- সোর্স ডেটার সাইজ ও আপডেট করার ফ্রিকোয়েন্সি।
- geojson ফর্ম্যাটে সোর্স ডেটা <৫এমবি হলে বা খুব ঘন ঘন আপডেট হলে, যেমন লাইভ আবহাওয়ার রাডার পূর্বাভাস, আপনার অ্যাপে ক্লায়েন্ট সাইডে geojson অবজেক্ট হিসেবে ডেটা পরিবেশন করার কথা বিবেচনা করুন এবং deck.gl লেয়ারের মাধ্যমে রেন্ডার করুন।
- আপনার ডেটার সাইজ ৫ এমবির বেশি হলে এবং প্রতি ঘণ্টায় একবারের বেশি আপডেট না হলে, এই ডকুমেন্টে Datasets API আর্কিটেকচার বিবেচনা করুন।
- ডেটাসেটে সর্বাধিক ৩৫০ এমবি সাইজের ফাইল আপলোড করা যায়।
- আপনার ডেটা ৩৫০ এমবির থেকে বেশি হলে, ডেটাসেটে পাস করার আগে সোর্স ফাইলে জিওমেট্রি ডেটা প্রুনিং বা সরল করার কথা বিবেচনা করুন (নিচে ডেটা প্রুনিং দেখুন)।
- স্কিমা ও ফর্ম্যাট
- আপনার ডেটায় প্রতিটি ফিচারের জন্য বিশ্বব্যাপী অনন্য আইডি প্রপার্টি আছে কিনা তা নিশ্চিত করুন। একটি অনন্য আইডি আপনাকে একটি নির্দিষ্ট ফিচার বেছে নিতে এবং স্টাইল করতে বা ভিজ্যুয়ালাইজ করার জন্য একটি ফিচারে ডেটা যোগ করতে দেয়, উদাহরণস্বরূপ "ক্লিক" ব্যবহারকারী ইভেন্টে একটি নির্বাচিত ফিচার স্টাইল করা।
- সঠিক কলামের নাম, ডেটার ধরন ও GeoJSON অবজেক্টের ধরন সহ Datasets API স্পেসিফিকেশন অনুযায়ী আপনার ডেটা CSV বা GeoJSON হিসেবে ফর্ম্যাট করুন।
- BigQuery থেকে সহজে ডেটাসেট তৈরি করতে, আপনার SQL CSV এক্সপোর্টে
wktনামের একটি কলাম তৈরি করুন।wktনামের কলাম থেকে Well-Known Text (WKT) ফর্ম্যাটে CSV থেকে জিওমেট্রি ইমপোর্ট করার সুবিধা ডেটাসেটে রয়েছে। - আপনার ডেটা সঠিক জিওমেট্রি ও ডেটার ধরন কিনা তা চেক করুন। যেমন, GeoJSON-কে অবশ্যই WGS84 কোঅর্ডিনেট সিস্টেম, জ্যামিতি ওয়াইন্ডিং অর্ডার ইত্যাদিতে থাকতে হবে।
- সোর্স ফাইলের সব জিওমেট্রি সঠিক কিনা তা নিশ্চিত করতে geojson-validate-এর মতো টুল ব্যবহার করুন অথবা সোর্স ফাইলকে বিভিন্ন ফর্ম্যাট বা কোঅর্ডিনেট সিস্টেমের মধ্যে ট্রান্সফর্ম করতে ogr2ogr ব্যবহার করুন।
- ডেটা প্রুনিং
- ফিচারের প্রপার্টির সংখ্যা কমান। আপনি অনন্য শনাক্তকারী কীতে (উদাহরণ) রানটাইমে কোনও ফিচারে অতিরিক্ত প্রপার্টি যোগ করতে পারবেন।
- টাইল স্টোরেজ স্পেস কমাতে, যেখানে সম্ভব প্রপার্টি অবজেক্টের জন্য ইন্টিজার ডেটা টাইপ ব্যবহার করুন, যাতে ক্লায়েন্ট অ্যাপে HTTPS-এর মাধ্যমে লোড করার জন্য টাইলগুলি পারফর্ম্যান্ট থাকে।
- খুব জটিল ফিচার জিওমেট্রি সরল এবং/অথবা অ্যাগ্রিগেট করুন; সোর্স ফাইলের সাইজ কমাতে এবং ম্যাপের পারফর্ম্যান্স উন্নত করতে জটিল পলিগন জিওমেট্রিতে ST_Simplify-এর মতো BigQuery ফাংশন ব্যবহার করার কথা বিবেচনা করুন।
- টাইল করা
- Google Maps Datasets API আপনার সোর্স ডেটা ফাইল থেকে ম্যাপ টাইল তৈরি করে যাতে ওয়েব বা মোবাইল Maps SDK-এর সাথে ব্যবহার করা যায়।
- ম্যাপ টাইল হল জুম-ভিত্তিক ইন্ডেক্সিং সিস্টেম যা ভিজ্যুয়াল অ্যাপে ডেটা লোড করার আরও দক্ষ উপায় প্রদান করে।
- ম্যাপ টাইল কম জুম লেভেলে ঘন বা জটিল ফিচার বাদ দিতে পারে। কোনও ব্যবহারকারী রাজ্য বা দেশের (যেমন, z5-z12) ম্যাপ জুম-আউট করলে, শহর বা আশেপাশের এলাকার (যেমন, z13-z18) ম্যাপ জুম-ইন করার থেকে আলাদা দেখতে লাগতে পারে।
উদাহরণ - লন্ডনে রেলওয়ে
এই উদাহরণে, আমরা Google Cloud এবং Google Maps-এর সাহায্যে একটি ওয়েব অ্যাপ্লিকেশন তৈরি করতে রেফারেন্স আর্কিটেকচার প্রয়োগ করব যা ওপেন স্ট্রিট ম্যাপ (OSM) ডেটা থেকে লন্ডনের সমস্ত রেলওয়ে দেখায়।
পূর্বশর্ত
- BigQuery Sandbox ও Cloud Console-এ অ্যাক্সেস
- আপনার Google Cloud প্রোজেক্ট ও বিলিং অ্যাকাউন্ট সেট-আপ করা আছে কিনা তা ভাল করে দেখে নিন।
ধাপ ১ - BigQuery-তে ডেটা কোয়েরি করা
BigQuery পাবলিক
ডেটাসেট-এ নেভিগেট করুন। 'bigquery-public-data' ডেটাসেট
এবং geo_openstreetmap.planet_features টেবিলে
সম্ভাব্য সব ফিচার সহ সমগ্র বিশ্বের Open Street Map
(OSM) ডেটা রয়েছে। OSM
Wiki-তে কোয়েরি করার জন্য উপলভ্য সব ফিচার
খুঁজে দেখুন, যার মধ্যে amenity,
road ও landuse অন্তর্ভুক্ত।
SQL ব্যবহার করে টেবিল কোয়েরি করতে Cloud Shell বা BigQuery Cloud Console ব্যবহার করুন। নিচে দেওয়া কোড স্নিপেট bq query কমান্ড ব্যবহার করে বাউন্ডিং বক্স ও ST_Intersects() ফাংশন ব্যবহার করে শুধু লন্ডনে ফিল্টার করা সব রেলওয়ে কোয়েরি করে।
Cloud Shell থেকে এই কোয়েরি পারফর্ম করতে, নিম্নলিখিত কোড স্নিপেট রান করুন, আপনার এনভায়রনমেন্টের জন্য প্রোজেক্ট আইডি, ডেটাসেট ও টেবিলের নাম আপডেট করুন।
bq query --use_legacy_sql=false \
--destination_table PROJECTID:DATASET.TABLENAME \
--replace \
'SELECT
osm_id,
feature_type,
(SELECT value
FROM unnest(all_tags)
WHERE KEY = "name") AS name,
(SELECT value
FROM unnest(all_tags)
WHERE KEY = "railway") AS railway,
geometry as wkt
FROM bigquery-public-data.geo_openstreetmap.planet_features
WHERE ("railway") IN (SELECT key FROM unnest(all_tags))
AND ST_Intersects(
geometry,
ST_MakePolygon(ST_MakeLine(
[ST_GeogPoint(-0.549370, 51.725346),
ST_GeogPoint(-0.549370, 51.2529407),
ST_GeogPoint(0.3110581, 51.25294),
ST_GeogPoint(0.3110581, 51.725346),
ST_GeogPoint(-0.549370, 51.725346)]
))
)'
কোয়েরি থেকে এই ফলাফল পাওয়া যায়:
- প্রতিটি ফিচার
osm_id-এর জন্য একটি অনন্য শনাক্তকারী feature_typeযেমন, বিন্দু, রেখা ইত্যাদি- ফিচারের
name, যেমনPaddington Station railway-এর ধরন, যেমন, প্রধান, পর্যটন, মিলিটারি ইত্যাদি- ফিচারের
wkt- WKT ফর্ম্যাটে পয়েন্ট, লাইন বা পলিগন জিওমেট্রি। WKT হল স্ট্যান্ডার্ড ডেটা ফর্ম্যাট যা BigQuery জিওগ্রাফি কলাম কোয়েরিতে দেখায়।
মনে রাখবেন - ডেটাসেট তৈরি করার আগে আপনার কোয়েরির ফলাফল ভিজ্যুয়ালি যাচাই করতে, Looker Studio ব্যবহার করে BigQuery থেকে ড্যাশবোর্ডে আপনার ডেটা দ্রুত ভিজ্যুয়ালাইজ করতে পারবেন।
Google Cloud Storage বাকেটে CSV ফাইলে টেবিল এক্সপোর্ট করতে, Cloud Shell-এ bq extract কমান্ড ব্যবহার করুন:
bq extract \
--destination_format "CSV" \
--field_delimiter "," \
--print_header=true \
PROJECTID:DATASET.TABLENAME \
gs://BUCKET/FILENAME.csv
মনে রাখবেন: আপনার ডেটা নিয়মিত আপডেট করতে Cloud Scheduler ব্যবহার করে আপনি প্রতিটি ধাপ অটোমেট করতে পারবেন।
ধাপ ২ - আপনার CSV ফাইল থেকে ডেটাসেট তৈরি করুন
এরপর, Google Cloud Storage (GCS)-এ কোয়েরি আউটপুট থেকে Google Maps Platform ডেটাসেট তৈরি করুন। Datasets API ব্যবহার করে, আপনি একটি ডেটাসেট তৈরি করতে এবং তারপর GCS-এ হোস্ট করা ফাইল থেকে আপনার ডেটাসেটে ডেটা আপলোড করতে পারবেন।
শুরু করতে, আপনার Google Cloud প্রোজেক্টে Maps Datasets API চালু করুন এবং API ডকুমেন্ট পর্যালোচনা করুন। আপনার অ্যাপের ব্যাকএন্ডে লজিক থেকে Datasets API কল করার জন্য Python এবং Node.js ক্লায়েন্ট লাইব্রেরি রয়েছে। এছাড়াও, Cloud Console-এ ম্যানুয়ালি ডেটাসেট তৈরি করার জন্য ডেটাসেট GUI আছে।
আপনার ডেটাসেট আপলোড করা হয়ে গেলে, আপনি ডেটাসেট GUI-তে আপনার ডেটাসেটের প্রিভিউ দেখতে পারবেন।

ধাপ ৪ - ম্যাপ আইডির সাথে আপনার ডেটাসেট যুক্ত করা
আপনার ডেটাসেট তৈরি হয়ে গেলে, আপনি সংশ্লিষ্ট ম্যাপ স্টাইল সহ ম্যাপ ID তৈরি করতে পারবেন। ম্যাপ স্টাইল এডিটরে, আপনি ডেটাসেটের সাথে mapId এবং স্টাইল অ্যাসোসিয়েট করতে পারবেন। এছাড়াও, আপনার ম্যাপের লুক ও ফিল কাস্টমাইজ করতে, এখান থেকে আপনি ক্লাউড-ভিত্তিক ম্যাপ স্টাইলিং প্রয়োগ করতে পারবেন।
ধাপ ৫ - আপনার ক্লায়েন্ট অ্যাপ ম্যাপ ভিজ্যুয়ালাইজেশন তৈরি করুন
অবশেষে, আপনি Maps JS API ব্যবহার করে ক্লায়েন্ট-সাইড ডেটা ভিজ্যুয়ালাইজেশন অ্যাপে ডেটাসেট যোগ করতে পারবেন। আগের ধাপে আপনার ডেটাসেটের সাথে যুক্ত mapID ব্যবহার করে আপনার ম্যাপ অবজেক্ট শুরু করুন। তারপর আপনার ডেটাসেট লেয়ারের স্টাইল ও ইন্টার্যাক্টিভিটি সেট করুন। আরও বিবরণের জন্য ডেটা সেট সহ ডেটা-ড্রিভেন স্টাইলিংয়ের সম্পূর্ণ গাইড দেখুন।
আপনি স্টাইল কাস্টমাইজ করতে পারবেন, ডাইনামিকভাবে স্টাইল পরিবর্তন করার জন্য ইভেন্ট হ্যান্ডলার যোগ করতে পারবেন এবং Maps JS API ব্যবহার করে আরও অনেক কিছু করতে পারবেন। ডকুমেন্ট থেকে উদাহরণ দেখুন। নিচে আমরা "feature_type" অ্যাট্রিবিউটের উপর ভিত্তি করে এই উদাহরণের জন্য পয়েন্ট ও লাইন ফিচার স্টাইল তৈরি করতে setStyle ফাংশন সংজ্ঞায়িত করব।
function setStyle(params) {
const map.getDatasetFeatureLayer("your-dataset-id");
const datasetFeature = params.feature;
const type = datasetFeature.datasetAttributes["feature_type"];
if (type == "lines") {
return {
fillColor: "blue",
strokeColor: "blue",
fillOpacity: 0.5,
strokeWeight: 1,
}
} else if (type == "points") {
return {
fillColor: "black",
strokeColor: "black",
strokeOpacity: 0.5,
pointRadius: 2,
fillOpacity: 0.5,
strokeWeight: 1,
}
}
}
সিঙ্গেল পেজ ওয়েব অ্যাপে উপরের কোডটি ইনিশিয়ালাইজ করা হলে, ম্যাপ ডেটার নিম্নলিখিত ভিজ্যুয়াল পাওয়া যায়:

এখান থেকে, আপনি setStyle() ফাংশনে আপনার ম্যাপ ভিজ্যুয়ালাইজেশন বাড়াতে পারেন
ফিচার ফিল্টার করার জন্য লজিক যোগ করে, ব্যবহারকারীর ইন্টারঅ্যাকশনের উপর ভিত্তি করে স্টাইলিং যোগ করে এবং
আপনার বাকি অ্যাপ্লিকেশনের সাথে ইন্টারঅ্যাক্ট করে।
উপসংহার
এই ডকুমেন্টে, আমরা Google Cloud এবং Google Maps Platform ব্যবহার করে একটি বড় ডেটা ভিজ্যুয়ালাইজেশন অ্যাপ্লিকেশনের একটি রেফারেন্স আর্কিটেকচার এবং উদাহরণ বাস্তবায়ন নিয়ে আলোচনা করেছি। এই রেফারেন্স আর্কিটেকচার ব্যবহার করে, আপনি Google Cloud BigQuery-এর যেকোনও ডেটা থেকে লোকেশন ডেটা ভিজ্যুয়ালাইজেশন অ্যাপ তৈরি করতে পারেন যা Google Maps Datasets API ব্যবহার করে যেকোনও ডিভাইসে পারফর্ম করে।
পরবর্তী অ্যাকশন
আরও পড়ুন:
- Google Maps Platform Datasets API ডকুমেন্টেশন
- ডেটা ড্রাইভ স্টাইলের সাহায্যে রিয়েল টাইমে আপনার ডেটা দেখুন
- BigQuery-তে জিওস্পেশিয়াল অ্যানালিটিক্সের সাথে প্রাথমিক পরিচয়
- জিওস্পেশিয়াল অ্যানালিটিক্সের জন্য BigQuery-তে GeoJSON ব্যবহার করা
অবদানকারী
প্রধান লেখক:
- Ryan Baumann, Google Maps Platform Solutions Engineering Manager