ทําความเข้าใจโหมดและความสูงในแผนที่ 3 มิติ

เมื่อระบุระดับความสูงสำหรับฟีเจอร์ในแผนที่ 3 มิติ เช่น เส้น รูปหลายเหลี่ยม โมเดล หรือเครื่องหมาย จะมีปัจจัยหลายอย่างที่อาจส่งผลต่อตำแหน่งของฟีเจอร์ ทั้งภายในฉากและในลักษณะที่การแสดงผลฉากโต้ตอบกับฟีเจอร์นั้น เอกสารนี้ครอบคลุมการใช้ "AltitudeMode" ในแผนที่ 3 มิติและวิธีจัดการระดับความสูงสำหรับฟีเจอร์

วิธีใช้ AltitudeMode กับฟีเจอร์ประเภทต่างๆ มีดังนี้

  • เครื่องหมาย: Marker3DElement, Marker3DInteractiveElement

    ระบุระดับความสูงในตำแหน่ง รวมถึงการอัดขึ้นรูป

  • โมเดล: Model3DElement, Model3DInteractiveElement

    ระบุระดับความสูงในจุดยึดของโมเดล ซึ่งควรใช้ร่วมกับการวางแนวเพื่อการวางตำแหน่งที่เหมาะสมในฉาก

  • โพลีไลน์: Polyline3DElement Polyline3DInteractiveElement

    ระบุวิธีใช้ความสูงกับจุดตำแหน่งตามแนวเส้นหลายส่วน

  • รูปหลายเหลี่ยม: Polygon3DElement, Polygon3DInteractiveElement

    ระบุวิธีใช้ความสูงกับจุดตำแหน่งตามแนวรูปหลายเหลี่ยม

วิธีใช้ระดับความสูงในสภาพแวดล้อม 3 มิติ

เมื่อวางจุดภายในฉาก 3 มิติ ตำแหน่งสุดท้ายของจุดจะได้รับผลกระทบจาก การมีอยู่ของอาคารหรือวัตถุ 3 มิติที่จับภาพไว้ เช่น ต้นไม้ คุณต้องทำความเข้าใจแนวคิดสำคัญ 2 ประการต่อไปนี้

  • แบบจำลองภูมิประเทศดิจิทัล (DTM): แสดงความสูงของ "พื้นดิน" ลองนึกถึงรูปร่างตามธรรมชาติของผืนดินที่ไม่มี อาคาร ต้นไม้ หรือโครงสร้างอื่นๆ อยู่ด้านบน พื้นที่ทั้งหมดมีพื้นฐานมาจาก DTM ซึ่งเป็นพื้นฐานของระดับความสูงของโลก (คำนวณโดยใช้ EGM96)
  • แบบจำลองพื้นผิวดิจิทัล (DSM): แสดงถึงระดับความสูงของ "พื้นผิวด้านบน" รวมถึงอาคาร ต้นไม้ และโครงสร้างอื่นๆ ในพื้นที่ที่ มีการบันทึกฟีเจอร์ (โดยเฉพาะสภาพแวดล้อมในเมืองที่ อาคารเป็นองค์ประกอบหลักของวิว) พื้นผิวที่มองเห็นจะปรากฏสูงกว่า ภูมิประเทศฐาน

ความแตกต่างระหว่าง DTM กับ DSM มีความสำคัญอย่างยิ่งต่อการทำความเข้าใจว่าโหมดความสูงต่างๆ มีปฏิสัมพันธ์กับแบบจำลองระดับความสูงดิจิทัล (DEM) เหล่านี้อย่างไร เนื่องจากตำแหน่งของฟีเจอร์อาจถูกบดบังหรือได้รับผลกระทบจากแบบจำลองพื้นผิว คุณดูความแตกต่างได้ในแผนภาพด้านล่าง

แผนที่ 3 มิติแสดงความแตกต่างระหว่างแบบจำลองภูมิประเทศดิจิทัล (DTM) กับแบบจำลองพื้นผิวดิจิทัล (DSM)

เมื่อฟีเจอร์ไม่มีข้อมูลระดับความสูง

หากคุณมีข้อมูลที่ไม่มีการวัดความสูง หรือเมื่อใช้ข้อมูลจากบริการอื่นของ Google เช่น บริการเส้นทางหรือสถานที่ คุณมักจะไม่มีความสูงที่ระบุในเรขาคณิตที่ส่งคืน ในกรณีดังกล่าว การวาง ฟีเจอร์ในฉากกำหนดให้คุณต้องเลือกAltitudeModeอย่างรอบคอบ

  • ยึดกับพื้น: วิธีที่ง่ายที่สุด ซึ่งฟีเจอร์จะปรับให้เข้ากับภูมิประเทศโดยอัตโนมัติ โหมดนี้ใช้โมเดล DTM
  • กำหนดระดับความสูงแบบกำหนดเอง + โหมดสัมพัทธ์: คุณกำหนดระดับความสูงที่ต้องการได้ แล้วใช้ RELATIVE_TO_GROUND (ซึ่งวางองค์ประกอบเทียบกับโมเดล DTM) หรือ RELATIVE_TO_MESH (ซึ่งลอยองค์ประกอบเหนือโมเดล DSM)
  • ใช้บริการอื่นเพื่อรับระดับความสูง: หากต้องการระดับความสูง DTM ที่แม่นยำในตำแหน่งของฟีเจอร์ คุณสามารถใช้บริการอย่างเช่น Elevation API ของ Google Maps Platform หากเป็นเส้นหรือรูปหลายเหลี่ยม คุณจะต้องทำเช่นนี้กับแต่ละจุด ที่ประกอบกันเป็นเส้นหรือรูปหลายเหลี่ยม

AltitudeMode ตัวเลือกต่างๆ มีความหมายอย่างไรและควรใช้เมื่อใด

มีAltitudeMode 4 ตัวเลือกที่คุณระบุได้เมื่อกำหนดฟีเจอร์

สัมบูรณ์

ลองนึกภาพเครื่องบินที่บินในระดับความสูงเหนือระดับน้ำทะเลที่เฉพาะเจาะจง เช่น 10,000 ฟุต โดยจะมีความสูงคงที่ ไม่ว่าจะบินเหนือภูเขาหรือหุบเขา

วิธีใช้งาน: ความสูงของออบเจ็กต์จะแสดงเทียบกับระดับน้ำทะเลเฉลี่ย (คำนวณโดยใช้ EGM96) ระบบจะตีความพิกัดระดับความสูงของฟีเจอร์ เป็นระดับความสูงที่แน่นอนเหนือระดับน้ำทะเลโดยเฉลี่ย

เมื่อใดที่ควรใช้: สำหรับฟีเจอร์ที่มีระดับความสูงที่ทราบและแม่นยำ เช่น เส้นทางการบิน วัตถุที่จมอยู่ใต้น้ำที่มีความลึกที่แน่นอน หรือเครื่องมือทางวิทยาศาสตร์แบบจุดคงที่

CLAMP_TO_GROUND

ลองนึกถึงการปูผ้าปิกนิกบนเนินเขาโดยตรง ไม่ว่าเนินเขาจะชันหรือ ราบแค่ไหน ผ้าห่มก็จะวางราบอยู่บนพื้นผิวที่มองเห็นเสมอ

วิธีใช้งาน: ความสูงของออบเจ็กต์จะแสดงเป็นตำแหน่งที่วางบนพื้นโดยตรง โดยจะยังคงอยู่ที่ระดับพื้นดินตามภูมิประเทศ ไม่ว่าจะมีค่าระดับความสูงใดก็ตาม ระบบจะไม่สนใจพิกัดความสูงของฟีเจอร์ แต่จะ ฉายภาพลงบนพื้นผิวภูมิประเทศ (DTM) โดยตรง

กรณีที่ควรใช้: สำหรับฟีเจอร์ที่ควรสอดคล้องกับภูมิประเทศเสมอ เช่น ถนน รั้ว เส้นทาง ขอบเขตที่ดิน หรือฐานของอาคาร

RELATIVE_TO_GROUND

ลองนึกภาพบอลลูนที่ลอยอยู่เหนือระดับความสูงของพื้นดินตามธรรมชาติ (DTM) ที่อยู่ด้านล่าง 100 เมตร หากพื้นดินสูงขึ้น บอลลูนก็จะสูงขึ้นตามไปด้วย โดยรักษาระยะห่าง 100 เมตรจาก "พื้นดิน"

วิธีใช้: ความสูงของออบเจ็กต์จะแสดงเทียบกับพื้นผิวดิน (DTM) ระบบจะตีความพิกัดความสูงขององค์ประกอบเป็นออฟเซ็ตจาก ระดับความสูงของภูมิประเทศที่ตำแหน่งแนวนอน

เมื่อใดที่ควรใช้: สำหรับออบเจ็กต์ที่ต้องรักษาระดับความสูงที่สม่ำเสมอเหนือภูมิประเทศตามธรรมชาติ เช่น เสาส่งสัญญาณหรือสายไฟฟ้าเหนือศีรษะในพื้นที่ชนบท

RELATIVE_TO_MESH

ซึ่งคล้ายกับโดรนที่บินในระดับความสูงคงที่เหนือสิ่งที่บินผ่าน ไม่ว่าจะเป็นพื้นดินเปล่า หลังคาอาคาร หรือยอดไม้ โดยจะปรับให้เข้ากับพื้นผิวที่มองเห็นได้สูงสุด (DSM)

วิธีใช้งาน: ความสูงของออบเจ็กต์จะแสดงเทียบกับพื้นผิวที่สูงที่สุดของ พื้นดิน + อาคาร + ผิวน้ำ (DSM) ระบบจะตีความพิกัดระดับความสูงของฟีเจอร์เป็นออฟเซ็ตจากระดับความสูงของ DSM

กรณีที่ควรใช้: สำหรับออบเจ็กต์ที่ต้องลอยเหนือระดับความสูงหนึ่งๆ ไม่ว่าจะมีอะไรอยู่ตรงนั้น (DTM, อาคาร, น้ำ) มีประโยชน์สำหรับเครื่องหมายบน หลังคาหรือฟีเจอร์ที่ปรับให้เข้ากับฉากที่มองเห็นแบบไดนามิก

ดูรายละเอียดเพิ่มเติมได้ที่เอกสารประกอบสำหรับค่าคงที่ AltitudeMode

ตัวอย่างภาพและการใช้งานจริง

ตัวอย่างเหล่านี้ใช้สถานที่ตั้งที่เฉพาะเจาะจงอย่างสโตนเฮนจ์เพื่อแสดงให้เห็นว่าAltitudeModeตัวเลือกต่างๆ มีผลต่อตำแหน่งของฟีเจอร์อย่างไร ตัวอย่างเหล่านี้จะครอบคลุมถึงเครื่องหมายระบุตำแหน่งก่อน จากนั้นจึงเป็นเส้นและพื้นที่ ซึ่งมีข้อควรพิจารณาที่แตกต่างกันเล็กน้อย

เครื่องหมายตำแหน่ง

ลองพิจารณาเครื่องหมายปักหมุดที่วางไว้ดังนี้

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

คุณจะเห็นหมุดสีขาวในฉากด้านล่าง

ฉากแผนที่ 3 มิติที่มีเครื่องหมายหมุดสีขาว ซึ่งแสดงตำแหน่งเริ่มต้นของเครื่องหมาย

ตอนนี้ดูรูปภาพด้านล่างซึ่งแสดงหมุดสีต่างๆ ที่วางโดยใช้ โหมดระดับความสูงที่แตกต่างกัน

ฉากแผนที่ 3 มิติแสดงหมุดหลายหมุด (สีขาว ม่วง ส้ม น้ำเงิน) ที่วางโดยใช้โหมดระดับความสูงต่างๆ โดยมีสโตนเฮนจ์เป็นจุดศูนย์กลาง

มาดูกันว่าAltitudeModeต่างๆ ส่งผลต่อการวางตำแหน่งของ เครื่องหมายตามลำดับความสูงจากน้อยไปมากอย่างไร

CLAMP_TO_GROUND (หมุดสีม่วง)

หมุดนี้จะไม่สนใจค่าระดับความสูงและจะติดกับระดับความสูงของพื้นดินที่ใกล้ที่สุด คุณจะเห็นเส้นทางอยู่ใต้หมุดสีขาว ซึ่งจะ "ยึด" กับภูมิประเทศ

ในทางเทคนิคแล้ว โหมดนี้จะไม่สนใจระดับความสูงจริงและจะตรึงหมุดไว้ที่ ความสูง DTM ที่ใกล้ที่สุด

ABSOLUTE (หมุดสีขาว)

หมุดนี้ใช้ค่าระดับความสูงที่แน่นอน (102.23 ม.) เพื่อวางเครื่องหมายที่ ความสูงเหนือระดับน้ำทะเล (EGM96) โดยจะปรากฏที่ด้านบนของหินสโตนเฮนจ์ก้อนใดก้อนหนึ่ง ตามที่ระบุไว้ในระดับความสูงที่ให้ไว้

ในทางเทคนิคแล้ว โหมดนี้จะใช้ค่าความสูงที่ระบุจริงเพื่อวางหมุด ที่ความสูงที่ระบุเหนือระดับน้ำทะเล ซึ่งในตัวอย่างนี้คือตำแหน่ง ของสโตนเฮนจ์ แต่ที่ด้านบนของหินก้อนหนึ่ง

RELATIVE_TO_GROUND (หมุดสีส้ม)

หมุดนี้ใช้พื้นดิน (DTM) เป็นฐานและวางตัวเองสูง 102.23 ม. เหนือระดับพื้นดินนั้น จึงดูเหมือนลอยอยู่เหนือพื้นดินธรรมชาติที่อยู่ใต้ หินในเฮนจ์

ในทางเทคนิคแล้ว โหมดนี้จะตั้งค่าฐานเป็นระดับของ DTM จริงบนพื้นดิน แล้ววางหมุดที่ระดับ 102.23 เมตรเหนือระดับนั้น

RELATIVE_TO_MESH (หมุดสีน้ำเงิน)

หมุดนี้ใช้พื้นผิวที่มองเห็นได้ (DSM) เป็นฐานและวางตัวเองสูงกว่าพื้นผิวนั้น 102.23 ม. โหมดนี้จะรวมความสูงของหินในการวัด โดยจะจัดแนวให้สูงกว่าหมุดสีส้มเล็กน้อย

ในทางเทคนิคแล้ว โหมดนี้ใช้ตาข่าย (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 }
];

คุณจะเห็นบรรทัดนี้แสดงในรูปภาพด้านล่างเป็นสีขาวโดยใช้ positioning แบบสัมบูรณ์

แผนที่ 3 มิติแสดงเส้นสีขาวที่วางรอบสโตนเฮนจ์โดยใช้การกำหนดตำแหน่งแบบสัมบูรณ์

อีกครั้งที่รูปภาพด้านล่างแสดงเส้นทางโดยใช้โหมดระดับความสูงต่างๆ มาดูรายละเอียดของแต่ละระดับกัน ตั้งแต่ระดับต่ำสุดไปจนถึงระดับสูงสุด

แผนที่ 3 มิติแสดงเส้นสีต่างๆ (ม่วง ขาว ส้ม น้ำเงิน) หลายเส้นซึ่งวางอยู่รอบๆ สโตนเฮนจ์โดยใช้โหมดระดับความสูงที่แตกต่างกัน

CLAMP_TO_GROUND (เส้นสีม่วง)

เส้นนี้จะละเว้นความสูงที่ระบุสำหรับแต่ละจุด และแทนที่จะ "คลุม" เส้นเหนือพื้นดิน (DTM) โดยตรง โดยจะเลียบไปตามภูมิประเทศ ไม่สนใจสิ่งปลูกสร้างหรือหินที่อยู่เหนือเส้นทาง

ในทางเทคนิคแล้ว โหมดนี้จะไม่สนใจค่าความสูงจริงและจะวางเส้น เหนือ DTM ตามภูมิประเทศพื้นฐานและไม่สนใจตาข่ายของฟีเจอร์ ที่อยู่เหนือ DTM

ABSOLUTE (เส้นสีขาว)

เส้นนี้ใช้ระดับความสูงที่แน่นอนสำหรับแต่ละจุด ทำให้เส้นผ่านเหนือหินบางก้อน โดยเชื่อมต่อด้วยเส้นตรงระหว่างแต่ละจุด ซึ่งบางครั้งอาจทำให้ดูเหมือนว่าผ่านวัตถุหากจุดไม่ถี่พอ

ในทางเทคนิคแล้ว โหมดนี้จะทำตามระดับความสูงที่ระบุสำหรับแต่ละจุด โดยเชื่อมต่อจุดต่างๆ ด้วยเส้นตรง ซึ่งหมายความว่าโหมดนี้จะผ่านตาข่าย (เช่น หิน) ได้หากค่าระดับความสูงกำหนดไว้ สถานการณ์นี้จะกล่าวถึงในส่วนถัดไป

RELATIVE_TO_GROUND (สายสีส้ม)

เส้นนี้ใช้พื้นดินตามธรรมชาติ (DTM) เป็นฐานและวางแต่ละจุดที่ระดับความสูงที่ระบุเหนือระดับพื้นดินนั้น

ในทางเทคนิคแล้ว โหมดนี้ใช้ 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 }
];

ในสถานการณ์นี้ซึ่งไม่มีการระบุระดับความสูง เส้นมักจะปรากฏใน ตำแหน่งที่คล้ายกัน เส้นสีขาว ส้ม และม่วงอาจรวมกันเป็นเส้นเดียว (สีส้ม เนื่องจากโดยปกติแล้วจะวาดเป็นเส้นสุดท้าย) เนื่องจากทั้งหมดมีค่าเริ่มต้นเป็นตำแหน่งระดับพื้นดินที่คล้ายกัน คุณจะเห็นข้อมูลนี้ที่ด้านล่าง

แผนที่ 3 มิติแสดงเส้นสีต่างๆ (ส้ม น้ำเงิน) รอบสโตนเฮนจ์ โดยเส้นสีขาวและสีม่วงจะผสานกันเนื่องจากไม่มีข้อมูลระดับความสูง

เส้นสีน้ำเงิน (RELATIVE_TO_MESH) จะใช้ตาข่าย (DSM) เป็นฐานอีกครั้ง เนื่องจากไม่ได้ระบุความสูง ระบบจึงวางซ้อนจุดต่างๆ ไว้บน พื้นผิวโดยตรง โปรดทราบว่าเครื่องมือนี้ไม่ได้วางเส้นบนตาข่าย แต่จะเชื่อมต่อจุดที่ระบุบนตาข่ายด้วยการเชื่อมต่อแบบเส้นตรง แม้ว่า ในบางตัวอย่างอาจดูเหมือนยอมรับได้ แต่ก็อาจทำให้เกิดปัญหาด้านการมองเห็นเมื่อ ฟีเจอร์อื่นๆ บังอยู่ ปัญหานี้จะกล่าวถึงในส่วนถัดไป

การโต้ตอบของตาข่ายและเส้น ตอนนี้เรามาดูเส้นหลายส่วนอีกเส้นกัน รูปภาพนี้อยู่ในพื้นที่เดียวกันแต่มี พื้นที่ภาคพื้นดินมากกว่า (หรือมีรายละเอียดเพิ่มเติมใน DSM ที่อยู่เหนือ DTM)

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

เมื่อเราเห็นการแสดงโดยใช้วิธีการ (และสี) เดียวกันกับก่อนหน้านี้ เราจะเห็นมุมมองต่อไปนี้

แผนที่ 3 มิติแสดงเส้นสีต่างๆ (ม่วง ขาว ส้ม น้ำเงิน) หลายเส้นเหนือภูมิประเทศที่มีต้นไม้และความสูงที่แตกต่างกัน

สีม่วงคือ CLAMP_TO_GROUND ซึ่งคุณจะเห็นว่าเคลื่อนที่ไปตามพื้น สีขาว เป็นแบบสัมบูรณ์ ซึ่งคุณจะเห็นว่าเส้นตรงเชื่อมต่อจุดที่ วางตำแหน่งแบบสัมบูรณ์ในพื้นที่ เมื่อสีส้มและสีน้ำเงินเป็นเวอร์ชันที่เกี่ยวข้อง ไม่ว่าจะเป็นเกี่ยวกับพื้นผิว (DTM) หรือตาข่าย (DSM) โปรดทราบว่าเส้นสีน้ำเงินมีรูปร่าง แตกต่างกันเล็กน้อยเนื่องจากความสูงของฟีเจอร์ด้านล่าง

อีกครั้งที่เราสามารถสังเกตลักษณะของการสร้างเส้นได้ ซึ่งหมายความว่าเส้นจะผ่าน ผ่านเมชเนื่องจากจุดต่างๆ เชื่อมต่อกันด้วยเส้นตรง สถานการณ์นี้อาจทำให้เกิดปัญหาในการมองเห็นเส้น คุณจึงตั้งค่า drawsOccludedSegments เป็น true เพื่อให้แน่ใจว่ามองเห็นเส้นผ่านต้นไม้ได้ ดังที่แสดงรายละเอียดเพิ่มเติมในรูปภาพต่อไปนี้ ซึ่งจะเห็นเส้นที่ผ่านเมชได้

แผนที่ 3 มิติแสดงเส้นที่ผ่านต้นไม้ โดยจะแสดงส่วนที่ถูกบดบังเพื่อให้เห็นภาพการบดบังของส่วนต่างๆ: จริง

ลักษณะของการวางตำแหน่งในพื้นที่หมายความว่าจุดอาจอยู่ภายใน ตาข่าย และเส้นที่เชื่อมต่อจุดอาจอยู่ภายในตาข่ายด้วย ซึ่งอาจทำให้เกิดอาร์ติแฟกต์ภาพ ในส่วนด้านล่าง เราอาจเห็นวิธีปรับปรุงอาร์ติแฟกต์ดังกล่าวหากเป็นไปได้

การแก้ปัญหาในการโต้ตอบระหว่างเส้นกับภูมิประเทศ

อีกตัวอย่างหนึ่ง ในพื้นที่เดียวกัน เราจะเห็นอาร์ติแฟกต์อื่นๆ ที่เราต้องระวังเมื่อใช้โหมดระดับความสูงที่เฉพาะเจาะจง

ในที่นี้ เรามีพื้นที่ค่อนข้างราบเรียบซึ่งส่วนใหญ่อยู่ที่ระดับ DTM โดยมีรายละเอียดเพิ่มเติมที่จำกัดอยู่เหนือพื้นที่ดังกล่าวในเมช สถานการณ์นี้จะเกิดขึ้นในพื้นที่ที่ไม่มีความครอบคลุมแบบ 3 มิติเหนือโมเดลภูมิประเทศด้วย มาดูที่ตำแหน่งต่อไปนี้ตามที่ระบุไว้ด้านล่าง

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)

แผนที่ 3 มิติแสดงเส้นสีต่างๆ (ขาว น้ำเงิน ม่วง ส้ม) เหนือภูมิประเทศที่ค่อนข้างราบเรียบ โดยไฮไลต์อาร์ติแฟกต์ภาพที่เส้นหายลงไปในพื้นดิน

ในที่นี้เราจะเห็นอาร์ติแฟกต์หลายอย่าง โดยอาร์ติแฟกต์แรกคือเนื่องจาก ไม่มีพื้นผิวปกคลุม เส้นสีส้ม (RELATIVE_TO_GROUND) และสีน้ำเงิน (RELATIVE_TO_MESH) จึงอยู่ที่ตำแหน่งเดียวกัน (ส่วนใหญ่) (โดยเส้นสีน้ำเงิน จะแสดงเนื่องจากวาดเป็นเส้นสุดท้าย)

นอกจากนี้ เรายังเห็นว่าเส้นสีม่วง (CLAMP_TO_GROUND) จะไปตามพื้นดินและ มองเห็นได้บนเนินเขา ในขณะที่เส้นสีขาว (ABSOLUTE) จะมองเห็นเป็น เส้นที่หายเข้าไปในเนินเขาเนื่องจากมีการเชื่อมต่อเฉพาะจุด และเส้นตรง จะผ่านพื้นดิน

คุณจะเห็นสิ่งนี้อย่างชัดเจนในรูปภาพนี้เมื่อซ่อนเส้นสีม่วง

แผนที่ 3 มิติแสดงเส้นสีขาวและสีน้ำเงินที่หายไปในเนินเขา โดยมีเส้นสีม่วงซ่อนอยู่ ซึ่งแสดงให้เห็นอาร์ติแฟกต์ภาพของเส้นสัมบูรณ์และเส้นที่สัมพันธ์กับตาข่าย

ดังนั้นจึงอาจทำให้เกิดอาร์ติแฟกต์ภาพที่แปลกประหลาดบางอย่าง ซึ่งเส้นอาจ หายไปใต้พื้นดิน (หรือแม้แต่ผ่านเมช) เนื่องจากเส้นระหว่างจุดต่างๆ จะติดตามเส้นทางตรงเท่านั้น คุณอาจปรับปรุง การแสดงภาพของเส้นดังกล่าวได้โดยการเพิ่มจุดระหว่างเส้น ผ่านการใช้วิธีการประมาณค่า ซึ่งผลกระทบต่อภาพจะ ขึ้นอยู่กับวิธีการที่ใช้

  • สำหรับการวัดแบบสัมพัทธ์ (RELATIVE_TO_GROUND หรือ RELATIVE_TO_MESH): เมื่อใช้ค่าความสูงสัมพัทธ์ การสร้างจุดเพิ่มเติมตามแนวเส้นหรือรูปหลายเหลี่ยมจะช่วยให้วางฟีเจอร์ในระดับที่เหมาะสมยิ่งขึ้น ซึ่งสอดคล้องกับโปรไฟล์ระดับความสูงได้ดีขึ้น หากไม่มีจุดกลางเหล่านี้ในข้อมูล คุณสามารถใช้ฟังก์ชันการประมาณค่า เช่น ฟังก์ชัน Interpolate ในไลบรารีเรขาคณิตของ Google Maps Platform เพื่อเพิ่มจุดกลาง จากนั้นคุณจะกำหนดค่าสัมพัทธ์ให้กับจุดใหม่เหล่านี้ได้ ซึ่งจะอยู่เหนือโปรไฟล์ระดับความสูงที่เกี่ยวข้อง และระบบจะจำกัดความยาวของเส้นที่เชื่อมต่อจุดต่างๆ และปรับปรุงการแสดงภาพ
  • สำหรับฟีเจอร์แบบสัมบูรณ์ (ABSOLUTE): สำหรับฟีเจอร์ ABSOLUTE จุดเพิ่มเติม จะต้องมีค่าความสูงจริง การประมาณค่าระหว่างค่าสัมบูรณ์ที่มีอยู่จะไม่ให้จุดที่แสดงค่าใดๆ เหนือตาข่ายได้อย่างถูกต้อง เนื่องจากจะเป็นเพียงค่าเฉลี่ยระหว่างจุด A กับจุด B

สรุป

เราหวังว่าเอกสารนี้จะให้ภาพรวมที่ครอบคลุมเกี่ยวกับ AltitudeMode ตัวเลือกในแผนที่ 3 มิติแบบสมจริง โดยอธิบายรายละเอียดว่า ABSOLUTE, CLAMP_TO_GROUND, RELATIVE_TO_GROUND และ RELATIVE_TO_MESH ส่งผลต่อการวาง และการแสดงผลของฟีเจอร์ต่างๆ เช่น เครื่องหมาย เส้น และรูปหลายเหลี่ยมอย่างไร

การทำความเข้าใจวิธีการทำงานร่วมกันของโหมดเหล่านี้กับโมเดลภูมิประเทศดิจิทัล (DTM) และโมเดลพื้นผิวดิจิทัล (DSM) ที่อยู่เบื้องหลังเป็นสิ่งสำคัญในการสร้างการแสดงแผนที่ 3 มิติที่แม่นยำและน่าสนใจด้วยอาร์ติแฟกต์ภาพที่น้อยที่สุด

เราหวังว่าคุณจะทดลองใช้โหมดระดับความสูงเหล่านี้ในโปรเจ็กต์ของคุณเองเพื่อ ปลดล็อกศักยภาพทั้งหมดของการทำแผนที่ 3 มิติ และสร้างประสบการณ์ที่น่าสนใจและสมจริง สำหรับผู้ใช้ของคุณ รวมถึงให้ความคิดเห็น

ผู้ร่วมให้ข้อมูล

Matt Toon | วิศวกรโซลูชัน นักพัฒนาซอฟต์แวร์ Geo