我的测深仪tif显示水深(即距表面的距离为负值)。在arcMap中,值的范围是-1至-114。但是,当我导入到R时,该值的范围从128到255,最小值(即128附近)对应于最深的水域(即-114附近)。我想象R中的Raster包会转换负值,但是还不知道如何转换,因为它不仅是绝对值。
答案 0 :(得分:0)
似乎创建文件的软件将这些值存储为“有符号字节”,即-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')