将RasterLayer 64位转换为RasterLayer 8位,R

时间:2017-11-03 12:00:35

标签: r types geotiff

我正在使用R并使用以下库:raster,sp,rgeos,rgdal

我从SpatialPointsDataFrame创建了一个RasterLayer。 可以使用

轻松导出此栅格
raster::writeRaster(ras8b,
                filename="filepath", format="GTiff" ,
                datatype='INT1U')

我遇到的问题如下: 我需要一个8BitsPerPixel GeoTiff。但是我使用的代码将栅格保存为64位的PerPixel光栅。

我尝试在StackOverflow上找到的几个选项后解决问题。例如: RasterLayer 16-bits into a RasterLayer 8-bits

第一个选项给了我一个8 BitsPerPixel栅格,但没有值,只有NAs。

或者我在这篇文章之后将R中的RasterLayer转换为整数: https://gis.stackexchange.com/questions/175383/round-does-not-return-an-integer-raster-in-r/175384

但是R继续将Raster存储为64 BitsPerPixel Raster。

有人有解决方案吗? 如果您需要更多信息,请告诉我。 非常感谢。最好的问候。

1 个答案:

答案 0 :(得分:0)

似乎工作:

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