رندر نقشه به تصویر SVG، PNG، JPG با استفاده از کتابخانه GIS C#
بررسی اجمالی رندر نقشه
با API سی شارپ Aspose.GIS for .NET میتوانید یک نقشه را از Shapefile، FileGDB، GeoJSON، KML یا سایر فرمتهای فایل پشتیبانی شده به SVG، PNG، JPEG یا BMP رندر کنید.
در اینجا کد سی شارپ وجود دارد که نشان میدهد چگونه یک نقشه را از یک 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); | |
} |
در اینجا نتیجه آمده است:
بیایید نگاهی دقیقتر به کد داشته باشیم.
اول، یک نقشه را ایجاد میکنیم. این نشاندهنده مجموعهای از لایهها از منابع مختلف است که میتوانند رندر شوند. نقشه دارای اندازهای است که در نظر گرفته شده است تا با آن نمایش داده شود. در اینجا ما نقشه را به عرض 800 پیکسل و ارتفاع 400 پیکسل تنظیم میکنیم.
توجه داشته باشید که نقشه در دستور using قرار دارد. این ضروری است زیرا نقشه تمام منابع اضافه شده به آن را ردیابی میکند و هنگام اتمام رندر و دور انداختن شیء Map، آنها را از بین میبرد.
سپس یک لایه را از یک فایل به نقشه اضافه میکنیم. هر لایه روی لایه قبلی رندر میشود، به ترتیبی که به نقشه اضافه شدهاند. برای اطلاعات بیشتر در مورد نحوه باز کردن لایههای برداری اینجا را ببینید.
در نهایت، Map.Render را فراخوانی میکنیم تا نقشه را در یک فایل رندر کنیم. ما مسیری را برای ذخیره فایل نتیجه و یک رندر کننده برای استفاده مشخص میکنیم. کلاس Renderers شامل مراجعی به تمام رندرکنندههای موجود در Aspose.GIS است. به عنوان مثال، میتوانید Renderers.Png را به جای Renderers.Svg در مثال بالا مشخص کنید تا نقشه را به یک فایل PNG رندر کنید.
استایلبندی پیشرفته
با API Aspose.GIS میتوانید سفارشیسازی رندر و سبکهای ویژگیها را برای دستیابی به ظاهری که میخواهید انجام دهید.
// 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 for .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); | |
} |