যখন আপনি একটি 3D ম্যাপে বিভিন্ন ফিচারের (যেমন লাইন, পলিগন, মডেল বা মার্কার) উচ্চতা নির্দিষ্ট করেন, তখন এমন বেশ কিছু বিষয় থাকে যা দৃশ্যের মধ্যে সেগুলোর অবস্থানকে প্রভাবিত করতে পারে এবং সেই ফিচারের সাথে দৃশ্যের রেন্ডারিংয়ের মিথস্ক্রিয়াকেও প্রভাবিত করতে পারে। এই ডকুমেন্টটিতে একটি 3D ম্যাপে 'AltitudeMode'- এর ব্যবহার এবং ফিচারগুলোর উচ্চতা কীভাবে পরিচালনা করতে হয়, তা আলোচনা করা হয়েছে।
বিভিন্ন ফিচার টাইপের সাথে যেভাবে AltitudeMode ব্যবহার করতে পারেন, তা নিচে দেওয়া হলো:
মার্কার: Marker3DElement , Marker3DInteractiveElement
অবস্থানে একটি উচ্চতা এবং এক্সট্রুশন নির্দিষ্ট করুন।
মডেল: Model3DElement , Model3DInteractiveElement
মডেলের অ্যাঙ্কর পয়েন্টে একটি উচ্চতা নির্দিষ্ট করুন, যা দৃশ্যে সঠিক অবস্থানের জন্য এর ওরিয়েন্টেশনের সাথে ব্যবহার করা উচিত।
পলিলাইন: পলিলাইন3Dএলিমেন্ট , পলিলাইন3Dইন্টারেক্টিভএলিমেন্ট
একটি পলিলাইন বরাবর পয়েন্টগুলোর অবস্থানে উচ্চতা কীভাবে প্রয়োগ করা হবে তা নির্দিষ্ট করুন।
বহুভুজ: Polygon3DElement , Polygon3DInteractiveElement
একটি বহুভুজ বরাবর পয়েন্টগুলোর অবস্থানে উচ্চতা কীভাবে প্রয়োগ করা হবে তা নির্দিষ্ট করুন।
ত্রিমাত্রিক পরিবেশে উচ্চতা কীভাবে ব্যবহৃত হয়
একটি 3D দৃশ্যে পয়েন্ট স্থাপন করার সময়, তাদের চূড়ান্ত অবস্থান ধারণ করা 3D ভবন বা গাছের মতো বস্তুর উপস্থিতি দ্বারা প্রভাবিত হয়। দুটি মূল ধারণা বোঝা অত্যন্ত গুরুত্বপূর্ণ:
- ডিজিটাল টেরেইন মডেল (ডিটিএম) : এটি ভূমির 'অনাবৃত' উচ্চতাকে উপস্থাপন করে। এটিকে ভূমির প্রাকৃতিক আকৃতি হিসেবে ভাবা যেতে পারে, যার উপরে কোনো ভবন, গাছ বা অন্য কোনো স্থাপনা নেই। সমস্ত এলাকা ডিটিএম দ্বারা সমর্থিত, যা পৃথিবীর উচ্চতার ভিত্তি তৈরি করে (যা EGM96 ব্যবহার করে গণনা করা হয়)।
- ডিজিটাল সারফেস মডেল (ডিএসএম) : এটি ভবন, গাছপালা এবং অন্যান্য কাঠামোসহ "উপরের পৃষ্ঠের" উচ্চতাকে উপস্থাপন করে। যেসব এলাকায় বিভিন্ন বৈশিষ্ট্য ধারণ করা হয়েছে (বিশেষ করে শহুরে পরিবেশে, যেখানে ভবনগুলোই দৃশ্যপটে প্রাধান্য পায়), সেখানে দৃশ্যমান পৃষ্ঠটি মূল ভূখণ্ডের চেয়ে উঁচু বলে মনে হবে।
এই ডিজিটাল এলিভেশন মডেলগুলোর (DEM) সাথে বিভিন্ন অল্টিটিউড মোড কীভাবে কাজ করে, তা বোঝার জন্য DTM এবং DSM-এর মধ্যে পার্থক্যটি অত্যন্ত গুরুত্বপূর্ণ, কারণ সারফেস মডেলের কারণে ফিচারগুলোর অবস্থান অস্পষ্ট বা প্রভাবিত হতে পারে। নিচের ডায়াগ্রামে আপনি পার্থক্যগুলো দেখতে পারেন:

যখন বৈশিষ্ট্যগুলিতে উচ্চতার ডেটা থাকে না
যদি আপনার ডেটাতে উচ্চতার পরিমাপ না থাকে অথবা যখন আপনি রুটস বা প্লেসেস-এর মতো অন্য কোনো গুগল পরিষেবা থেকে ডেটা ব্যবহার করেন, তখন প্রায়শই ফেরত আসা জ্যামিতিতে কোনো উচ্চতা সরবরাহ করা থাকে না। এই ধরনের ক্ষেত্রে, দৃশ্যে ফিচারটি স্থাপন করার জন্য আপনাকে সাবধানে একটি AltitudeMode বেছে নিতে হবে:
- মাটিতে গেঁথে দিন : এটি সবচেয়ে সহজ পদ্ধতি, যেখানে ফিচারটি স্বয়ংক্রিয়ভাবে ভূখণ্ডের সাথে সামঞ্জস্যপূর্ণ হয়ে যাবে। এই মোডটি DTM মডেল ব্যবহার করে।
- একে একটি ইচ্ছামত উচ্চতা ও আপেক্ষিক মোড দিন : আপনি একটি নির্বাচিত উচ্চতা নির্ধারণ করতে পারেন এবং তারপরে RELATIVE_TO_GROUND (যা ফিচারগুলিকে DTM মডেলের সাপেক্ষে স্থাপন করে) অথবা RELATIVE_TO_MESH (যা সেগুলিকে DSM মডেলের উপরে ভাসিয়ে রাখে) ব্যবহার করতে পারেন।
- উচ্চতা পেতে অন্য পরিষেবা ব্যবহার করুন : ফিচারটির অবস্থানে সুনির্দিষ্ট DTM উচ্চতা পেতে, আপনি Google Maps Platform Elevation API-এর মতো কোনো পরিষেবা ব্যবহার করতে পারেন। যদি এটি একটি রেখা বা বহুভুজ হয়, তবে রেখা বা বহুভুজটি গঠনকারী প্রতিটি বিন্দুর জন্য আপনাকে এটি করতে হবে।
AltitudeMode অপশনগুলোর অর্থ কী এবং কখন সেগুলো ব্যবহার করতে হবে?
একটি ফিচার সংজ্ঞায়িত করার সময় আপনি চারটি AltitudeMode অপশন নির্দিষ্ট করতে পারেন:
পরম
কল্পনা করুন, একটি বিমান সমুদ্রপৃষ্ঠ থেকে একটি নির্দিষ্ট উচ্চতায়, ধরা যাক ১০,০০০ ফুট, উড়ছে। এর উচ্চতা স্থির, তা পাহাড়ের উপর দিয়েই উড়ুক বা উপত্যকার উপর দিয়ে।
ব্যবহারের পদ্ধতি : বস্তুর উচ্চতা গড় সমুদ্রপৃষ্ঠের সাপেক্ষে প্রকাশ করা হয় (যা EGM96 ব্যবহার করে গণনা করা হয়)। ফিচারটির উচ্চতা স্থানাঙ্ককে গড় সমুদ্রপৃষ্ঠের উপরে একটি সুনির্দিষ্ট উচ্চতা হিসেবে ব্যাখ্যা করা হয়।
কখন ব্যবহার করবেন : যেসব বৈশিষ্ট্যের উচ্চতা সুনির্দিষ্ট ও জানা আছে, সেগুলোর ক্ষেত্রে; যেমন উড়োজাহাজের গতিপথ, সঠিক গভীরতাযুক্ত নিমজ্জিত বস্তু, বা স্থির-বিন্দুর বৈজ্ঞানিক যন্ত্র।
মাটিতে ক্ল্যাম্প
সরাসরি পাহাড়ের ঢালে একটি পিকনিকের চাদর বিছানোর কথা ভাবুন। পাহাড়টি যতই খাড়া বা সমতল হোক না কেন, চাদরটি তার দৃশ্যমান পৃষ্ঠে সবসময় সমানভাবে বিছিয়ে থাকে।
কীভাবে ব্যবহার করবেন : বস্তুর উচ্চতা সরাসরি ভূমিতে স্থাপন করা হিসাবে প্রকাশ করা হয়। প্রদত্ত যেকোনো উচ্চতার মান নির্বিশেষে, সেগুলি ভূখণ্ড অনুসরণ করে ভূমি স্তরেই থাকবে। ফিচারটির উচ্চতার স্থানাঙ্ক উপেক্ষা করা হয়; এটি সরাসরি ভূখণ্ডের পৃষ্ঠে (DTM) প্রক্ষেপিত হয়।
কখন ব্যবহার করবেন : এমন সব বৈশিষ্ট্যের জন্য যা সর্বদা ভূখণ্ডের সাথে সামঞ্জস্যপূর্ণ হওয়া উচিত, যেমন রাস্তা, বেড়া, পথ, সম্পত্তির সীমানা বা ভবনের ভিত্তি।
ভূমির সাপেক্ষে
এমন একটি উষ্ণ বায়ু বেলুনের কথা কল্পনা করুন যা তার নীচের স্বাভাবিক ভূমির উচ্চতা (ডিটিএম) থেকে ১০০ মিটার উপরে থাকে। যদি ভূমি উপরে উঠে যায়, বেলুনটিও তার সাথে উপরে উঠে যায় এবং 'খালি মাটি' থেকে সেই ১০০-মিটারের ব্যবধান বজায় রাখে।
ব্যবহারের পদ্ধতি : বস্তুর উচ্চতা ভূমির পৃষ্ঠের (DTM) সাপেক্ষে প্রকাশ করা হয়। ফিচারটির উচ্চতা স্থানাঙ্ককে এর আনুভূমিক অবস্থানে থাকা ভূখণ্ডের উচ্চতা থেকে একটি অফসেট হিসাবে ব্যাখ্যা করা হয়।
কখন ব্যবহার করবেন : যেসব বস্তুকে প্রাকৃতিক ভূখণ্ড থেকে একটি নির্দিষ্ট উচ্চতা বজায় রাখতে হয়, যেমন গ্রামীণ এলাকার যোগাযোগ টাওয়ার বা ওভারহেড লাইন, সেগুলোর জন্য।
মেশের সাপেক্ষে
এটি অনেকটা এমন একটি ড্রোনের মতো যা তার চারপাশের যেকোনো কিছুর, তা খালি মাটি, কোনো দালানের ছাদ বা গাছের চূড়াই হোক না কেন, একটি নির্দিষ্ট উচ্চতায় উড়ে থাকে। এটি সর্বোচ্চ দৃশ্যমান পৃষ্ঠতলের (DSM) সাথে নিজেকে মানিয়ে নেয়।
ব্যবহারের পদ্ধতি : বস্তুর উচ্চতা ভূমি+ভবন+জলের পৃষ্ঠের (DSM) সর্বোচ্চটির সাপেক্ষে প্রকাশ করা হয়। ফিচারটির উচ্চতা স্থানাঙ্ককে DSM উচ্চতা থেকে একটি অফসেট হিসাবে ব্যাখ্যা করা হয়।
কখন ব্যবহার করবেন : যেসব বস্তুকে বাস্তব পরিবেশের (যেমন ডিটিএম, ভবন, জল) উপরে একটি নির্দিষ্ট উচ্চতায় ভাসিয়ে রাখতে হয়, সেগুলোর জন্য এটি উপযোগী। ছাদের উপর মার্কার হিসেবে অথবা এমন সব বৈশিষ্ট্যের জন্য এটি দরকারি যা দৃশ্যমান দৃশ্যের সাথে গতিশীলভাবে সামঞ্জস্য করে।
আরও বিস্তারিত তথ্যের জন্য, AltitudeMode কনস্ট্যান্টগুলোর ডকুমেন্টেশন দেখুন।
চাক্ষুষ উদাহরণ এবং বাস্তব প্রয়োগ
এই উদাহরণগুলিতে স্টোনহেঞ্জ নামক একটি নির্দিষ্ট স্থান ব্যবহার করে দেখানো হয়েছে যে, কীভাবে AltitudeMode বিভিন্ন অপশন কোনো ফিচারের অবস্থানকে প্রভাবিত করে। এই উদাহরণগুলিতে প্রথমে মার্কারের অবস্থান, তারপর লাইন এবং এরিয়ার অবস্থান আলোচনা করা হয়েছে, যেগুলোর ক্ষেত্রে কয়েকটি ভিন্ন বিষয় বিবেচনা করতে হয়।
অবস্থান চিহ্নিতকারী
নিম্নলিখিতভাবে স্থাপন করা একটি পিন মার্কার বিবেচনা করুন:
const markerLocation = { lat: 51.1789, lng: -1.8262, altitude: 102.23 };
নিচের দৃশ্যে আপনি এটিকে সাদা পিন হিসেবে দেখতে পারেন:

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

চলুন দেখে নেওয়া যাক, বিভিন্ন AltitudeMode কীভাবে উচ্চতার আরোহী ক্রমে মার্কারের অবস্থানকে প্রভাবিত করে।
CLAMP_TO_GROUND (বেগুনি পিন)
এই পিনটি উচ্চতার মান উপেক্ষা করে নিকটতম ভূমির উচ্চতায় নিজেকে সংযুক্ত করে। আপনি এটিকে সাদা পিনটির ঠিক নীচে দেখতে পাবেন, যা কার্যকরভাবে ভূখণ্ডকে "আঁকড়ে ধরে"।
প্রযুক্তিগতভাবে, এই মোড প্রকৃত উচ্চতাকে উপেক্ষা করে এবং পিনটিকে নিকটতম DTM উচ্চতায় স্থির করে রাখে।
অ্যাবসোলিউট (সাদা পিন)
এই পিনটি সঠিক উচ্চতার মান (১০২.২৩ মিটার) ব্যবহার করে সমুদ্রপৃষ্ঠ থেকে সেই উচ্চতায় (EGM96) মার্কারটিকে স্থাপন করে, যা এর প্রদত্ত উচ্চতা অনুযায়ী স্টোনহেঞ্জের একটি পাথরের উপরে প্রদর্শিত হয়।
প্রযুক্তিগতভাবে, এই মোডটি সরবরাহকৃত প্রকৃত উচ্চতার মান ব্যবহার করে পিনটিকে সমুদ্রপৃষ্ঠ থেকে একটি নির্দিষ্ট উচ্চতায় স্থাপন করে, যা এই উদাহরণে স্টোনহেঞ্জের অবস্থান, তবে পাথরগুলোর একটির চূড়ায়।
ভূমির সাপেক্ষে (কমলা পিন)
এই পিনটি ভূমিকে (ডিটিএম) তার ভিত্তি হিসাবে গ্রহণ করে এবং সেই ভূমি স্তর থেকে ১০২.২৩ মিটার উপরে নিজেকে স্থাপন করে, যার ফলে এটিকে হেঞ্জের পাথরের নীচে থাকা প্রাকৃতিক ভূমির উপরে ভাসমান বলে মনে হয়।
প্রযুক্তিগতভাবে, এই মোডটি এর ভিত্তি ভূমিতে থাকা প্রকৃত DTM-এর সমতলে স্থাপন করে এবং তারপর পিনটিকে তার ১০২.২৩ মিটার উপরে স্থাপন করে।
মেশের সাপেক্ষে (নীল পিন)
এই পিনটি দৃশ্যমান পৃষ্ঠকে (DSM) তার ভিত্তি হিসেবে ব্যবহার করে এবং সেই পৃষ্ঠ থেকে ১০২.২৩ মিটার উপরে নিজেকে স্থাপন করে। এই মোডটি তার পরিমাপে পাথরটির উচ্চতাও অন্তর্ভুক্ত করে, ফলে এটি কমলা পিনটির চেয়ে সামান্য উঁচুতে অবস্থান করে।
প্রযুক্তিগতভাবে, এই মোডটি মেশ (DSM)-কে ভিত্তি হিসেবে ব্যবহার করে এবং এর উপরে প্রদত্ত উচ্চতায় অবস্থানটিকে স্থাপন করে। যেহেতু DSM-টি দণ্ডায়মান পাথরটির শীর্ষে অবস্থিত, তাই এই পিনটি তার আপেক্ষিক উচ্চতা নির্ধারণ করার সময় এই অতিরিক্ত উচ্চতাটিকেও তার পরিমাপে অন্তর্ভুক্ত করে, যার ফলে এটি RELATIVE_TO_GROUND পিনটির চেয়ে সামান্য উঁচুতে অবস্থান করে।
অবস্থান রেখা এবং এলাকা
রেখা এবং ক্ষেত্রের জন্য, বৈশিষ্ট্যটির ভেতরের বিন্দুগুলোর উচ্চতা (তা নির্দিষ্ট করা হোক বা না হোক) এবং ব্যবহৃত AltitudeMode উভয়ই অত্যন্ত গুরুত্বপূর্ণ। আসুন, নিম্নলিখিত নির্দিষ্ট উচ্চতা সহ স্টোনহেঞ্জ বরাবর একটি রেখা পরীক্ষা করা যাক:
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 }
];
নিচের ছবিতে অ্যাবসোলিউট পজিশনিং ব্যবহার করে এই লাইনটিকে সাদা রঙে দেখানো হয়েছে, যা আপনি দেখতে পারেন।

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

CLAMP_TO_GROUND (বেগুনি রেখা)
এই রেখাটি প্রতিটি বিন্দুর জন্য নির্দিষ্ট উচ্চতাকে উপেক্ষা করে এবং এর পরিবর্তে রেখাটিকে সরাসরি নিচের ভূমির (DTM) উপর বিছিয়ে দেয়। এটি ভূখণ্ডকে অনুসরণ করে এবং এর উপরে থাকা ভবন বা পাথরের মতো কোনো বৈশিষ্ট্যের উপস্থিতি উপেক্ষা করে।
প্রযুক্তিগতভাবে, এই মোড প্রকৃত উচ্চতার মান উপেক্ষা করে এবং নিচের ভূখণ্ডকে অনুসরণ করে DTM-এর উপর রেখাটি স্থাপন করে, ও এর উপরের বৈশিষ্ট্যগুলোর জালিকা উপেক্ষা করে।
পরম (সাদা রেখা)
এই রেখাটি প্রতিটি বিন্দুর সঠিক উচ্চতা ব্যবহার করে, যার ফলে রেখাটি কিছু পাথরের উপর দিয়ে চলে যায়। প্রতিটি বিন্দুর মধ্যে সরলরেখা দ্বারা সংযোগ রয়েছে, যার কারণে বিন্দুগুলো যথেষ্ট ঘন ঘন না হলে এটিকে কখনও কখনও বস্তুর মধ্য দিয়ে চলে গেছে বলে মনে হতে পারে।
প্রযুক্তিগতভাবে, এই মোডটি প্রতিটি বিন্দুর জন্য নির্দিষ্ট উচ্চতা অনুসরণ করে এবং সেগুলোকে সরলরেখা দিয়ে সংযুক্ত করে, যার অর্থ হলো, উচ্চতার মান নির্দেশ করলে এটি জালিকার (যেমন: পাথর) মধ্য দিয়েও যেতে পারে। এই পরিস্থিতিটি পরবর্তী একটি অংশে আলোচনা করা হয়েছে।
ভূমির সাপেক্ষে (কমলা রেখা)
এই রেখাটি প্রাকৃতিক ভূমিকে (ডিটিএম) ভিত্তি হিসেবে ব্যবহার করে এবং প্রতিটি বিন্দুকে সেই ভূমি স্তরের উপরে নির্দিষ্ট উচ্চতায় স্থাপন করে।
প্রযুক্তিগতভাবে, এই মোডটি DTM-কে ভিত্তি হিসেবে ব্যবহার করে এবং এর সাপেক্ষে তালিকাভুক্ত উচ্চতায় লাইনগুলোর অবস্থান নির্ধারণ করে।
মেশের সাপেক্ষে (নীল রেখা)
এই রেখাটি তার ভিত্তি হিসেবে ভবন ও পাথরসহ দৃশ্যমান পৃষ্ঠকে ব্যবহার করে। এরপর এটি সেই জালিকার উপরে নির্দিষ্ট উচ্চতায় প্রতিটি বিন্দু স্থাপন করে, যা কার্যকরভাবে দৃশ্যমান ভূদৃশ্যের সাপেক্ষে রেখাটির আকৃতিকে প্রতিলিপি করে।
প্রযুক্তিগতভাবে, এই মোডটি মেশ (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 }
];
এই পরিস্থিতিতে, যেখানে কোনো উচ্চতা দেওয়া থাকে না, সেখানে রেখাগুলো প্রায়শই একই রকম অবস্থানে দেখা যায়। সাদা, কমলা এবং বেগুনি রেখাগুলো একটি একক রেখায় (কমলা, কারণ এটি সাধারণত শেষে আঁকা হয়) মিশে যেতে পারে, কারণ এগুলোর সবকটিই ডিফল্টভাবে ভূমি-স্তরের কাছাকাছি অবস্থানে থাকে। আপনি এটি নিচে দেখতে পারেন:

নীল রেখাটি ( মেশের সাপেক্ষে ) আবারও মেশটিকে (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 },
];
যখন আমরা আগের একই পদ্ধতি (এবং রং) ব্যবহার করে উপস্থাপনাটি দেখি, তখন আমরা এই দৃশ্যটি পাই:

বেগুনি হলো CLAMP_TO_GROUND , যা আপনি ভূমি বরাবর যেতে দেখতে পারেন। সাদা হলো ABSOLUTE, যেখানে আপনি দেখতে পারেন যে সরলরেখাগুলো মহাকাশে পরমভাবে অবস্থিত বিন্দুগুলোকে সংযুক্ত করে। কমলা এবং নীল হলো যথাক্রমে SURFACE (DTM) বা MESH (DSM) এর সাপেক্ষে আপেক্ষিক সংস্করণ; লক্ষ্য করুন, নীচের বৈশিষ্ট্যগুলোর উচ্চতার কারণে নীল রেখাটির আকৃতি কিছুটা ভিন্ন।
আবার আমরা লক্ষ্য করতে পারি যে, লাইন তৈরির প্রকৃতি এমন যে, পয়েন্টগুলো সরলরেখা দ্বারা সংযুক্ত থাকায় লাইনটি মেশের মধ্য দিয়ে যায়। এই পরিস্থিতিতে লাইনগুলো দেখতে সমস্যা হতে পারে, তাই গাছগুলোর মধ্য দিয়ে লাইনটি যাতে দেখা যায় তা নিশ্চিত করতে আপনি `drawsOccludedSegments`-কে ` true` সেট করতে পারেন, যেমনটি নিচের ছবিতে আরও বিস্তারিতভাবে দেখানো হয়েছে, যেখানে মেশের মধ্য দিয়ে যাওয়া লাইনগুলোও দেখা যাচ্ছে।

মহাকাশে অবস্থানের প্রকৃতির কারণে পয়েন্টগুলো মেশের মধ্যে পড়তে পারে এবং পয়েন্টগুলোকে সংযোগকারী রেখাগুলোও মেশের মধ্যে পড়তে পারে, যা সম্ভাব্যভাবে ভিজ্যুয়াল আর্টিফ্যাক্ট তৈরি করতে পারে। নিচের অংশে আমরা দেখব, যেখানে সম্ভব, কীভাবে এই ধরনের আর্টিফ্যাক্টগুলো উন্নত করা যেতে পারে।
রেখা এবং ভূখণ্ডের মধ্যে পারস্পরিক ক্রিয়ার সমস্যা সমাধান করা
অন্য একটি উদাহরণে, একই এলাকায়, আমরা আরও কিছু আর্টিফ্যাক্ট দেখতে পাই, যেগুলোর বিষয়ে নির্দিষ্ট অল্টিটিউড মোড ব্যবহার করার সময় আমাদের অবশ্যই সচেতন থাকতে হবে।
এখানে আমাদের একটি অপেক্ষাকৃত সমতল এলাকা রয়েছে যা মূলত ডিটিএম (DTM)-এর স্তরে অবস্থিত, এবং এর উপরে মেশ (mesh)-এ সীমিত অতিরিক্ত বিবরণ রয়েছে। এই পরিস্থিতি এমন একটি এলাকার ক্ষেত্রেও প্রযোজ্য হবে যেখানে ভূখণ্ড মডেলের (terrain model) উপরে কোনো ৩ডি (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 },
];
এবং ছবিতে দেখা যাচ্ছে, লাইনগুলোর রঙের উপস্থাপনা আগের মতোই: (সাদা : অ্যাবসোলিউট, নীল : রিলেটিভ_টু_মেশ, বেগুনি : ক্ল্যাম্প_টু_গ্রাউন্ড, কমলা : রিলেটিভ_টু_গ্রাউন্ড)।

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

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