چگونگی ترسیم هندسه بر روی نقشه
برای ایجاد و نمایش اشیاء هندسی بر روی نقشه، ابتدا باید یک شیء هندسی ایجاد کنید. دو روش برای این کار وجود دارد:
- سازنده برای هر نوع ویژگی هندسی این روش شامل استفاده از سازنده سفارشی برای هر نوع ویژگی هندسی است. به عنوان مثال، برای ایجاد یک نقطه، میتوانید از کد زیر استفاده کنید:
Point point = new Point(40.7128, -74.006);
با این حال، این روش میتواند هنگام ایجاد اشیاء پیچیده مانند چندخطی یا مجموعهها چالشبرانگیز و دست و پا گیر شود. در نتیجه، توسعه دهنده ممکن است نیاز به افزودن خطوط کد زیادی داشته باشد که باعث کاهش خوانایی کد میشود. اطمینان از یکپارچگی دادهها در طول مقداردهی اولیه نیز میتواند دشوار باشد. به عنوان مثال، نمونه زیر را در نظر بگیرید که یک چندضلعی با حفرهای درون آن ایجاد میکند:
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 (متن شناخته شده) این روش شامل تولید هندسه از WKT (متن شناخته شده) است که راهی استاندارد برای ایجاد هندسهها ارائه میدهد. کد زیر نحوه ایجاد یک نقطه و یک خط را نشان میدهد:
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.” (صادرات و وارد کردن دادهها از/به WKT و WKB)
نمایش اشیاء هندسی بر روی نقشه پس از ایجاد یک شیء هندسی، مرحله بعدی نمایش آن بر روی نقشه است. در حالی که نقشه میتواند لایههایی را که از منابع و قالبهای مختلف بارگیری شدهاند نمایش دهد، لایه InMemory یک لایه است که به منبع نیاز ندارد.
برای نمایش شیء هندسی خود، میتوانید یک 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 مراجعه کنید که اطلاعات دقیقی در مورد نحوه استفاده از تکنیکهای استایلبندی مختلف برای افزایش جذابیت بصری نقشه شما ارائه میدهد.
به طور خلاصه، برای ایجاد اشیاء هندسی بر روی نقشه، میتوانید از یک سازنده برای هر نوع ویژگی هندسی یا تولید هندسه از WKT استفاده کنید. برای نمایش شیء، آن را روی یک لایه قرار دهید و لایه را با سبک پیشفرض نقشه نمایش دهید. نقشه را در قالب پشتیبانی شده مانند SVG ذخیره کنید و از کتابخانه ما برای کاوش در گزینههای استایلبندی استفاده کنید. علاوه بر این، کتابخانه ما فرصتی را برای مشاهده یک مثال تمام شده با کلیک روی پیوند ارائه شده در مستندات فراهم میکند که میتواند به شما کمک کند تا نحوه پیادهسازی این تکنیکها را در پروژههای خود درک کنید.