У меня есть батиметрический tif, показывающий глубину воды (то есть расстояние от поверхности в отрицательных значениях). В arcMap значения варьируются от -1 до -114. Однако, когда я импортирую в R, значения варьируются от 128 до 255 с наименьшими значениями (то есть около 128), соответствующими наиболее глубоким водным областям (то есть около -114). Я предполагаю, что пакет Raster в R преобразует отрицательные значения, но неясно, как это происходит, поскольку это не просто абсолютное значение.
Растр батиметрии в R (растр с отрицательным значением) не считывается правильно
Ответы (1)
Похоже, что программа, создавшая файл, сохранила значения как «подписанный байт», то есть значения в диапазоне от -128 до 127.
Пакет растров использовал библиотеку GDAL для чтения этих файлов. GDAL распознает только «байтовые беззнаковые» значения, то есть в диапазоне от 0 до 255. Это объясняет, почему все значения сдвигаются на 128.
Если вы создадите файл в ArcMap, вы сможете сохранить его, используя другой тип данных.
Я думаю, вы также можете использовать эти обходные пути.
Используйте смещение:
library(raster)
r <- raster('file.tif')
offs(r) <- -128
Или вычислите правильные значения (и, возможно, запишите их в новый файл):
r <- raster('file.tif')
r <- r - 128
r <- writeRaster(r, 'file2.tif', datatype='INT2S')
person
Robert Hijmans
schedule
18.07.2018