使大型光栅文件中除一个以外的所有值都为 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
我有一个从 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