Kartenrendering zu Bild SVG, PNG, JPG mit GIS C#-Bibliothek
Überblick über das Kartenrendering
Mit der Aspose.GIS for .NET C# API können Sie eine Karte aus einem Shapefile, FileGDB, GeoJSON, KML oder anderen unterstützten Dateiformaten in SVG, PNG, JPEG oder BMP rendern.
Hier ist ein C#-Code, der veranschaulicht, wie man eine Karte aus einer Shapefile mit Standardeinstellungen in SVG rendert:
// 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); | |
} |
Hier ist das Ergebnis:
Schauen wir uns den Code genauer an.
Zuerst instanziieren wir ein Map -Objekt. Es repräsentiert eine Sammlung von Layern aus verschiedenen Quellen, die gerendert werden können. Eine Karte hat eine Größe, in der sie angezeigt werden soll. Hier setzen wir die Karte auf 800 Pixel Breite und 400 Pixel Höhe.
Beachten Sie, dass sich die Map in einer using-Anweisung befindet. Dies ist notwendig, da die Map alle hinzugefügten Ressourcen verfolgt und diese verwirft, wenn wir mit dem Rendern fertig sind und das Map-Objekt verworfen wird.
Als Nächstes fügen wir ein Layer aus einer Datei zur Karte hinzu. Jedes Layer wird über den vorherigen Layern gerendert, in der Reihenfolge, in der sie der Karte hinzugefügt wurden. Weitere Details zum Öffnen von Vektorlayern finden Sie hier.
Schließlich rufen wir Map.Render auf, um die Karte in eine Datei zu rendern. Wir geben einen Pfad an, wo die Ergebnisdatei gespeichert werden soll, und einen Renderer, der verwendet werden soll. Die Klasse Renderers enthält Referenzen auf alle mit Aspose.GIS gelieferten Renderer. Sie können beispielsweise Renderers.Png anstelle von Renderers.Svg im obigen Beispiel angeben, um die Karte in eine PNG-Datei zu rendern.
Erweiterte Formatierung
Mit der Aspose.GIS API können Sie das Rendering und den Feature-Stil anpassen, um das gewünschte Aussehen zu erzielen.
// 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); | |
} |
Raster in Karte zeichnen
Mit Aspose.GIS for .NET können Sie eine Karte aus Rasterformaten rendern.
Mit Standardeinstellungen rendern
Hier erfahren Sie, wie Sie eine Karte aus einem GeoTIFF mit Standardeinstellungen in SVG rendern:
// 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); | |
} |
Schiefe Raster rendern
Mit Aspose.GIS können Sie ein Raster mit schiefen Rasterzellen rendern.
// 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); | |
} |
In polaren räumlichen Referenzen rendern
Aspose.GIS ermöglicht Ihnen die Verwendung polarer räumlicher Referenzen in einem Kartenrenderingprozess.
// 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); | |
} |