BigQuery এবং Datasets API দিয়ে আপনার ডেটা কল্পনা করুন

Google ক্লাউড প্ল্যাটফর্ম BigQuery এবং Google Maps প্ল্যাটফর্ম ডেটাসেট API- এ অবস্থান ডেটার সাথে মানচিত্র ডেটা ভিজ্যুয়ালাইজেশন তৈরি করার জন্য এই নথিটি একটি রেফারেন্স আর্কিটেকচার এবং উদাহরণ প্রদান করে, যেমন উন্মুক্ত মিউনিসিপ্যাল ​​ডেটা বিশ্লেষণ করা, একটি টেলিকমিউনিকেশন কভারেজ ম্যাপ তৈরি করা, বা মোবাইল গাড়ির বহরের চলাচলের ট্রেসগুলিকে ভিজ্যুয়ালাইজ করা।

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

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

রেফারেন্স আর্কিটেকচার

বৃহৎ ডেটা ভিজ্যুয়ালাইজেশন সহ অ্যাপ্লিকেশনগুলি বিকাশের জন্য দুটি প্রধান উপাদান প্রয়োজন।

  1. গ্রাহক ব্যাকএন্ড - সমস্ত ব্যাকএন্ড অ্যাপ ডেটা এবং পরিষেবা যেমন প্রক্রিয়াকরণ এবং স্টোরেজ।
  2. গ্রাহক ক্লায়েন্ট - ম্যাপ ভিজ্যুয়ালাইজেশন কম্পোনেন্ট সহ আপনার অ্যাপ ইউজার ইন্টারফেস।

একটি বড় ডেটা ভিজ্যুয়ালাইজেশন অ্যাপ তৈরি করতে এই দুটি উপাদান অ্যাপ ব্যবহারকারী, Google ক্লাউড এবং Google মানচিত্র প্ল্যাটফর্মের সাথে কীভাবে ইন্টারঅ্যাক্ট করে তার একটি সিস্টেম ডায়াগ্রাম নীচে দেওয়া হল৷

architecture diagram

⭐ দ্রষ্টব্য: Maps Datasets API হল একটি প্রাক-GA পণ্যপরিষেবার শর্তাবলীতে বিস্তারিত দেখুন।

ডিজাইন বিবেচ্য বিষয়

Google ক্লাউড এবং Google মানচিত্র প্ল্যাটফর্ম ব্যবহার করে একটি পারফরম্যান্ট ডেটা ভিজ্যুয়ালাইজেশন তৈরি করতে অনুসরণ করার জন্য অনেকগুলি ডিজাইনের বিবেচনা রয়েছে৷

  1. উত্স ডেটা আকার এবং আপডেট ফ্রিকোয়েন্সি
    1. যদি জিওজসন ফরম্যাটে সোর্স ডেটা <5 এমবি হয় বা খুব ঘন ঘন আপডেট হয় যেমন একটি লাইভ আবহাওয়া রাডার পূর্বাভাস, আপনার অ্যাপে একটি জিওজসন অবজেক্ট ক্লায়েন্ট সাইড হিসাবে ডেটা পরিবেশন করার কথা বিবেচনা করুন এবং একটি deck.gl স্তর দিয়ে রেন্ডার করুন।
    2. যদি আপনার ডেটা আকারে 5mb-এর বেশি হয় এবং প্রতি ঘন্টায় একবারের চেয়ে দ্রুত আপডেট না হয়, তাহলে এই নথিতে ডেটাসেট API আর্কিটেকচার বিবেচনা করুন৷
      1. ডেটাসেটগুলি 350 এমবি আকারের ফাইলগুলিকে সমর্থন করে৷
      2. যদি আপনার ডেটা 350mb-এর থেকে বড় হয়, তাহলে ডেটাসেটে পাঠানোর আগে উৎস ফাইলে জ্যামিতি ডেটা ছাঁটাই বা সরল করার কথা বিবেচনা করুন (নীচে ডেটা ছাঁটাই দেখুন)।
  2. স্কিমা এবং বিন্যাস
    1. নিশ্চিত করুন যে আপনার ডেটা প্রতিটি বৈশিষ্ট্যের জন্য একটি বিশ্বব্যাপী অনন্য আইডি সম্পত্তি আছে। একটি অনন্য আইডি আপনাকে একটি নির্দিষ্ট বৈশিষ্ট্য নির্বাচন এবং স্টাইল করতে বা কল্পনা করার জন্য একটি বৈশিষ্ট্যে ডেটা যোগ করার অনুমতি দেয়, উদাহরণস্বরূপ "ক্লিক" ব্যবহারকারী ইভেন্টে একটি নির্বাচিত বৈশিষ্ট্য স্টাইল করা।
    2. আপনার ডেটাকে CSV বা GeoJSON হিসাবে ফর্ম্যাট করুন Datasets API স্পেক অনুযায়ী বৈধ কলামের নাম, ডেটার ধরন এবং GeoJSON অবজেক্টের ধরন।
    3. BigQuery থেকে সহজে ডেটাসেট তৈরি করার জন্য, আপনার SQL CSV এক্সপোর্টে wkt নামে একটি কলাম তৈরি করুন। ডেটাসেটগুলি wkt নামে একটি কলাম থেকে সুপরিচিত পাঠ্য (WKT) বিন্যাসে একটি CSV থেকে জ্যামিতি আমদানি সমর্থন করে।
    4. আপনার ডেটা বৈধ জ্যামিতি এবং ডেটা প্রকারগুলি পরীক্ষা করুন৷ উদাহরণস্বরূপ, GeoJSON অবশ্যই WGS84 স্থানাঙ্ক সিস্টেম, জ্যামিতি উইন্ডিং অর্ডার, ইত্যাদিতে থাকতে হবে।
    5. একটি সোর্স ফাইলের সমস্ত জ্যামিতি বৈধ কিনা তা নিশ্চিত করতে geojson-validate- এর মতো একটি টুল ব্যবহার করুন অথবা একটি সোর্স ফাইলকে ফর্ম্যাট বা সমন্বয় সিস্টেমের মধ্যে রূপান্তর করতে ogr2ogr ব্যবহার করুন।
  3. ডেটা ছাঁটাই
    1. বৈশিষ্ট্যের বৈশিষ্ট্যের সংখ্যা কমিয়ে দিন। আপনি একটি অনন্য শনাক্তকারী কী ( উদাহরণ ) এ রানটাইমে একটি বৈশিষ্ট্যে অতিরিক্ত বৈশিষ্ট্য যোগ করতে পারেন।
    2. একটি ক্লায়েন্ট অ্যাপে HTTPS-এর উপর লোড করার জন্য টাইলগুলিকে পারফরম্যান্ট রেখে টাইল স্টোরেজ স্পেস কমিয়ে আনার জন্য যেখানে সম্ভব সম্পত্তি অবজেক্টের জন্য পূর্ণসংখ্যা ডেটা প্রকার ব্যবহার করুন।
    3. খুব জটিল বৈশিষ্ট্য জ্যামিতি সরলীকরণ এবং/অথবা একত্রিত করুন; সোর্স ফাইলের আকার কমাতে এবং মানচিত্রের কর্মক্ষমতা উন্নত করতে জটিল বহুভুজ জ্যামিতিতে ST_Simplify- এর মতো BigQuery ফাংশন ব্যবহার করার কথা বিবেচনা করুন।
  4. টাইলিং
    1. Google Maps Datasets API Maps JS API-এ ব্যবহারের জন্য আপনার উৎস ডেটা ফাইল থেকে মানচিত্র টাইলস তৈরি করে।
    2. মানচিত্র টাইলস হল একটি জুম-ভিত্তিক ইন্ডেক্সিং সিস্টেম যা একটি ভিজ্যুয়াল অ্যাপে ডেটা লোড করার আরও কার্যকর উপায় প্রদান করে।
    3. মানচিত্র টাইলস নিম্ন জুম স্তরে ঘন বা জটিল বৈশিষ্ট্য ড্রপ করতে পারে। যখন একজন ব্যবহারকারী একটি রাজ্য বা দেশে জুম আউট করে (যেমন z5-z12) তখন শহর বা আশেপাশের (যেমন z13-z18) জুম করার চেয়ে আলাদা দেখতে পারে।

উদাহরণ - লন্ডনে রেলওয়ে

এই উদাহরণে, আমরা GCP এবং Google মানচিত্রের সাথে একটি ওয়েব অ্যাপ্লিকেশন তৈরি করতে রেফারেন্স আর্কিটেকচার প্রয়োগ করব যা ওপেন স্ট্রিট ম্যাপ (OSM) ডেটা থেকে লন্ডনের সমস্ত রেলওয়েকে কল্পনা করে৷

পূর্বশর্ত

  1. BigQuery স্যান্ডবক্স এবং ক্লাউড কনসোলে অ্যাক্সেস
  2. আপনার একটি GCP প্রকল্প এবং বিলিং অ্যাকাউন্ট সেটআপ আছে তা নিশ্চিত করুন।

ধাপ 1 - BigQuery-এ ডেটা জিজ্ঞাসা করুন

BigQuery পাবলিক ডেটাসেটে নেভিগেট করুন। ডেটাসেট 'bigquery-public-data' এবং টেবিল geo_openstreetmap.planet_features এ সমস্ত সম্ভাব্য বৈশিষ্ট্য সহ সমগ্র বিশ্বের মূল্যমানের ওপেন স্ট্রিট ম্যাপ (OSM) ডেটা রয়েছে৷ ওএসএম উইকিতে amenity , road এবং landuse সহ অনুসন্ধান করার জন্য উপলব্ধ সমস্ত বৈশিষ্ট্যগুলি আবিষ্কার করুন৷

SQL ব্যবহার করে টেবিলটি জিজ্ঞাসা করতে ক্লাউড শেল বা BigQuery ক্লাউড কনসোল ( https://console.cloud.google.com ) ব্যবহার করুন৷ নীচের কোড স্নিপটি একটি বাউন্ডিং বক্স এবং ST_Intersects() ফাংশন ব্যবহার করে শুধু লন্ডনে ফিল্টার করা সমস্ত রেলওয়েকে জিজ্ঞাসা করতে bq query কমান্ড ব্যবহার করে।

ক্লাউড শেল থেকে এই প্রশ্নটি সম্পাদন করতে, আপনার পরিবেশের জন্য প্রকল্প আইডি, ডেটাসেট এবং টেবিলের নাম আপডেট করে নিম্নলিখিত কোড স্নিপটি চালান।

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)]
    ))
   )' 

প্রশ্নটি ফিরে আসে:

  1. প্রতিটি বৈশিষ্ট্য osm_id এর জন্য একটি অনন্য শনাক্তকারী
  2. feature_type যেমন পয়েন্ট, লাইন ইত্যাদি
  3. বৈশিষ্ট্যের name যেমন Paddington Station
  4. railway ধরন যেমন প্রধান, পর্যটন, সামরিক, ইত্যাদি
  5. বৈশিষ্ট্যটির wkt - WKT বিন্যাসে বিন্দু, রেখা বা বহুভুজ জ্যামিতি। WKT হল স্ট্যান্ডার্ড ডেটা ফরম্যাট BigQuery জিওগ্রাফি কলাম একটি প্রশ্নে ফেরত দেয়।

দ্রষ্টব্য - একটি ডেটাসেট তৈরি করার আগে আপনার প্রশ্নের ফলাফলগুলি দৃশ্যমানভাবে যাচাই করতে, আপনি Looker Studio ব্যবহার করে BigQuery থেকে একটি ড্যাশবোর্ডে আপনার ডেটা দ্রুত ভিজ্যুয়ালাইজ করতে পারেন।

একটি Google ক্লাউড স্টোরেজ বাকেটের একটি CSV ফাইলে টেবিলটি রপ্তানি করতে, ক্লাউড শেল-এ bq extract কমান্ডটি ব্যবহার করুন:

bq extract \
--destination_format "CSV" \
--field_delimiter "," \
--print_header=true \
PROJECTID:DATASET.TABLENAME \
gs://BUCKET/FILENAME.csv

দ্রষ্টব্য: আপনি আপনার ডেটা নিয়মিত আপডেট করতে ক্লাউড শিডিউলার ব্যবহার করে প্রতিটি ধাপ স্বয়ংক্রিয় করতে পারেন।

ধাপ 2 - আপনার CSV ফাইল থেকে একটি ডেটাসেট তৈরি করুন

পরবর্তীতে Google ক্লাউড স্টোরেজ (GCS) এ ক্যোয়ারী আউটপুট থেকে একটি Google মানচিত্র প্ল্যাটফর্ম ডেটাসেট তৈরি করুন। Datasets API ব্যবহার করে, আপনি একটি ডেটাসেট তৈরি করতে পারেন এবং তারপর GCS-এ হোস্ট করা ফাইল থেকে আপনার ডেটাসেটে ডেটা আপলোড করতে পারেন

শুরু করতে, আপনার GCP প্রোজেক্টে Maps Datasets API সক্ষম করুন এবং API ডক্স পর্যালোচনা করুন। আপনার অ্যাপ ব্যাকএন্ডে যুক্তি থেকে ডেটাসেট API কল করার জন্য Python এবং Node.js ক্লায়েন্ট লাইব্রেরি রয়েছে। উপরন্তু, ক্লাউড কনসোলে ম্যানুয়ালি ডেটাসেট তৈরি করার জন্য একটি ডেটাসেট GUI রয়েছে।

আপনার ডেটাসেট আপলোড সম্পূর্ণ হওয়ার পরে, আপনি ডেটাসেট GUI-তে আপনার ডেটাসেটের পূর্বরূপ দেখতে পারেন।

Dataset preview

ধাপ 4 - একটি মানচিত্র আইডির সাথে আপনার ডেটাসেট সংযুক্ত করুন

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

ধাপ 5 - আপনার ক্লায়েন্ট অ্যাপ ম্যাপ ভিজ্যুয়ালাইজেশন তৈরি করুন

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

আপনি মানচিত্র JS API ব্যবহার করে শৈলীটি কাস্টমাইজ করতে, গতিশীলভাবে শৈলী পরিবর্তন করার জন্য ইভেন্ট হ্যান্ডলার যোগ করতে পারেন এবং আরও অনেক কিছু করতে পারেন। ডক্সে উদাহরণ দেখুন। "feature_type" বৈশিষ্ট্যের উপর ভিত্তি করে এই উদাহরণের জন্য পয়েন্ট এবং লাইন বৈশিষ্ট্য শৈলী তৈরি করতে নীচে আমরা একটি সেটস্টাইল ফাংশন সংজ্ঞায়িত করব।

দ্রষ্টব্য - আপনার মানচিত্র JS API বাস্তবায়নের জন্য v=beta চ্যানেল ব্যবহার করা নিশ্চিত করুন।

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,
           }
     }
}

দ্রষ্টব্য - আপনার মানচিত্র অ্যাপে আপনার ডেটাসেটের জন্য সর্বদা অ্যাট্রিবিউশন যোগ করতে ভুলবেন না। OSM অ্যাট্রিবিউশন যোগ করতে, OSM নির্দেশিকা মেনে ডক্সে অ্যাট্রিবিউশন কোডের উদাহরণ অনুসরণ করুন।

উপরের এই কোডটি যখন একটি একক পৃষ্ঠার ওয়েব অ্যাপে আরম্ভ করা হয় তখন নিম্নলিখিত মানচিত্র ডেটা ভিজ্যুয়াল দেয়:

london railway map

এখান থেকে, আপনি ফিল্টার বৈশিষ্ট্যগুলিতে যুক্তি যোগ করে, ব্যবহারকারীর ইন্টারঅ্যাকশনের উপর ভিত্তি করে স্টাইলিং যোগ করে এবং আপনার অ্যাপ্লিকেশনের বাকি অংশের সাথে ইন্টারঅ্যাক্ট করে setStyle() ফাংশনে আপনার ম্যাপ ভিজ্যুয়ালাইজেশন প্রসারিত করতে পারেন।

উপসংহার

এই নিবন্ধে, আমরা Google ক্লাউড এবং Google মানচিত্র প্ল্যাটফর্ম ব্যবহার করে একটি বড় ডেটা ভিজ্যুয়ালাইজেশন অ্যাপ্লিকেশনের একটি রেফারেন্স আর্কিটেকচার এবং উদাহরণ বাস্তবায়ন নিয়ে আলোচনা করেছি। এই রেফারেন্স আর্কিটেকচার ব্যবহার করে, আপনি GCP BigQuery-এর যেকোন ডেটা থেকে লোকেশন ডেটা ভিজ্যুয়ালাইজেশন অ্যাপ তৈরি করতে পারেন যা Google Maps Datasets API ব্যবহার করে যেকোনো ডিভাইসে পারফরম্যান্স করে।

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

আরও পড়া:

অবদানকারী

প্রধান লেখক: