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ç:

harita renderlama

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.

gelişmiş stil

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

varsayılan raster

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

eğik raster

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

gnomonik ülkeler