我正在使用 R 并使用以下库:raster、sp、rgeos、rgdal
我从 SpatialPointsDataFrame 创建了一个 RasterLayer。 可以使用
轻松导出该栅格raster::writeRaster(ras8b,
filename="filepath", format="GTiff" ,
datatype='INT1U')
我遇到的问题如下: 我需要一个 8BitsPerPixel GeoTiff。但我使用的代码将栅格保存为 64 BitsPerPixel Raster。
我尝试按照在 StackOverflow 上找到的几个选项来解决该问题。例如: RasterLayer 16-bits into a RasterLayer 8-bits
第一个选项为我提供了 8 BitsPerPixel 栅格,但其中没有值,只有 NA。
或者我按照这篇文章将 R 中的 RasterLayer 转换为整数: https://gis.stackexchange.com/questions/175383/round-does-not-return-an-integer-raster-in-r/175384
但 R 继续将栅格存储为 64 位每像素栅格。
有人有解决办法吗? 如果您需要更多信息,请告诉我。 多谢。谨致问候。
最佳答案
似乎有效:
library(raster)
r <- raster(ncol=10,nrow=10)
r[] <- 1:100
x <- writeRaster(r, 'test.tif', datatype='INT1U', overwrite=TRUE)
dataType(x)
#[1] "INT1U"
library(rgdal)
GDALinfo('test.tif')
# GDType hasNoDataValue NoDataValue blockSize1 blockSize2
#1 Byte TRUE 255 10 10
但请注意,此格式仅存储 0 - 255 之间的值。所有其他值都变为 NA
关于使用 R 将 RasterLayer 64 位转换为 RasterLayer 8 位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47095293/