Renderização de Mapa para Imagem SVG, PNG, JPG usando a Biblioteca GIS C#

Visão Geral da Renderização de Mapa

Com a API Aspose.GIS para .NET C# você pode renderizar um mapa de um Shapefile, FileGDB, GeoJSON, KML ou outros formatos de arquivo suportados para SVG, PNG, JPEG ou BMP.

Aqui está o código C# ilustrando como renderizar um mapa de um shapefile para SVG usando as configurações padrão:

// 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);
}

Aqui está o resultado:

renderização de mapa

Vamos analisar mais detalhadamente o código.

Primeiro, instanciamos um objeto Map . Ele representa uma coleção de camadas de várias fontes que podem ser renderizadas. Um Mapa tem um tamanho em que deve ser exibido. Aqui definimos o mapa para ter 800 pixels de largura e 400 pixels de altura.

Observe que o Map está envolto na instrução using. Isso é necessário porque o mapa rastreia todos os recursos adicionados a ele e os descarta quando terminamos de renderizar e o objeto Map é descartado.

Em seguida, adicionamos uma camada de um arquivo ao mapa. Cada camada é renderizada sobre a camada anterior, na ordem em que foram adicionadas ao mapa. Veja mais detalhes sobre como abrir camadas vetoriais aqui.

Finalmente, chamamos Map.Render para renderizar o mapa em um arquivo. Especificamos um caminho para onde salvar o arquivo de resultado e um renderer a ser usado. A classe Renderers contém referências a todos os renderizadores incluídos com o Aspose.GIS. Por exemplo, você pode especificar Renderers.Png em vez de Renderers.Svg no exemplo acima para renderizar o mapa em um arquivo PNG

Estilização Avançada

Com a API Aspose.GIS, você pode personalizar a renderização e os estilos de recursos para alcançar o visual desejado.

estilização avançada

// 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);
}

Desenhe raster no mapa

Com o Aspose.GIS para .NET você pode renderizar um mapa de formatos raster.

Renderize com as configurações padrão

Aqui está como renderizar um mapa de um GeoTIFF para SVG usando as configurações padrão:

// 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);
}

raster padrão

Renderize rasters inclinados

Com o Aspose.GIS você pode renderizar um raster com células de raster inclinadas.

// 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);
}

raster inclinado

Renderize em referência espacial polar

O Aspose.GIS permite usar referências espaciais polares em um processo de renderização de mapa.

// 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);
}

países gnomônicos