Відображення карти у зображення SVG, PNG, JPG за допомогою GIS C# бібліотеки

Огляд відображення карти

За допомогою Aspose.GIS для .NET C# API ви можете відображати карту з Shapefile, FileGDB, GeoJSON, KML або інших підтримуваних файлових форматів у SVG, PNG, JPEG або BMP.

Ось код C#, який ілюструє, як відобразити карту з shapefile в SVG за допомогою налаштувань за замовчуванням:

// For complete examples and data files, please go to https://github.com/aspose-gis/Aspose.GIS-for-.NET
using (var map = new Map(800, 400))
{
map.Add(VectorLayer.Open(dataDir + "land.shp", Drivers.Shapefile));
map.Render(dataDir + "land_out.svg", Renderers.Svg);
}

Ось результат:

відображення карти

Давайте уважніше розглянемо код.

Спочатку ми створюємо об’єкт Map . Він представляє собою колекцію шарів з різних джерел, які можна відобразити. Карта має розмір, при якому вона повинна бути відображена. Тут ми встановлюємо ширину карти 800 пікселів і висоту 400 пікселів.

Зверніть увагу, що Map знаходиться в операторі using. Це необхідно, тому що карта відстежує всі додані до неї ресурси та звільняє їх після завершення рендерингу та утилізації об’єкта Map.

Далі ми додаємо шар з файлу на карту. Кожен шар відображається поверх попереднього шару в порядку, в якому вони були додані на карту. Більш детальна інформація про відкриття векторних шарів тут.

Нарешті, ми викликаємо Map.Render, щоб відобразити карту у файл. Ми вказуємо шлях до місця збереження файлу результату та рендерер для використання. Клас Renderers містить посилання на всі рендерери, включені в Aspose.GIS. Наприклад, ви можете вказати Renderers.Png замість Renderers.Svg у прикладі вище, щоб відобразити карту у PNG файл.

Розширене стилізування

За допомогою API Aspose.GIS ви можете налаштувати рендеринг та стилі об’єктів для досягнення бажаного вигляду.

розширене стилізування

// For complete examples and data files, please go to https://github.com/aspose-gis/Aspose.GIS-for-.NET
using (var map = new Map(800, 476))
{
var baseMapSymbolizer = new SimpleFill { FillColor = Color.Salmon, StrokeWidth = 0.75 };
map.Add(VectorLayer.Open(dataDir + "basemap.shp", Drivers.Shapefile), baseMapSymbolizer);
var citiesSymbolizer = new SimpleMarker() { FillColor = Color.LightBlue };
citiesSymbolizer.FeatureBasedConfiguration = (feature, symbolizer) =>
{
var population = feature.GetValue<int>("population");
symbolizer.Size = 10 * population / 1000;
if (population < 2500)
{
symbolizer.FillColor = Color.GreenYellow;
}
};
map.Add(VectorLayer.Open(dataDir + "points.geojson", Drivers.GeoJson), citiesSymbolizer);
map.Render(dataDir + "cities_out.svg", Renderers.Svg);
}

Малювання растру на карті

За допомогою Aspose.GIS для .NET ви можете відображати карту з растрових форматів.

Відображення за налаштуваннями за замовчуванням

Ось як відобразити карту з GeoTIFF в SVG, використовуючи налаштування за замовчуванням:

// For complete examples and data files, please go to https://github.com/aspose-gis/Aspose.GIS-for-.NET
string filesPath = RunExamples.GetDataDir();
using (var map = new Map(500, 500))
{
var layer = Drivers.GeoTiff.OpenLayer(Path.Combine(filesPath, "raster_float32.tif"));
// Conversion to colors is detected automatically.
// The maximum and minimum values are calculated and linear interpolation is used.
map.Add(layer);
map.Render(filesPath + "raster_float32_out.svg", Renderers.Svg);
}

растр за замовчуванням

Відображення перекошених растрових зображень

За допомогою Aspose.GIS ви можете відображати растр з перекошеними клітинками растру.

// For complete examples and data files, please go to https://github.com/aspose-gis/Aspose.GIS-for-.NET
string filesPath = RunExamples.GetDataDir();
using (var map = new Map(500, 500))
{
// use background color
map.BackgroundColor = Color.Azure;
var layer = Drivers.GeoTiff.OpenLayer(Path.Combine(filesPath, "raster_skew.tif"));
// Conversion to colors is detected automatically.
// The maximum and minimum values are calculated and linear interpolation is used.
map.Add(layer);
map.Render(filesPath + "raster_skew_out.svg", Renderers.Svg);
}

перекошений растр

Відображення в полярній просторовій системі відліку

Aspose.GIS дозволяє використовувати полярні просторові системи відліку в процесі рендерингу карти.

// For complete examples and data files, please go to https://github.com/aspose-gis/Aspose.GIS-for-.NET
string filesPath = RunExamples.GetDataDir();
// make own multi colorizer it works faster than auto-detection
var colorizer = new MultiBandColor()
{
RedBand = new BandColor() { BandIndex = 0, Min = 0, Max = 255 },
GreenBand = new BandColor() { BandIndex = 1, Min = 0, Max = 255 },
BlueBand = new BandColor() { BandIndex = 2, Min = 0, Max = 255 }
};
using (var map = new Map(500, 500))
{
// setup the polar extent and coordinate system (gnomonic spatial reference)
map.SpatialReferenceSystem = SpatialReferenceSystem.CreateFromEpsg(102034);
map.Extent = new Extent(-180, 60, 180, 90) { SpatialReferenceSystem = SpatialReferenceSystem.Wgs84 };
map.BackgroundColor = Color.Azure;
// open geo-tiff
var layer = Drivers.GeoTiff.OpenLayer(Path.Combine(filesPath, "raster_countries.tif"));
// draw
map.Add(layer, colorizer);
map.Render(filesPath + "raster_countries_gnomonic_out.png", Renderers.Png);
}

гномонічні країни