我有一个栅格列表。我想对列表中的栅格进行逐像素加法。 我正在使用 numpy 和 gdal 。我的代码是:
from osgeo import gdal
import numpy as np
def fn():
i0 = r'C:\Add\rst0.tif'
i1 = r'C:\Add\rst1.tif'
i2 = r'C:\Add\rst2.tif'
List = [i0,i1,i2]
res = []
res1=[]
for f in List:
gd = gdal.Open(f)
res.append(gd.GetRasterBand(1).ReadAsArray())
arr = np.array(res)
flat = arr.flatten()
res1.append(flat) #list of flattened arrays
print(flat)
print(res1) #list of flattened arrays
return res1
aa = sum(res1)
print(aa)
我得到该行的错误:
TypeError:“ numpy.ndarray”对象不可调用
我不想做简单的i0+i1+i2
,因为我正在创建一个用户界面,在此用户输入栅格的数目将由用户定义,因此不会被知道。
所以我已经了解到,因为列表res1 []被存储为[array([0,1,2 .... 3,2,9]),array([1,2,3 .. .... 6,7,8]),array([1,6,7,......,7,6,9,])]我得到一个错误,该对象不可调用,因为列表的结构以及列表中是否存在字符串-'array'。我相信会有办法解决这个问题。但是,我是新手,因此将其发布在这里。