Python rasterio栅格重分类向量化操作

文章比较了使用numpy数组循环与向量方法对遥感数据进行重分类的速度,发现向量化方法将处理时间从三个多小时缩短到不到十秒,显著提高了效率。
摘要由CSDN通过智能技术生成

使用rasterio库读取文件

原来使用了numpy数组循环重新赋值的方法,速度非常缓慢,三个多小时

import rasterio
from tqdm import tqdm
with rasterio.open('output_fuel/allveg_buffer1.tif') as src:
    raster_data = src.read(1)  # 读取第一个波段

rows, cols = raster_data.shape
LC_data=raster_data
for i in tqdm(range(rows)):     #tqdm进度条
        for j in range(cols):
            if LC_data[i, j]>51 and LC_data[i, j]<70:
                LC_data[i, j] = 2
            elif LC_data[i, j] == 91 or LC_data[i, j] == 92:
                LC_data[i, j] = 2
            elif LC_data[i, j]>70 and LC_data[i, j]<83:
                LC_data[i, j] = 1
            elif LC_data[i, j]>119 and LC_data[i, j]<131:
                LC_data[i, j] = 3
            elif LC_data[i, j]==152:
                LC_data[i, j] = 3
            elif LC_data[i, j]==153:
                LC_data[i, j] = 5

更改为向量法不到十秒就跑完了

    # 应用向量化的重分类规则
    LC_data = np.zeros_like(raster_data, dtype=np.uint8)  # 初始化重分类后的数组
    LC_data[(raster_data > 51) & (raster_data < 70) | (raster_data == 91) | (raster_data == 92)] = 2
    LC_data[(raster_data > 70) & (raster_data < 83)] = 1
    LC_data[(raster_data > 119) & (raster_data < 131) | (raster_data == 152)] = 3
    LC_data[raster_data == 153] = 5
    LC_data[raster_data == 11] = 5
    LC_data[(raster_data == 180) | (raster_data == 150)] = 4
    # 其他值已经通过初始化为0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值