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)

在这里插入图片描述

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐