Rendu de carte en image SVG, PNG, JPG à l'aide d'une bibliothèque C# GIS

Aperçu du rendu de carte

Avec l’API C# Aspose.GIS pour .NET, vous pouvez rendre une carte à partir d’un Shapefile, FileGDB, GeoJSON, KML ou d’autres formats de fichiers pris en charge vers SVG, PNG, JPEG ou BMP.

Voici un code C# illustrant comment rendre une carte à partir d’un shapefile vers SVG en utilisant les paramètres par défaut :

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

Voici le résultat :

rendu de carte

Examinons de plus près le code.

Tout d’abord, nous instancions un objet Map . Il représente une collection de calques provenant de diverses sources qui peuvent être rendus. Une carte a une taille à laquelle elle est censée être affichée. Ici, nous définissons la carte sur 800 pixels de large et 400 pixels de haut.

Remarquez que la Map est incluse dans l’instruction using. Ceci est nécessaire car la map suit toutes les ressources ajoutées à celle-ci et les élimine lorsque nous avons terminé le rendu et que l’objet Map est éliminé.

Ensuite, nous ajoutons un calque à partir d’un fichier à la carte. Chaque calque est rendu par-dessus le calque précédent, dans l’ordre dans lequel ils ont été ajoutés à la carte. Voir plus de détails sur comment ouvrir les calques vectoriels ici.

Enfin, nous appelons Map.Render pour rendre la carte dans un fichier. Nous spécifions un chemin d’accès à l’endroit où enregistrer le fichier de résultat et un moteur de rendu à utiliser. La classe Renderers contient des références à tous les moteurs de rendu inclus avec Aspose.GIS. Par exemple, vous pouvez spécifier Renderers.Png au lieu de Renderers.Svg dans l’exemple ci-dessus pour rendre la carte dans un fichier PNG

Style avancé

Avec l’API Aspose.GIS, vous pouvez personnaliser le rendu et les styles des entités afin d’obtenir l’apparence souhaitée.

style avancé

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

Dessiner un raster dans la carte

Avec Aspose.GIS pour .NET, vous pouvez rendre une carte à partir de formats raster.

Rendu avec les paramètres par défaut

Voici comment rendre une carte à partir d’un GeoTIFF vers SVG en utilisant les paramètres par défaut :

// 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 par défaut

Rendu des rasters asymétriques

Avec Aspose.GIS, vous pouvez rendre un raster avec des cellules de raster asymétriques.

// 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 asymétrique

Rendu dans une référence spatiale polaire

Aspose.GIS vous permet d’utiliser des références spatiales polaires sur un processus de rendu de carte.

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

pays gnomoniques