我有两个大光栅,我需要从一个减去另一个得到的差异。光栅阵列太大,无法放入内存,因此我需要分块读取它们并进行减法
所以我相信我可以把每一幅图像作为一个数组块来读,但是我不知道如何减去它们
image1 = '/vsimem/array_size_new.vrt'
image2 = '/vsimem/array_size_old.vrt'
new_image = gdal.Open(image1)
old_image = gdal.Open(image2)
raster_xsize = new_image.RasterXSize
raster_ysize = new_image.RasterYSize
def myfunc(large_raster_file):
in_ds = gdal.Open(large_raster_file, gdal.GA_ReadOnly)
in_band = in_ds.GetRasterBand(1)
block_xsize, block_ysize = in_band.GetBlockSize()
print("Start reading")
for b_y, yoff in enumerate(range(0, in_ds.RasterYSize, block_ysize)):
for b_x, xoff in enumerate(range(0, in_ds.RasterXSize, block_xsize)):
win_xsize, win_ysize = in_band.GetActualBlockSize(b_x, b_y)
img_arr = in_band.ReadAsArray(xoff=xoff, yoff=yoff, \
win_xsize=win_xsize, win_ysize=win_ysize)
return img_arr
那我就得做些
image_Change = myfunc(new_image)-myfunc(old_image)
print (image_Change)
这显然是不正确的,我认为这给了我的想法,我正在努力完成
理想情况下,我的输出将是两个其他数组之间差异的组合数组
目前没有回答
相关问题 更多 >
编程相关推荐