Zobrazení mapy do obrazu SVG, PNG, JPG pomocí knihovny GIS C#
Přehled vykreslování map
S API Aspose.GIS for .NET C# můžete vykreslit mapu ze souboru Shapefile, FileGDB, GeoJSON, KML nebo jiných podporovaných formátů souborů do SVG, PNG, JPEG nebo BMP.
Zde je kód C#, který ilustruje vykreslení mapy ze shapefilu do SVG pomocí výchozího nastavení:
// 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); | |
} |
Zde je výsledek:
Pojďme se podívat na kód blíže.
Nejprve instancujeme objekt Map . Představuje kolekci vrstev z různých zdrojů, které lze vykreslit. Mapa má velikost, ve které má být zobrazena. Zde nastavíme mapu na 800 pixelů širokou a 400 pixelů vysokou.
Všimněte si, že mapa je uzavřena do příkazu using. To je nezbytné, protože mapa sleduje všechny zdroje k ní přidané a uvolní je po dokončení vykreslování a objekt Map je uvolněn.
Dále přidáme vrstvu ze souboru do mapy. Každá vrstva se vykresluje nad předchozí vrstvou v pořadí, v jakém byly do mapy přidány. Další podrobnosti o tom, jak otevřít vektorové vrstvy, naleznete zde.
Nakonec zavoláme Map.Render pro vykreslení mapy do souboru. Určíme cestu, kam uložit výsledný soubor, a renderer k použití. Třída Renderers obsahuje odkazy na všechny renderery obsažené v Aspose.GIS. Například můžete zadat Renderers.Png místo Renderers.Svg v uvedeném příkladu a vykreslit mapu do souboru PNG
Pokročilé stylování
S API Aspose.GIS můžete přizpůsobit vykreslování a styly prvků, abyste dosáhli požadovaného vzhledu.
// 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); | |
} |
Kreslení rastru v mapě
S Aspose.GIS for .NET můžete vykreslit mapu z rastrových formátů.
Vykreslení s výchozím nastavením
Zde je postup pro vykreslení mapy ze souboru GeoTIFF do SVG pomocí výchozího nastavení:
// 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); | |
} |
Vykreslení zkosených rastrů
S Aspose.GIS můžete vykreslit rastr se zkosenými rastrovými buňkami.
// 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); | |
} |
Vykreslení v polárním prostorovém referenčním systému
Aspose.GIS vám umožní používat polární prostorové reference v procesu vykreslování mapy.
// 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); | |
} |