用Rasterio将栅格单元格设置为零以表示无数据

4

给定一个随机的栅格tif文件,我想使用Python/rasterio将所有值为0的单元格设置为“无数据”。我似乎找不到有关这个简单操作的文档。

import rasterio

src = rasterio.open('some_grid.tif')
...........

使用R语言的raster软件包,我比较熟练,我会像这样执行该操作:

library(raster)

rast <- raster('some_grid.tif')
rast[rast == 0] <- NA
1个回答

10

在Python中,类似的语法是先将tif文件读入numpy数组。array==0会生成一个布尔数组,然后可以将其用作索引掩码来设置所需值为NAN。

import rasterio
import numpy as np

with rasterio.open('some_grid.tif') as src:
    array = src.read(1)

array[array==0] = np.nan

你能否在回答中增加一些上下文和解释呢?仅有代码的回答不如解释清楚这段代码的作用那样有用。这样也可以帮助未来的读者。 - Ralf
谢谢,我添加了一些关于掩码过程的描述。 - Christoph Rieke
1
但是在整数数据类型光栅的情况下,将会发生错误ValueError: cannot convert float NaN to integer - dhiraj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接