Сделать все значения, кроме одного в большом растровом файле 0

У меня есть большой растровый файл, загруженный с Earth Engine. Я хочу превратить его в логический файл, сохраняя только одно значение (13), и сделать все остальные значения либо NA, либо 0. Файл настолько большой, что при попытке его обработать, происходит сбой QGIS и ArcMap, есть ли способ сделать это? это с помощью GDAL или Bash? Файл представляет собой TIF-файл.

3 ответа

Решение

С R вы можете сделать

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

Или использовать raster::reclassify

Вот решение GDAL:

Ваш вклад input.tif:

gdal_calc.py --calc="A==13" -A input.tif --type=Byte --outfile=output.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

Другие вопросы по тегам