QgsRasterLayer转ndarray
目前在QGIS中没看到读取到栅格后怎么转化为nd数组在后台进行一些操作(比如跑个深度学习模型啥的)。于是经过参考和探索,先出了一个折中的办法,将栅格转为nd数组,效率不高,暂时保留,后续发现更好的方法再来更新。代码如下:
import numpy as np
def raster2ndarray(lyr):
'''
input: lyr(QgsMapLayerType.QgsRasterLayer)
output: _(ndarray)
'''
provider= lyr.dataProvider()
# 多少个波段
blocks = []
for c in range(lyr.bandCount()):
blocks.append(provider.block((c + 1), lyr.extent(), lyr.width(), lyr.height()))
values=[]
for i in range(lyr.width()):
tmps = []
for j in range(lyr.height()):
tmps.append([blocks[k].value(i, j) for k in range(lyr.bandCount())])
values.append(tmps)
return np.array(values)