Як малювати геометрію на карті
Щоб створити та відобразити геометричні об’єкти на карті, вам потрібно спочатку створити об’єкт геометрії. Існує два методи, які ви можете використовувати:
- Конструктор для кожного типу ознак геометрії Цей метод передбачає використання спеціального конструктора для кожного типу ознак геометрії. Наприклад, щоб створити точку, ви б використали наступний код:
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 (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 у наступній статті: “Експорт та імпорт даних з/в WKT та 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, яка надає детальну інформацію про те, як використовувати різні методи стилізації для покращення візуальної привабливості вашої карти.
Підсумовуючи, щоб створити геометричні об’єкти на карті, ви можете використовувати або конструктор для кожного типу ознак геометрії, або генерувати геометрію з WKT. Щоб відобразити об’єкт, розмістіть його на шарі та відобразіть шар на карті в стилі за замовчуванням карти. Збережіть карту в підтримуваному форматі, такому як SVG, і використовуйте нашу бібліотеку для дослідження варіантів стилізації. Крім того, наша бібліотека надає можливість побачити готовий приклад, натиснувши на посилання, надане в документації, яке може допомогти вам зрозуміти, як реалізувати ці методи у ваших власних проектах.