【问题标题】:RasterLayer 16-bits into a RasterLayer 8-bitsRasterLayer 16-bits 变成 RasterLayer 8-bits
【发布时间】:2015-11-04 08:27:06
【问题描述】:

我尝试将 RasterLayer 16 位转换为 RasterLayer 8 位,但没有成功。有什么想法吗?

谢谢!

【问题讨论】:

  • 通过提供minimal reproducible example 来解决您的问题,帮助我们帮助您。
  • 你尝试了什么?你可以做writeRaster(x, filename, datatype='INT1U')

标签: r raster r-raster


【解决方案1】:

如果您想将您的 RasterLayer 从 16 位转换为 8 位,您需要先将值拉伸到 8 位区间(0-255 无符号)。然后你可以将它保存为 8bit 图像:

#sample raster
library(raster)
ras16b <- raster(x=matrix(as.integer(rnorm(180*180,1000,50)),180,180))


#convert to 0-255 using the calc. function and basic raster algebra
ras8b <- calc(ras16b, fun=function(x){((x - min(x)) * 255)/(max(x)- min(x)) + 0})

#export 8b raster
writeRaster(ras8b, '/bla/bla/ras8b.tif', datatype='INT1U')

您可以找到有关如何将值标准化为 0-255 区间here的更多信息

【讨论】:

  • 或者ras8b &lt;- stretch(ras16b, '/bla/bla/ras8b.tif', datatype='INT1U')
  • 我不知道那个功能。感谢分享
猜你喜欢
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 2021-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-26
相关资源
最近更新 更多