使大型光栅文件中除一个以外的所有值都为 0

make all values but one in large raster file 0

我有一个从 Earth Engine 下载的大型光栅文件。我想把它变成一个布尔文件,只保留一个值(13)并将所有其他值设置为 NA 或 0。文件太大以至于当我尝试处理它时 QGIS 和 ArcMap 崩溃了,有没有办法这是使用 GDAL 还是 bash?该文件是一个tif文件。

您可以使用 ImageMagick 来做到这一点,它安装在大多数 Linux 发行版上并且适用于 macOS 和 Windows.

在命令行制作测试图像 - 中间值为 13,周围为红色和蓝色:

convert -size 30x20 xc:"gray(13)"  \
   -bordercolor red  -border 10    \
   -bordercolor blue -border 10 start.tif

现在用黑色填充,所有不是值 13 的东西:

convert start.tif -fill black +opaque "gray(13)" result.tif

或者,更容易看清 - 用青色填充不是值 13 的所有内容,并将值 13 的所有内容更改为黄色:

convert start.tif                  \
   -fill cyan   +opaque "gray(13)" \
   -fill yellow -opaque "gray(13)" result.tif

这是一个 gdal 解决方案:

您的输入是input.tif:

gdal_calc.py --calc="A==13" -A input.tif --type=Byte --outfile=output.tif

使用 R 可以做到

library(raster)
library(rgdal)
r <- raster("input.tif")
x <- calc(r, function(i){ i==13 }, filename="output.tif", datatype="INT1U")

或使用raster::reclassify