遥感影像叠加,任意波段数tif影像组合
背景
最近处理遥感影像,遇到需要多个数据叠加的需求(类似ENVI中的LayerStacking功能),数据是tif格式,我预期的功能是:
不管是多波段还是单波段数据,统统放到一个方法中处理,最后能够输出多波段叠加的影像就好了。
先是用GDAL初步完成了叠加的效果,但在应用的时候发现需要逐个波段取数据,然后写入到目标文件中,因为我的程序是在python中完成,这样做实际操作中效率很低,于是希望在处理多波段的源数据时,能直接把多波段的array一次性读取并写到目标文件中,也就是避免了单波段遍历-读取-写入这样的操作。
初步的做法-通过GDAL完成
根据以往经验,会采用GDAL来读写tif。查阅了网上大量的文章,大多也是这样处理的,即先通过GetRasterBand()
读源数据中的单个波段,再GetRasterBand(n).ReadAsArray()
取目标文件的对应波段,最后WriteArray()
写入进去。代码大概如下,几乎都是这样写的。
for raster in rasters:
ds_t = gdal.Open(raster)
count = ds_t.RasterCount
# 按波段依次取数据放入新数据对应层
for c in tqdm(range(count), desc='Inner Layers', ncols=80, position=0, leave=True):
band = new_raster.GetRasterBand(band_count +