Harita Renderlamayı Görüntü SVG, PNG, JPG'ye Dönüştürme GIS C# Kütüphanesi
Harita Renderlama Genel Bakışı
Aspose.GIS for .NET C# API ile bir Shapefile, FileGDB, GeoJSON, KML veya diğer desteklenen dosya formatlarından SVG, PNG, JPEG veya BMP’ye harita renderlayabilirsiniz.
İşte bir shapefile’dan varsayılan ayarlarla SVG’ye harita renderlamanın nasıl yapılacağını gösteren C# kodu:
// 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); | |
} |
İşte sonuç:
Koda daha yakından bakalım.
Önce bir Harita nesnesi örneklendiriyoruz. Çeşitli kaynaklardan gelen katmanların koleksiyonunu temsil eder ve renderlanabilir. Bir Harita’nın, görüntülenmesi amaçlanan bir boyutu vardır. Burada haritayı 800 piksel genişliğinde ve 400 piksel yüksekliğinde ayarlıyoruz.
Haritanın using ifadesi içine alındığına dikkat edin. Bu gereklidir çünkü harita eklenen tüm kaynakları takip eder ve renderlama tamamlandığında ve Harita nesnesi imha edildiğinde bunları ortadan kaldırır.
Daha sonra bir dosyadan katmanı haritaya ekliyoruz. Her katman, eklendiği sıraya göre önceki katmanın üzerine renderlanır. Vektör katmanlarını nasıl açacağınız hakkında daha fazla ayrıntı için burada bakın.
Son olarak, haritayı bir dosyaya renderlamak için Harita.Render çağırıyoruz. Sonuç dosyasını kaydetmek istediğiniz yolu ve kullanmak istediğiniz renderlayıcıyı belirtiyoruz. Renderlayıcılar sınıfı, Aspose.GIS ile birlikte gelen tüm renderlayıcılara referanslar içerir. Örneğin, yukarıdaki örnekte haritayı PNG dosyasına renderlamak için Renderlayıcılar.Png’yi Renderlayıcılar.Svg yerine belirtebilirsiniz.
Gelişmiş Stil
Aspose.GIS API ile istediğiniz görünümü elde etmek için renderlamayı ve özellik stillerini özelleştirebilirsiniz.
// 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); | |
} |
Haritaya raster çizme
Aspose.GIS for .NET ile raster formatlarından harita renderlayabilirsiniz.
Varsayılan ayarlarla renderlama
İşte GeoTIFF’ten varsayılan ayarlarla SVG’ye bir haritanın nasıl renderlanacağına dair bir örnek:
// 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); | |
} |
Eğik rasterları renderlama
Aspose.GIS ile eğik raster hücreleri olan bir rasterı renderlayabilirsiniz.
// 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); | |
} |
Kutup koordinat referansında renderlama
Aspose.GIS, harita renderleme sürecinde kutup koordinat referanslarını kullanmanıza olanak tanır.
// 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); | |
} |