在大型光栅文件0中创建所有值但只有一个

时间:2018-02-16 09:45:42

标签: bash raster gdal

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

3 个答案:

答案 0 :(得分:3)

您可以使用大多数Linux发行版上安装的 ImageMagick 来实现,并且可用于macOS和Windows。

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

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

enter image description here

现在用黑色填充,一切都不是价值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

enter image description here

答案 1 :(得分:3)

这是一个gdal解决方案:

您的输入是input.tif

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

答案 2 :(得分:1)

使用R你可以做到

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

或使用raster::reclassify