r-raster - R 中的水深测量栅格(负值栅格)未正确读取
问题描述
我有一个显示水深的测深 tif(即,与表面的距离为负值)。在 arcMap 中,值的范围是 -1 到 -114。但是,当我导入到 R 时,值的范围从 128 到 255,其中最小值(即接近 128)对应于最深的水域(即接近 -114)。我想 Raster 包中的 Raster 包转换负值,但不清楚如何,因为它不仅仅是绝对值。
解决方案
似乎创建文件的软件将这些值存储为“有符号字节”,即范围从 -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')
推荐阅读
- smartcard - 我想使用 ES3.CreateISDP 函数在 eUICC 上创建一个安全域
- go - 初始化嵌套匿名结构
- amazon-web-services - 尽管禁用了 VPC DNS 主机名,boto3 instance.private_dns_name 仍会返回
- javascript - JS中空二维数组的长度是多少?
- node.js - Sentry: express api basic auth 中间件使sentry无法工作
- safari - 在 Safari 上播放 base64 webm 音频
- java - 为Android App创建基于Touch坐标的自定义手势
- highcharts - yAxis 调整受控轴上一个选项的大小不起作用 Highcharts
- type-conversion - grok 模式失败,无法使用 logstash 转换为浮点数
- c# - 在 MVC 正则表达式中允许一些但不是所有的空格