Python 使用rasterio将数组按照指定格式写入内存

在进行栅格矢量数据处理时,我们常常需要将数组转化为栅格影像,再对栅格数据进行后续处理,输出最终结果。

常见的做法是先在本地磁盘生成栅格数据,再进行处理输出。但是,如果数组转化的栅格数据不是最终结果,存储在磁盘中会浪费空间,且整套代码显得不是很优雅。

此时,我们可以利用rasterio的MemoryFile将数据写入内存。具体使用方法如下:

import numpy as np
import rasterio.mask
from rasterio import MemoryFile

arr = np.random.randint(0, 255, size=(200, 200, 1))
src_ras_file = './raster_prj.tif'  # 提供地理坐标信息的栅格底图

with rasterio.open(src_ras_file) as raster:
    height = arr.shape[0]  # 数组的行数
    width = arr.shape[1]  # 数组的列数
    crs = raster.crs  # 投影信息
    trans = raster.transform  # 仿射变换信息
    nodata = raster.nodata  # nodata填充

    # 将数组数据写入内存文件
with MemoryFile() as memfile:
    with memfile.open(driver='GTiff', width=width, height=height, count=1, crs=crs, transform=trans, dtype=float,
                      nodata=nodata) as raster_data:
        raster_data.write(arr)
        ## 这里的raster_data相当于rasterio.open(raster_file), 可用于后续处理过程,如转矢量等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小李AI飞刀^_^

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值