3D Maps-এ অল্টিটিউড মোড ও ফিচার

আপনি যখন 3D ম্যাপে ফিচারের জন্য উচ্চতা নির্দিষ্ট করেন – যেমন লাইন, পলিগন, মডেল বা মার্কার – তখন বেশ কিছু ফ্যাক্টর আছে যা তাদের প্লেসমেন্টকে প্রভাবিত করতে পারে, দৃশ্য এবং দৃশ্যের রেন্ডারিং কীভাবে সেই ফিচারের সাথে ইন্টার‍্যাক্ট করে, উভয় ক্ষেত্রেই। এই ডকুমেন্টে 3D ম্যাপে 'AltitudeMode' ব্যবহার এবং ফিচারের জন্য কীভাবে অল্টিটিউড ম্যানেজ করতে হয় তা কভার করা হয়েছে।

এখানে আপনি বিভিন্ন ধরনের ফিচারের সাথে AltitudeMode কীভাবে ব্যবহার করতে পারবেন তা দেওয়া হল:

  • মার্কার: Marker3DElement, Marker3DInteractiveElement

    লোকেশন ও এক্সট্রুশনে উচ্চতা নির্দিষ্ট করুন।

  • মডেল: Model3DElement, Model3DInteractiveElement

    মডেলের অ্যাঙ্কর পয়েন্টে উচ্চতা উল্লেখ করুন, যা দৃশ্যে সঠিক পজিশনিংয়ের জন্য এর ওরিয়েন্টেশনের সাথে ব্যবহার করা উচিত।

  • পলিলাইন: Polyline3DElement, Polyline3DInteractiveElement

    পলিলাইন বরাবর পজিশন পয়েন্টে কীভাবে উচ্চতা প্রয়োগ করা হয় তা নির্দিষ্ট করুন।

  • পলিগন: Polygon3DElement, Polygon3DInteractiveElement

    পলিগন বরাবর পজিশন পয়েন্টে কীভাবে উচ্চতা প্রয়োগ করা হয় তা নির্দিষ্ট করুন।

3D এনভায়রনমেন্টে অল্টিটিউড কীভাবে ব্যবহার করা হয়

3D দৃশ্যের মধ্যে পয়েন্ট প্লেস করার সময়, ক্যাপচার করা 3D বিল্ডিং বা গাছের মতো অবজেক্টের উপস্থিতির দ্বারা সেগুলির চূড়ান্ত পজিশন প্রভাবিত হয়। দুটি মূল ধারণা বোঝা খুবই গুরুত্বপূর্ণ:

  • ডিজিটাল টেরেন মডেল (DTM): এটি "বেয়ার আর্থ" উচ্চতা দেখায়। এটি হল কোনও বিল্ডিং, গাছ বা অন্যান্য স্ট্রাকচার ছাড়া জমির স্বাভাবিক আকৃতি। সব এলাকা DTM-এর মাধ্যমে নির্ধারিত হয়, যা পৃথিবীর উচ্চতার ভিত্তি তৈরি করে (EGM96 ব্যবহার করে হিসেব করা হয়)।
  • ডিজিটাল সারফেস মডেল (DSM): এটি বিল্ডিং, গাছপালা ও অন্যান্য স্ট্রাকচার সহ "টপ সারফেস" উচ্চতা দেখায়। যেসব এলাকায় ফিচার ক্যাপচার করা হয়েছে (বিশেষ করে শহুরে পরিবেশে যেখানে বিল্ডিং বেশি দেখা যায়), সেখানে দৃশ্যমান সারফেস বেস টেরেনের চেয়ে উঁচু দেখাবে।

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

একটি 3D ম্যাপ যা ডিজিটাল টেরেন মডেল (DTM) এবং ডিজিটাল সারফেস মডেল (DSM)-এর মধ্যে পার্থক্য দেখাচ্ছে।

ফিচারে অল্টিটিউড ডেটা না থাকলে

আপনার কাছে এমন ডেটা থাকলে যাতে উচ্চতা পরিমাপের তথ্য নেই অথবা অন্য কোনও Google পরিষেবা, যেমন রুট বা স্থান পরিষেবা থেকে ডেটা ব্যবহার করার সময়, আপনি প্রায়শই রিটার্ন করা জ্যামিতিতে কোনও উচ্চতা সরবরাহ পাবেন না। এই ধরনের ক্ষেত্রে, দৃশ্যে ফিচারটি যোগ করার জন্য আপনাকে একটি AltitudeMode সাবধানে বেছে নিতে হবে:

  • গ্রাউন্ডে ক্ল্যাম্প করা: সবচেয়ে সহজ পদ্ধতি, যেখানে ফিচারটি অটোমেটিক ভূখণ্ডের সাথে মানিয়ে নেবে। এই মোড DTM মডেল ব্যবহার করে।
  • এটিকে একটি ইচ্ছামতো উচ্চতা + আপেক্ষিক মোড দিন: আপনি একটি বেছে নেওয়া উচ্চতা অ্যাসাইন করতে পারেন এবং তারপরে RELATIVE_TO_GROUND (যা DTM মডেলের আপেক্ষিক ফিচারগুলি রাখে) বা RELATIVE_TO_MESH (যা DSM মডেলের উপরে সেগুলিকে ভাসিয়ে রাখে) ব্যবহার করতে পারেন।
  • উচ্চতা পেতে অন্য পরিষেবা ব্যবহার করুন: ফিচারের লোকেশনে সুনির্দিষ্ট DTM উচ্চতার জন্য, আপনি Google Maps Platform Elevation API-এর মতো পরিষেবা ব্যবহার করতে পারেন। এটি লাইন বা বহুভুজ হলে, লাইন বা বহুভুজ তৈরি করে এমন প্রতিটি পয়েন্টের জন্য আপনাকে এটি করতে হবে।

AltitudeMode বিকল্পের অর্থ কী এবং কখন সেগুলি ব্যবহার করতে হবে?

কোনও ফিচার সংজ্ঞায়িত করার সময় আপনি চারটি AltitudeMode বিকল্প নির্দিষ্ট করতে পারবেন:

চূড়ান্ত

কল্পনা করুন যে একটি বিমান সমুদ্রপৃষ্ঠ থেকে নির্দিষ্ট উচ্চতায় উড়ছে, ধরুন ১০,০০০ ফুট। এটি পাহাড় বা উপত্যকার উপর দিয়ে উড়লেও এর উচ্চতা নির্দিষ্ট থাকে।

এটি কীভাবে ব্যবহার করবেন: সমুদ্রের গড় উচ্চতার (EGM96 ব্যবহার করে গণনা করা হয়) সাপেক্ষে অবজেক্টের উচ্চতা প্রকাশ করা হয়। ফিচারের উচ্চতার স্থানাঙ্ককে সমুদ্রপৃষ্ঠের গড় উচ্চতার উপরে একটি সুনির্দিষ্ট উচ্চতা হিসাবে ব্যাখ্যা করা হয়।

কখন এটি ব্যবহার করবেন: পরিচিত, সুনির্দিষ্ট উচ্চতা সহ ফিচারের জন্য, যেমন ফ্লাইট পাথ, সঠিক গভীরতা সহ নিমজ্জিত বস্তু বা নির্দিষ্ট-বিন্দু বৈজ্ঞানিক যন্ত্র।

CLAMP_TO_GROUND

পাহাড়ের ঢালে সরাসরি পিকনিক ব্ল্যাঙ্কেট রাখার কথা ভাবুন। পাহাড়টি যতই খাড়া বা সমতল হোক না কেন, কম্বলটি সর্বদা দৃশ্যমান পৃষ্ঠে সমতল থাকে।

এটি কীভাবে ব্যবহার করবেন: অবজেক্টের উচ্চতা সরাসরি গ্রাউন্ডে প্লেস করা হিসেবে প্রকাশ করা হয়। উচ্চতার মান যাই হোক না কেন, এগুলি ভূখণ্ডের সাথে সামঞ্জস্য রেখে গ্রাউন্ড লেভেলে থাকবে। ফিচারের অল্টিটিউড কোঅর্ডিনেট উপেক্ষা করা হয়েছে; এটি সরাসরি ভূখণ্ডের উপরিভাগে (DTM) প্রজেক্ট করা হয়েছে।

এটি কখন ব্যবহার করবেন: রাস্তা, বেড়া, ট্রেল, সম্পত্তির সীমানা বা বিল্ডিংয়ের বেসের মতো ফিচারের ক্ষেত্রে যা সবসময় ভূখণ্ডের সাথে মানানসই হওয়া উচিত।

RELATIVE_TO_GROUND

এমন একটি হট এয়ার বেলুনের কথা ভাবুন যা মাটির প্রাকৃতিক উচ্চতা (DTM) যাই হোক না কেন, তার থেকে ১০০ মিটার উপরে থাকে। মাটি উঁচু হলে, বেলুনও তার সাথে উপরে উঠে যায়, "খালি মাটি" থেকে ১০০ মিটার দূরত্ব বজায় রাখে।

এটি কীভাবে ব্যবহার করবেন: অবজেক্টের উচ্চতা গ্রাউন্ড সারফেসের (DTM) সাপেক্ষে প্রকাশ করা হয়। ফিচারের অল্টিটিউড কোঅর্ডিনেটকে অনুভূমিক অবস্থানে ভূখণ্ডের উচ্চতা থেকে অফসেট হিসেবে ব্যাখ্যা করা হয়।

কখন এটি ব্যবহার করবেন: যেসব অবজেক্টের ক্ষেত্রে প্রাকৃতিক ভূখণ্ডের উপরে একটি সামঞ্জস্যপূর্ণ উচ্চতা বজায় রাখতে হবে, যেমন গ্রামীণ এলাকায় কমিউনিকেশন টাওয়ার বা ওভারহেড লাইন।

RELATIVE_TO_MESH

এটি হল একটি ড্রোন যা একটি নির্দিষ্ট উচ্চতায় উপরে উড়ছে, সেটি খালি মাটি, বিল্ডিংয়ের ছাদ বা গাছের উপরে যাই হোক না কেন। এটি সবচেয়ে বেশি দৃশ্যমান সারফেস (DSM) অনুযায়ী অ্যাডজাস্ট করে।

এটি কীভাবে ব্যবহার করবেন: অবজেক্টের উচ্চতা মাটি+বিল্ডিং+জলের উপরিভাগের (DSM) সর্বোচ্চ উচ্চতার সাপেক্ষে প্রকাশ করা হয়। ফিচারের উচ্চতার কোঅর্ডিনেটকে DSM এলিভেশন থেকে অফসেট হিসেবে ব্যাখ্যা করা হয়।

এটি কখন ব্যবহার করবেন: যেসব অবজেক্টকে ফিজিক্যালি উপস্থিত (DTM, বিল্ডিং, জল) কোনও কিছুর উপরে নির্দিষ্ট উচ্চতায় ফ্লোট করতে হয়, ছাদের উপরে মার্কার বা দৃশ্যমান দৃশ্যের সাথে ডায়নামিকভাবে অ্যাডজাস্ট করা ফিচারের জন্য এটি উপযোগী।

আরও তথ্যের জন্য, AltitudeMode কনস্ট্যান্ট-এর ডকুমেন্টেশন দেখুন।

ভিজ্যুয়াল উদাহরণ ও ব্যবহারিক প্রয়োগ

এই উদাহরণগুলি একটি নির্দিষ্ট লোকেশন, স্টোনহেঞ্জ ব্যবহার করে, যাতে দেখানো যায় যে কীভাবে বিভিন্ন AltitudeMode বিকল্প ফিচার প্লেসমেন্টকে প্রভাবিত করে। এই উদাহরণগুলি প্রথমে পজিশনিং মার্কার, তারপর লাইন এবং এলাকা কভার করে, যার কয়েকটি ভিন্ন বিবেচনা রয়েছে।

পজিশন মার্কার

নিচে দেখানো পিন মার্কারটি দেখুন:

const markerLocation = { lat: 51.1789, lng: -1.8262, altitude: 102.23 };

নিচের দৃশ্যে আপনি এটি সাদা পিন হিসেবে দেখতে পাবেন:

সাদা পিন মার্কার সহ 3D ম্যাপের দৃশ্য, যা মার্কারের ডিফল্ট প্লেসমেন্টকে ব্যাখ্যা করে।

এখন নিচের ছবিটি দেখুন যেখানে বিভিন্ন উচ্চতা মোড ব্যবহার করে বিভিন্ন রঙের পিন দেখানো হয়েছে।

একটি 3D ম্যাপের দৃশ্য যেখানে একাধিক পিন (সাদা, বেগুনি, কমলা, নীল) বিভিন্ন উচ্চতা মোড ব্যবহার করে অবস্থান করছে, সবগুলি স্টোনহেঞ্জের চারপাশে কেন্দ্র করে।

আসুন দেখে নেওয়া যাক কীভাবে বিভিন্ন AltitudeModeউচ্চতার ঊর্ধ্বক্রম অনুসারে মার্কারের পজিশনকে প্রভাবিত করে।

CLAMP_TO_GROUND (বেগুনি পিন)

এই পিন উচ্চতার মান উপেক্ষা করে এবং নিকটতম গ্রাউন্ড এলিভেশনের সাথে নিজেকে সংযুক্ত করে। আপনি এটি সাদা পিনের ঠিক নিচে দেখতে পাবেন, যা কার্যকরভাবে ভূখণ্ডের সাথে "ক্ল্যাম্প" করা আছে।

টেকনিক্যালি, এই মোড আসল উচ্চতা উপেক্ষা করে এবং পিনকে নিকটতম DTM উচ্চতায় ক্ল্যাম্প করে।

ABSOLUTE (সাদা পিন)

এই পিনটি সমুদ্রপৃষ্ঠ থেকে (EGM96) সেই উচ্চতায় মার্কারটি স্থাপন করতে সঠিক উচ্চতার মান (১০২.২৩ মিটার) ব্যবহার করে, যা স্টোনহেঞ্জের একটি পাথরের উপরে প্রদর্শিত হয়, যেমনটি এর সরবরাহ করা উচ্চতা দ্বারা নির্দিষ্ট করা হয়েছে।

টেকনিক্যালি, এই মোড সমুদ্রপৃষ্ঠ থেকে নির্দিষ্ট উচ্চতায় পিন বসানোর জন্য প্রকৃত সরবরাহ করা উচ্চতার মান ব্যবহার করে, যা এই উদাহরণে স্টোনহেঞ্জের লোকেশন, তবে একটি পাথরের উপরে।

RELATIVE_TO_GROUND (কমলা পিন)

এই পিনটি গ্রাউন্ড (DTM) বেস হিসেবে নেয় এবং গ্রাউন্ড লেভেলের ১০২.২৩ মিটার উপরে নিজেকে প্লেস করে, যা হেঞ্জের পাথরের নিচে থাকা প্রাকৃতিক গ্রাউন্ডের উপরে ভাসছে বলে মনে হয়।

টেকনিক্যালি, এই মোডটি গ্রাউন্ডে প্রকৃত DTM-এর লেভেলে তার বেস সেট করে এবং তারপরে তার উপরে ১০২.২৩ মিটারে পিনটি রাখে।

RELATIVE_TO_MESH (নীল পিন)

এই পিনটি দৃশ্যমান সারফেস (DSM) বেস হিসেবে ব্যবহার করে এবং নিজেকে সেই সারফেসের ১০২.২৩ মিটার উপরে প্লেস করে। এই মোডটি তার পরিমাপে পাথরের উচ্চতা অন্তর্ভুক্ত করে, এটি কমলা পিনের চেয়ে কিছুটা উঁচুতে সারিবদ্ধ করে।

টেকনিক্যালি, এই মোডটি বেস হিসাবে মেশ (DSM) ব্যবহার করে এবং তার উপরে প্রদত্ত উচ্চতায় লোকেশনটি রাখে। যেহেতু DSM খাড়া পাথরের একেবারে উপরে থাকে, তাই এই পিনটি তার আপেক্ষিক উচ্চতা নির্ধারণ করার সময় তার পরিমাপে এই অতিরিক্ত উচ্চতা অন্তর্ভুক্ত করে, এটিকে RELATIVE_TO_GROUND পিনের চেয়ে কিছুটা উঁচুতে সারিবদ্ধ করে।

লাইন ও এলাকার অবস্থান

লাইন ও এলাকার ক্ষেত্রে, ফিচারের মধ্যে থাকা পয়েন্টের উচ্চতা (নির্দিষ্ট করা হোক বা না হোক) এবং ব্যবহৃত AltitudeMode, দুটিই গুরুত্বপূর্ণ। আসুন, আমরা Stonehenge-এর সাথে একটি লাইন পরীক্ষা করি, যার উচ্চতা নিম্নলিখিতভাবে নির্দিষ্ট করা আছে:

const lineCoords = [
   { lat: 51.1786, lng : -1.8266, altitude: 101.36 },
   { lat: 51.1787, lng : -1.8264, altitude: 101.18 },
   { lat: 51.178778, lng : -1.826354, altitude: 104.89 },
   { lat: 51.178815, lng : -1.826275, altitude: 107.55 },
   { lat: 51.178923, lng : -1.825980, altitude: 105.53 },
   { lat: 51.1791, lng : -1.8258, altitude: 100.29 },
   { lat: 51.1792, lng : -1.8257, altitude: 100.29 }
];

আপনি এই লাইনটি নিচের ছবিতে সাদা রঙে দেখতে পাবেন, যা অ্যাবসোলিউট পজিশনিং ব্যবহার করে দেখানো হয়েছে।

একটি 3D ম্যাপে অ্যাবসোলিউট পজিশনিং ব্যবহার করে স্টোনহেঞ্জের চারপাশে একটি সাদা লাইন দেখানো হয়েছে।

আবার, নিচের ছবিতে বিভিন্ন উচ্চতা মোড ব্যবহার করে লাইন দেখানো হয়েছে। আসুন, আমরা প্রতিটি বিষয় নিয়ে আলোচনা করি, সবচেয়ে কম থেকে সবচেয়ে বেশি।

একটি 3D ম্যাপে স্টোনহেঞ্জের চারপাশে বিভিন্ন উচ্চতা মোড ব্যবহার করে একাধিক রঙিন লাইন (বেগুনি, সাদা, কমলা, নীল) দেখানো হয়েছে।

CLAMP_TO_GROUND (বেগুনি লাইন)

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

টেকনিক্যালি, এই মোড প্রকৃত উচ্চতার মান উপেক্ষা করে এবং DTM-এর উপর লাইনটি ড্র্যাপ করে, অন্তর্নিহিত ভূখণ্ড অনুসরণ করে এবং এর উপরে থাকা ফিচারের মেশ উপেক্ষা করে।

ABSOLUTE (সাদা লাইন)

এই লাইনটি প্রতিটি পয়েন্টের জন্য সঠিক উচ্চতা ব্যবহার করে, যার ফলে লাইনটি কিছু পাথরের উপর দিয়ে যায়। এটি প্রতিটি পয়েন্টের মধ্যে সরলরেখা দ্বারা কানেক্ট করা থাকে, যা কখনও কখনও অবজেক্টের মধ্যে দিয়ে পাস করার মতো দেখাতে পারে, যদি পয়েন্টগুলি যথেষ্ট ঘন ঘন না হয়।

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

RELATIVE_TO_GROUND (কমলা লাইন)

এই লাইনটি তার ভিত্তি হিসাবে প্রাকৃতিক গ্রাউন্ড (DTM) ব্যবহার করে এবং প্রতিটি পয়েন্টকে সেই গ্রাউন্ড লেভেলের উপরে নির্দিষ্ট উচ্চতায় রাখে।

টেকনিক্যালি, এই মোড DTM-কে বেস হিসেবে ব্যবহার করে এবং এর সাথে সম্পর্কিত তালিকাভুক্ত উচ্চতায় লাইন লোকেশনগুলি প্লেস করে।

RELATIVE_TO_MESH (নীল লাইন)

এই লাইনটি দৃশ্যমান সারফেস ব্যবহার করে, যার মধ্যে বিল্ডিং এবং পাথর অন্তর্ভুক্ত, এর ভিত্তি হিসাবে। তারপরে এটি প্রতিটি পয়েন্টকে সেই মেশের উপরে নির্দিষ্ট উচ্চতায় প্লেস করে, যা দৃশ্যমান ল্যান্ডস্কেপের সাথে সম্পর্কিত লাইনের আকারকে কার্যকরভাবে রেপ্লিকেট করে।

টেকনিক্যালি, এই মোডটি বেস হিসাবে মেশ (DSM) ব্যবহার করে এবং তার উপরে নির্দিষ্ট উচ্চতায় লোকেশনগুলি রাখে, মেশের উপর নির্ভর করে মাটির বিভিন্ন বৈশিষ্ট্যের কারণে লাইনটি পরিবর্তিত হতে পারে।

লাইনের জন্য উচ্চতা নির্দিষ্ট করা না থাকলে

এখন, আসুন একই লাইন কোঅর্ডিনেট বিবেচনা করি কিন্তু কোনও উচ্চতা ছাড়াই নির্দিষ্ট করা আছে:

const lineCoords = [
   { lat: 51.1786, lng : -1.8266 },
   { lat: 51.1787, lng : -1.8264 },
   { lat: 51.178778, lng : -1.826354 },
   { lat: 51.178815, lng : -1.826275 },
   { lat: 51.178923, lng : -1.825980 },
   { lat: 51.1791, lng : -1.8258 },
   { lat: 51.1792, lng : -1.8257 }
];

এই পরিস্থিতিতে, যেখানে কোনও উচ্চতা প্রদান করা হয় না, লাইনগুলি প্রায়শই একই লোকেশনে দেখা যায়। সাদা, কমলা ও বেগুনি রঙের লাইনগুলি একটি লাইনে (কমলা, কারণ এটি সাধারণত শেষে আঁকা হয়) মার্জ হয়ে যেতে পারে কারণ সেগুলি ডিফল্ট হিসেবে একই গ্রাউন্ড-লেভেল পজিশনে থাকে। আপনি এটি নিচে দেখতে পাবেন:

স্টোনহেঞ্জের চারপাশে একাধিক রঙিন লাইন (কমলা, নীল) দেখানো একটি 3D ম্যাপ, যেখানে উচ্চতা সংক্রান্ত ডেটার অভাবের কারণে সাদা এবং বেগুনি লাইনগুলি মিশে গেছে।

নীল লাইন (RELATIVE_TO_MESH) আবার মেশ (DSM) বেস হিসেবে ব্যবহার করে। যেহেতু কোনও উচ্চতা নির্দিষ্ট করা নেই, তাই এটি সরাসরি মেশের উপরে পয়েন্টগুলি ওভারলে করে। মনে রাখবেন, এটি মেশের উপর লাইন তৈরি করে না, বরং মেশের নির্দিষ্ট পয়েন্টগুলিকে সোজা লাইনের মাধ্যমে কানেক্ট করে। কিছু উদাহরণে এটি গ্রহণযোগ্য বলে মনে হলেও, অন্যান্য ফিচার দ্বারা কভার করা হলে এটি দৃশ্যমানতার সমস্যা সৃষ্টি করতে পারে। এই সমস্যাটি পরবর্তী বিভাগে কভার করা হয়েছে।

মেশ ও লাইনের ইন্টার‍্যাকশন। এখন আমরা অন্য পলিলাইন দেখতে পারি। এই ছবিটি একই এলাকার হলেও এতে আরও বেশি গ্রাউন্ড কভারেজ (বা DTM-এর উপরে DSM-এ আরও বেশি বিবরণ) রয়েছে।

const lineCoords = [
    { lat: 51.188404, lng: -1.779059, altitude: 70.69 },
    { lat: 51.187955, lng: -1.780143, altitude: 77.25 },
    { lat: 51.187658, lng: -1.781552, altitude: 68.97 },
    { lat: 51.187376, lng: -1.782447, altitude: 99.02 },
    { lat: 51.186912, lng: -1.783692, altitude: 104.35 },
    { lat: 51.185855, lng: -1.788368, altitude: 86.91 },
];

আগের মতো একই পদ্ধতি (এবং রঙ) ব্যবহার করে উপস্থাপনা দেখলে, আমরা এই ভিউ পাই:

একটি 3D ম্যাপে গাছপালা ও বিভিন্ন উচ্চতা সহ একটি ভূখণ্ডের উপর একাধিক রঙিন লাইন (বেগুনি, সাদা, কমলা, নীল) দেখানো হচ্ছে।

বেগুনি হল CLAMP_TO_GROUND, যা আপনি মাটির সাথে সাথে যেতে দেখতে পাবেন। সাদা হল অ্যাবসোলিউট, আপনি দেখতে পাচ্ছেন যে সরল রেখাগুলি সেই পয়েন্টগুলিকে সংযুক্ত করে যা স্পেসে অ্যাবসোলিউটভাবে অবস্থান করে। কমলা এবং নীল রঙে আপেক্ষিক ভার্সন দেখানো হয়েছে সারফেস (DTM) বা মেশ (DSM) সম্পর্কে, লক্ষ্য করুন যে নীল লাইনটি সামান্য আলাদা আকারে রয়েছে কারণ নিচে থাকা ফিচারের উচ্চতা আলাদা।

আবার আমরা লাইন তৈরির প্রকৃতি লক্ষ্য করতে পারি যার অর্থ হল লাইনটি মেশের মধ্য দিয়ে যায় কারণ পয়েন্টগুলি সরলরেখা দ্বারা একসাথে সংযুক্ত থাকে। এই পরিস্থিতিতে লাইন দেখতে সমস্যা হতে পারে, তাই আপনি drawsOccludedSegments-কে true-তে সেট করতে পারেন যাতে গাছের মধ্য দিয়েও লাইন দেখা যায়, যেমনটি নিচের ছবিতে আরও বিশদে দেখানো হয়েছে, যেখানে মেশের মধ্য দিয়ে যাওয়া লাইনগুলি এখনও দেখা যাচ্ছে।

একটি 3D ম্যাপে গাছের মধ্যে দিয়ে যাওয়া লাইন দেখানো হয়েছে, যেখানে অস্পষ্ট সেগমেন্টগুলি দৃশ্যমান করা হয়েছে যাতে অস্পষ্ট সেগমেন্টের উদাহরণ দেখানো যায়: সত্য।

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

লাইন ও ভূখণ্ডের মধ্যে ইন্টার‍্যাকশন সংক্রান্ত সমস্যার সমাধান করা

অন্য একটি উদাহরণে, একই এলাকায়, আমরা অন্য কিছু আর্টিফ্যাক্ট দেখতে পারি যেগুলি সম্পর্কে নির্দিষ্ট উচ্চতা মোড ব্যবহার করার সময় আমাদের অবশ্যই সচেতন থাকতে হবে।

এখানে আমরা তুলনামূলকভাবে সমতল এলাকা দেখতে পাচ্ছি যা মূলত DTM-এর লেভেলে রয়েছে, মেসে এর উপরে সীমিত অতিরিক্ত বিবরণ রয়েছে। এই পরিস্থিতি এমন কোনও এলাকার ক্ষেত্রেও প্রযোজ্য হবে যেখানে ভূখণ্ড মডেলের উপরে কোনও 3D কভারেজ নেই। নিচে উল্লেখ করা লোকেশনটি একবার দেখে নেওয়া যাক:

const lineCoords = [
   { lat: 51.194642, lng: -1.782636, altitude: 99.10 },
   { lat: 51.193974, lng: -1.783952, altitude: 99.86 },
   { lat: 51.192203, lng: -1.787175, altitude: 96.14 },
   { lat: 51.190024, lng: -1.790250, altitude: 105.92 },
   { lat: 51.187491, lng: -1.793580, altitude: 102.60 },
   { lat: 51.183690, lng: -1.798745, altitude: 95.69 },
];

এবং ছবিতে দেখা যেতে পারে, লাইনগুলির রঙ আগের মতোই: (সাদা : ABSOLUTE, নীল : RELATIVE_TO_MESH, বেগুনি : CLAMP_TO_GROUND, কমলা : RELATIVE_TO_GROUND)।

একটি 3D ম্যাপে তুলনামূলকভাবে সমতল ভূখণ্ডের উপর বিভিন্ন রঙের লাইন (সাদা, নীল, বেগুনি, কমলা) দেখানো হচ্ছে, যেখানে লাইনগুলি মাটিতে অদৃশ্য হয়ে গেছে সেখানে ভিজ্যুয়াল আর্টিফ্যাক্ট হাইলাইট করা হয়েছে।

এখানে আমরা বেশ কিছু আর্টিফ্যাক্ট দেখতে পাচ্ছি, যার মধ্যে প্রথমটি হল সারফেস কভারের অভাবের কারণে কমলা (RELATIVE_TO_GROUND) এবং নীল (RELATIVE_TO_MESH) লাইনগুলি (বেশিরভাগই) একই লোকেশনে রয়েছে (নীল লাইনটি শেষবার আঁকা হয়েছে বলে দেখানো হয়েছে)।

আমরা আরও দেখতে পাচ্ছি যে বেগুনি (CLAMP_TO_GROUND) লাইনটি মাটির সাথে সাথে চলে এবং পাহাড়ের উপর দেখা যায়, যখন সাদা (ABSOLUTE) লাইনটি পাহাড়ের মধ্যে অদৃশ্য হয়ে যায় কারণ শুধুমাত্র পয়েন্টগুলি কানেক্ট করা হয়েছে এবং সরল রেখাগুলি মাটির মধ্য দিয়ে যায়।

বেগুনি লাইন লুকানো থাকলে আপনি এই ছবিতে এটি বিশেষভাবে দেখতে পাবেন।

একটি 3D ম্যাপ যেখানে সাদা এবং নীল লাইনগুলি একটি পাহাড়ে অদৃশ্য হয়ে যাচ্ছে এবং বেগুনি লাইনটি লুকানো রয়েছে, যা অ্যাবসোলিউট এবং রিলেটিভ-টু-মেশ লাইনের ভিজ্যুয়াল আর্টিফ্যাক্টগুলিকে ব্যাখ্যা করছে।

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

  • আপেক্ষিক পরিমাপের জন্য (RELATIVE_TO_GROUND বা RELATIVE_TO_MESH): আপেক্ষিক উচ্চতার ভ্যালু ব্যবহার করার সময়, কোনও লাইন বা পলিগন বরাবর আরও পয়েন্ট তৈরি করলে, ফিচারটি আরও উপযুক্ত লেভেলে প্লেস করা যাবে, যা এলিভেশন প্রোফাইলের সাথে আরও ভালোভাবে মানানসই হবে। আপনার ডেটাতে এইসব মধ্যবর্তী পয়েন্ট না থাকলে, আপনি সেগুলি যোগ করার জন্য ইন্টারপোলেশন ফাংশন ব্যবহার করতে পারেন, যেমন Google Maps Platform Geometry লাইব্রেরিতে ইন্টারপোলেট ফাংশন। এই নতুন পয়েন্টগুলিকে তখন আপেক্ষিক ভ্যালু দেওয়া যেতে পারে যা প্রাসঙ্গিক উচ্চতা প্রোফাইলের উপরে রাখা হবে এবং তারপরে পয়েন্টগুলিকে যুক্ত করা যেকোনও লাইনের দৈর্ঘ্য সীমিত করা হবে এবং ভিজ্যুয়াল উপস্থাপনা উন্নত করা হবে।
  • অ্যাবসোলিউট ফিচারের (ABSOLUTE) জন্য: ABSOLUTE ফিচারের জন্য, আরও পয়েন্টে প্রকৃত উচ্চতার ভ্যালু থাকতে হবে। বিদ্যমান পরম মানের মধ্যে ইন্টারপোলেট করলে এমন কোনও পয়েন্ট পাওয়া যাবে না যা মেশের উপরে কোনও মানকে সঠিকভাবে প্রতিফলিত করে, কারণ এটি কেবল পয়েন্ট A এবং পয়েন্ট B-এর মধ্যে একটি গড় হবে।

সারাংশ

আশা করি, এই ডকুমেন্ট থেকে আপনি Photorealistic 3D Maps-এ AltitudeMode বিকল্পের একটি বিস্তারিত ওভারভিউ পেয়েছেন, যেখানে ABSOLUTE, CLAMP_TO_GROUND, RELATIVE_TO_GROUND এবং RELATIVE_TO_MESH কীভাবে মার্কার, লাইন এবং পলিগনের মতো বিভিন্ন ফিচারের প্লেসমেন্ট এবং রেন্ডারিংয়ের উপর প্রভাব ফেলে তা বিস্তারিতভাবে ব্যাখ্যা করা হয়েছে।

এই মোডগুলি কীভাবে অন্তর্নিহিত ডিজিটাল টেরেন মডেল (DTM) এবং ডিজিটাল সারফেস মডেল (DSM)-এর সাথে একসাথে কাজ করে তা বোঝা অত্যন্ত গুরুত্বপূর্ণ। এটি ন্যূনতম ভিজ্যুয়াল আর্টিফ্যাক্ট সহ সঠিক এবং দৃশ্যত আকর্ষক 3D ম্যাপ উপস্থাপনা তৈরি করতে সাহায্য করে।

আমরা আশা করি যে আপনি নিজের প্রোজেক্টে এইসব অল্টিটিউড মোড নিয়ে পরীক্ষা করবেন যাতে 3D ম্যাপিংয়ের সম্পূর্ণ সম্ভাবনা আনলক করা যায় এবং আপনার ব্যবহারকারীদের জন্য আকর্ষণীয়, ইমারসিভ অভিজ্ঞতা তৈরি করা যায় এবং মতামত প্রদান করা যায়।

অবদানকারী

ম্যাট টুন | সলিউশন ইঞ্জিনিয়ার, Geo ডেভেলপার