我正在使用值填充QGIS插件的新栅格图层。为了重新创建栅格,我使用了Numpy数组。在一个循环中,我用新值填充单元格。对于此示例,我使用的是占位符值,但是该部分工作正常。代码末尾的索引是发生问题的地方。在这种情况下,只有最后一个单元格填充了我想要的值...
for x1, y1 in np.ndenumerate(rast_int_newLU):
for x2, y2 in np.ndenumerate(rast_int_oldLU):
if x1 == x2:
valueB = rast_int_oldLU[x1]
valueA = rast_int_newLU[x2]
dfkey = int(20)
dt = np.float32
a = np.ones(rast_int_oldLU.shape, dtype=dt)
np.around(a, 4)
indexx = x1[0]
indexy = x1[1]
a[indexx][indexy] = dfkey
print("Output:")
print(a)
有人知道哪里出错了吗?
答案 0 :(得分:0)
在@hpaulj的帮助下,我弄清楚了!这是一个典型的初学者错误。数组是在循环内部创建的,因此将其默认值重置为1。只有最后一次迭代不会发生,因此单元格不会转换回1。正确的代码是:
dt = np.float32
a = np.ones(rast_int_oldLU.shape, dtype=dt)
for x1, y1 in np.ndenumerate(rast_int_newLU):
for x2, y2 in np.ndenumerate(rast_int_oldLU):
if x1 == x2:
valueB = rast_int_oldLU[x1]
valueA = rast_int_newLU[x2]
dfkey = int(20)
np.around(a, 4)
indexx = x1[0]
indexy = x1[1]
a[indexx][indexy] = dfkey
print("Output:")
print(a)
现在所有值均为20。从逻辑上讲,可以轻松更改此值:)