Kaartweergave naar Afbeelding SVG, PNG, JPG met GIS C# Bibliotheek
Overzicht Kaartweergave
Met de Aspose.GIS for .NET C# API kunt u een kaart renderen vanuit een Shapefile, FileGDB, GeoJSON, KML of andere ondersteunde bestandsformaten naar SVG, PNG, JPEG of BMP.
Hier is C#-code die illustreert hoe u een kaart uit een shapefile naar SVG kunt renderen met behulp van de standaardinstellingen:
// 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 is het resultaat:
Laten we de code eens nader bekijken.
Eerst instantieren we een Map object. Het vertegenwoordigt een verzameling lagen uit verschillende bronnen die kunnen worden weergegeven. Een Map heeft een grootte waarop het bedoeld is om te worden weergegeven. Hier stellen we de kaart in op 800 pixels breed en 400 pixels hoog.
Merk op dat de Map is ingesloten in de using-instructie. Dit is noodzakelijk omdat de map alle toegevoegde bronnen bijhoudt en deze verwijdert wanneer we klaar zijn met renderen en het Map-object wordt verwijderd.
Vervolgens voegen we een laag uit een bestand toe aan de kaart. Elke laag wordt bovenop de vorige laag weergegeven, in de volgorde waarin ze aan de kaart zijn toegevoegd. Zie voor meer details over hoe u vectorlagen kunt openen hier.
Ten slotte roepen we Map.Render aan om de kaart naar een bestand te renderen. We specificeren een pad waar het resultaatbestand moet worden opgeslagen en een renderer die moet worden gebruikt. Klasse Renderers bevat verwijzingen naar alle renderers die bij Aspose.GIS zijn inbegrepen. U kunt bijvoorbeeld Renderers.Png specificeren in plaats van Renderers.Svg in het bovenstaande voorbeeld om de kaart naar een PNG-bestand te renderen.
Geavanceerde Styling
Met de Aspose.GIS API kunt u rendering en featurestijlen aanpassen om de look te krijgen die u wilt.
// 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); | |
} |
Teken raster in kaart
Met Aspose.GIS for .NET kunt u een kaart renderen vanuit rasterformaten.
Render met standaardinstellingen
Hieronder ziet u hoe u een kaart uit een GeoTIFF naar SVG kunt renderen met behulp van de standaardinstellingen:
// 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); | |
} |
Render scheve rasters
Met Aspose.GIS kunt u een raster renderen met scheve rastercellen.
// 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); | |
} |
Render in polaire ruimtelijke referentie
Aspose.GIS stelt u in staat om polaire ruimtelijke referenties te gebruiken bij een kaartrenderingsproces.
// 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); | |
} |