วิธีวาดรูปทรงเรขาคณิตบนแผนที่

Contents
[ ]

ในการสร้างและแสดงวัตถุทางเรขาคณิตบนแผนที่ คุณต้องเริ่มต้นด้วยการ สร้างออบเจ็กต์รูปทรงเรขาคณิต มีสองวิธีที่คุณสามารถใช้ได้:

  • Constructor สำหรับ Geometry Feature Type แต่ละประเภท วิธีนี้เกี่ยวข้องกับการใช้ constructor ที่กำหนดเองสำหรับ geometry feature type แต่ละประเภท ตัวอย่างเช่น ในการสร้างจุด คุณจะต้องใช้โค้ดต่อไปนี้:
Point point = new Point(40.7128, -74.006);

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

Polygon polygon = new Polygon();

LinearRing ring = new LinearRing();
ring.AddPoint(50.02, 36.22);
ring.AddPoint(49.99, 36.26);
ring.AddPoint(49.97, 36.23);
ring.AddPoint(49.98, 36.17);
ring.AddPoint(50.02, 36.22);

LinearRing hole = new LinearRing();
hole.AddPoint(50.00, 36.22);
hole.AddPoint(49.99, 36.20);
hole.AddPoint(49.98, 36.23);
hole.AddPoint(50.00, 36.24);
hole.AddPoint(50.00, 36.22);

polygon.ExteriorRing = ring;
polygon.AddInteriorRing(hole);

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

  • WKT (Well-Known Text) วิธีนี้เกี่ยวข้องกับการสร้างรูปทรงเรขาคณิตจาก WKT (Well-Known Text) ซึ่งนำเสนอวิธีการที่เป็นมาตรฐานในการสร้างรูปทรงเรขาคณิต โค้ดต่อไปนี้แสดงให้เห็นถึงวิธีการสร้างจุดและเส้น:
var point = Geometry.FromText("POINT (23.5, 25.3)");
var line = Geometry.FromText("LINESTRING Z (0.1 0.2 0.3, 1 2 1, 12 23 2)");

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

คุณสามารถค้นหารายละเอียดเพิ่มเติมเกี่ยวกับ WKT ได้ในบทความต่อไปนี้: “Exporting and Importing Data from/to WKT and WKB”

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

ในการแสดงออบเจ็กต์รูปทรงเรขาคณิตของคุณ คุณสามารถสร้าง InMemoryLayer และเพิ่มออบเจ็กต์ลงในนั้น:

using (var layer = Drivers.InMemory.CreateLayer())
{
     Feature feature = layer.ConstructFeature();
     feature.Geometry = Geometry.FromText("POINT (23.5, 25.3)");
     layer.Add(feature);
}

ตอนนี้คุณสามารถ แสดงเลเยอร์นี้บนแผนที่และสร้างไฟล์ในรูปแบบใดรูปแบบหนึ่งที่รองรับ เช่น SVG ด้วยโค้ดต่อไปนี้:

using (var map = new Map(500, 500))
{
     map.Add(layer);
     map.Render(filesPath, Renderers.Svg);
}

เมื่อคุณได้เพิ่มเลเยอร์และแสดงบนแผนที่แล้ว คุณสามารถบันทึกในรูปแบบใดก็ได้ที่รองรับ ในตัวอย่างนี้ รูปแบบ SVG ถูกเลือกเพื่อหลีกเลี่ยงปัญหาที่อาจเกิดขึ้นกับการสนับสนุน Bitmap สิ่งสำคัญที่ควรทราบคือ Net 6.0 มีการสนับสนุน Bitmap ที่จำกัด ซึ่งอาจส่งผลให้เกิดข้อจำกัด เช่น ความไม่สามารถในการแสดงภาพ Bitmap โดยใช้ Blazor WebAsm บนไคลเอนต์ ดังนั้น เมื่อเลือกรูปแบบที่จะบันทึกแผนที่ของคุณ สิ่งสำคัญคือต้องพิจารณาข้อจำกัดของแพลตฟอร์มเป้าหมายและเลือกรูปแบบที่เข้ากันได้กับมัน

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

กล่าวโดยสรุป ในการสร้างวัตถุทางเรขาคณิตบนแผนที่ คุณสามารถใช้ constructor สำหรับ geometry feature type แต่ละประเภท หรือสร้างรูปทรงเรขาคณิตจาก WKT หากต้องการแสดงออบเจ็กต์ ให้วางไว้ในเลเยอร์และแสดงเลเยอร์บนแผนที่ด้วยสไตล์แผนที่เริ่มต้น บันทึกแผนที่เป็นรูปแบบที่รองรับ เช่น SVG และใช้ไลบรารีของเราเพื่อสำรวจตัวเลือกการจัดรูปแบบ นอกจากนี้ ไลบรารีของเรายังมีโอกาสที่จะเห็นตัวอย่างสำเร็จรูปโดยคลิกที่ ลิงก์ ที่ให้ไว้ในเอกสารประกอบ ซึ่งสามารถช่วยคุณในการทำความเข้าใจวิธีการใช้เทคนิคเหล่านี้ในโปรเจ็กต์ของคุณเอง