আমি জিডিএল'র রাস্টারাইজলায়ার ব্যবহার করে একটি রাস্টারকে একটি শেফফাইল জ্বালানোর চেষ্টা করছি। আমি নির্দিষ্ট পিক্সেল আকার দিয়ে আলাদা শেফফাইল থেকে আগ্রহের রাস্টার ক্ষেত্রটি প্রাক-তৈরি করি। এই এওআইটি নীচের সমস্ত রাস্টেরাইজেশনগুলির জন্য ভিত্তি হিসাবে কাজ করে (একই সংখ্যক সংঘর্ষ এবং সারি, একই প্রক্ষেপণ এবং জিওট্রান্সফর্ম)।
সমস্যাটি তখনই ঘটে যখন আমি একই পিক্সেল আকার এবং অনুমানের ভিত্তিতে আকারগুলি তাদের নিজস্ব রাস্টারগুলিতে পোড়াতে যাই। নীচের লিঙ্কটিতে (ছবিটি পোস্ট করার মতো পর্যাপ্ত প্রতিনিধি নেই), টানটিতে মূল শেফফাইল এবং গাaster় গোলাপী যেখানে রাস্টারাইজ লেয়ার ডেটা জ্বালিয়ে দিয়েছে shows হালকা গোলাপী গা the় গোলাপী রাস্টার ডেটার জন্য নোডা মান। ধূসর হ'ল AOI যার ভিত্তিতে শেফফিল বার্নটি সম্পন্ন হয়েছিল।
শেফফাইল বহুভুজের এক্সটেন্টগুলি দেওয়া, আমি নীচের দুটি কোণে বার্ন মানগুলি এবং সেই সাথে দেখানো ডেটার নীচে দুটি পিক্সেল দেখতে আশা করব। স্পষ্টতই, যদিও, এটি ক্ষেত্রে নয়।
নীচে এই কোডগুলি আমি তৈরি করতে ব্যবহার করি is সমস্ত আকারগুলি কিউজিআইএস ব্যবহার করে তৈরি করা হয়েছিল এবং সমস্তগুলি একই প্রক্ষেপণে তৈরি করা হয়েছিল। (এটি লক্ষ করা উচিত যে প্রদর্শিত ছবিতে গ্রিডিংটি আমি যে পিক্সেল আকারটি ব্যবহার করছিলাম সে সম্পর্কে ধারণা দেওয়ার জন্য))
from osgeo import ogr
from osgeo import gdal
aoi_uri = 'AOI_Raster.tif'
aoi_raster = gdal.Open(aoi_uri)
def new_raster_from_base(base, outputURI, format, nodata, datatype):
cols = base.RasterXSize
rows = base.RasterYSize
projection = base.GetProjection()
geotransform = base.GetGeoTransform()
bands = base.RasterCount
driver = gdal.GetDriverByName(format)
new_raster = driver.Create(str(outputURI), cols, rows, bands, datatype)
new_raster.SetProjection(projection)
new_raster.SetGeoTransform(geotransform)
for i in range(bands):
new_raster.GetRasterBand(i + 1).SetNoDataValue(nodata)
new_raster.GetRasterBand(i + 1).Fill(nodata)
return new_raster
shape_uri = 'activity_3.shp'
shape_datasource = ogr.Open(shape_uri)
shape_layer = shape_datasource.GetLayer()
raster_out = 'new_raster.tif'
raster_dataset = new_raster_from_base(aoi_raster, raster_out, 'GTiff',
-1, gdal.GDT_Int32)
band = raster_dataset.GetRasterBand(1)
nodata = band.GetNoDataValue()
band.Fill(nodata)
gdal.RasterizeLayer(raster_dataset, [1], shape_layer, burn_values=[1])
এটি কি জিডিএল-তে একটি বাগ, বা নির্দিষ্ট পিক্সেল অঞ্চলের মধ্যে বহুভুজের উপস্থিতি বা অভাব ছাড়া অন্য কোনও কিছুর উপর ভিত্তি করে রাস্টারাইজ লাইয়ার জ্বলন্ত ডেটা?