تقديم خريطة الرسومات إلى صورة SVG، PNG، JPG باستخدام مكتبة GIS C#

نظرة عامة على رسم الخريطة

مع Aspose.GIS لـ .NET C# API يمكنك رسم خريطة من ملف Shapefile، FileGDB، GeoJSON، KML أو أي تنسيقات ملف مدعومة أخرى إلى SVG، PNG، JPEG، أو BMP.

هنا كود C# يوضح كيفية رسم خريطة من ملف shapefile إلى SVG باستخدام الإعدادات الافتراضية:

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

ها هو النتيجة:

رسم الخريطة

دعونا نلقي نظرة أقرب على الكود.

أولاً ، نقوم بإنشاء Map، وهي تمثل مجموعة من الطبقات من مصادر مختلفة يمكن عرضها. يوجد للخريطة حجم مقصود للعرض. هنا نقوم بتعيين الخريطة بأن تكون عرضها 800 بكسل وارتفاعها 400 بكسل.

لاحظ أن الخريطة متضمنة في بيان using. هذا ضروري لأن الخريطة تتتبع جميع الموارد التي تمت إضافتها إليها، وتتخلص منها عندما ننتهي من رسم الخريطة والكائن Map يتم التخلص منه.

بعد ذلك، نضيف طبقة من ملف إلى الخريطة. يتم رسم كل طبقة فوق الطبقة السابقة، بالترتيب الذي تمت إضافته إلى الخريطة. انظر المزيد من التفاصيل حول كيفية فتح الطبقات النوعية هنا.

أخيرًا، نستدعي Map.Render لرسم الخريطة إلى ملف. نحدد مسارًا لحفظ ملف النتيجة ومشغل لاستخدامه. تحتوي الفئة Renderers على مراجع لجميع المشغلات المضمّنة في Aspose.GIS. على سبيل المثال، يمكنك تحديد Renderers.Png بدلاً من Renderers.Svg في المثال أعلاه لرسم الخريطة إلى ملف PNG.

الأنماط المتقدمة

مع Aspose.GIS API، يمكنك تخصيص الرسم والأنماط الميزة من أجل تحقيق المظهر الذي تريده.

الأنماط المتقدة

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

رسم البكسل في الخريطة

مع Aspose.GIS لـ .NET يمكنك رسم خريطة من تنسيقات البكسل.

الرسم بالإعدادات الافتراضية

ها هو كيفية رسم خريطة من GeoTIFF إلى SVG باستخدام الإعدادات الافتراضية:

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

البكسل الافتراضي

رسم بكسل مائلة

مع Aspose.GIS يمكنك رسم بكسل مائلة.

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

البكسل المائل

رسم في الإسناد المكاني القطبي

Aspose.GIS يتيح لك استخدام الإسناد المكاني القطبي في عملية رسم الخريطة.

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

دول جنومونيك