Сделать все значения, кроме одного в большом растровом файле 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