Как рисовать геометрию на карте

Contents
[ ]

Для создания и отображения геометрических объектов на карте необходимо начать с создания объекта геометрии. Существует два метода, которые можно использовать:

  • Конструктор для каждого типа признаков геометрии Этот метод предполагает использование пользовательского конструктора для каждого типа признаков геометрии. Например, чтобы создать точку, вы бы использовали следующий код:
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, и используйте нашу библиотеку для изучения вариантов стиля. Кроме того, наша библиотека предоставляет возможность увидеть готовый пример, щелкнув ссылку, предоставленную в документации, которая может помочь вам понять, как реализовать эти методы в ваших собственных проектах.