ฉันสงสัยว่ามีวิธีในการมองเห็นข้อมูล 3 มิติด้วย mapserver หรือไม่? ไฟล์ 3D .shp อยู่ในฐานข้อมูล postgis และฉันได้เชื่อมต่อ mapserver กับฐานข้อมูลแล้ว แต่มีเลเยอร์เรียบง่ายใน mapfile
ฉันสงสัยว่ามีวิธีในการมองเห็นข้อมูล 3 มิติด้วย mapserver หรือไม่? ไฟล์ 3D .shp อยู่ในฐานข้อมูล postgis และฉันได้เชื่อมต่อ mapserver กับฐานข้อมูลแล้ว แต่มีเลเยอร์เรียบง่ายใน mapfile
คำตอบ:
วิธีหนึ่งที่จะไปได้คือให้ PostGIS ฉายภาพ 3 มิติ ฉันได้ทำการทดสอบง่ายๆเมื่อไม่กี่เดือนที่ผ่านมาเพื่อให้เห็นภาพฟังก์ชั่นระยะทาง 3 มิติที่มาเช่น ST_3DShortestLine
สิ่งที่ฉันทำก็เพียงแค่ใช้ ST_RotateX, ST_RotateY และ ST_RotateZ เพื่อสร้างเรขาคณิต 3 มิติ "แสดงให้เห็นมากกว่าด้านบนของกล้อง"
สง่างามและมีประสิทธิภาพมากขึ้นคือการเปลี่ยนแปลงทั้งหมดด้วย ST_Affine
ด้วยการใช้ฟังก์ชั่นขั้นสูงฉันคิดว่ามันคงเป็นไปได้ที่จะได้มุมมองมุมมอง 3 มิติเช่นกัน
ปัญหาเท่าที่ฉันได้ลองสิ่งนี้คือมันแค่หมุนทุกอย่างรอบ ๆ โอริโก แต่ก็ควรที่จะหลีกเลี่ยงปัญหาได้เช่นกัน
ด้วยวิธีนี้คุณควรทำให้ MapServer นำเสนอข้อมูลของคุณเสมือน 3D แต่ MapServer จะเห็นรูปทรงเรขาคณิต 2D แบนเท่านั้น
หากใครบางคนประสบความสำเร็จกับสิ่งนี้ฉันสนใจ ฉันคิดเกี่ยวกับการสร้างฟังก์ชั่น 3D ปลอมด้วยวิธีนี้ใน postgisonline.org แต่ฉันไม่มีความรู้และเวลาที่จะคิดออกว่าการเปลี่ยนแปลงควรจะทำอย่างไรกับ ST_Affine เพื่อให้มุมมองมุมมองและหมุนรอบจุดศูนย์กลางของ mapextent แทนที่จะหมุนรอบโอริโก
/ Nicklas
MapServer จะไม่ทำอะไรเพื่อคุณ คุณต้องอัปเกรดเป็นเวอร์ชั่นล่าสุดเพื่อให้มีโอกาสเพราะรุ่นก่อนหน้านี้จะแยกส่วนข้อมูลที่สามในคิวรีฐานข้อมูล ทางออกที่ดีที่สุดของคุณอาจลองใช้ GeoServer และ KML สนับสนุนที่นั่นและดูว่าคุณสามารถเห็นภาพใน Google Earth หรือไม่ หรือความล้มเหลวนั้นเขียนสคริปต์ PHP เล็กน้อยเพื่อดึงข้อมูลของคุณออกจาก PostGIS ด้วยฟังก์ชัน ST_AsKML () และใส่สไตล์ไว้ในระหว่างทาง ไม่มีเวทมนต์ให้ใช้!
คุณสามารถแสดงแผนที่ไฮเพอโรเมตริกของคุณเป็น Hillshade แล้ววางทับเส้น 3 มิติเพื่อให้คุณเห็นข้อมูล 2D เท่านั้น หากคุณต้องการไปไกลกว่านี้คุณอาจใช้ซอฟต์แวร์การเรนเดอร์ 3D เพื่อฉายเงาจากเส้นสามมิติไปยังแผนที่ไฮเพอโรเมตริกซึ่งจะช่วยให้ภาพลวงตาของความสูงแก่เส้นของคุณ แต่ Mapserver เองจะไม่แสดงสิ่งต่าง ๆ ในแบบ 3 มิติอย่างแท้จริง