如何在栅格处理中保留栅格数据类型?

Kri*_*tin 5 floating-point integer r raster dataformat

进行栅格数学运算时,例如 raster1-raster2,输出栅格的数据类型为“FLT4S”,即使 raster1 和 raster 2 的数据类型均为“INT2S”。如何强制输出为“INT2S”,而不写入磁盘?是否有一种全局方法可以表示所有光栅处理都应生成 INT2S 数据?

需要“INT2S”而不是“FLT4S”的原因是在较大的栅格数据集上使用 for 循环时节省内存空间并加快处理速度。

在 rasterOptions() 中,可以指定 dataType,但据我了解,这只适用于写入磁盘时,对吧?

#load package raster
require (raster)

#create sample rasters
r1<-raster::raster(ext=extent(c(0,10,0,10)), res=1, vals=1:100)
r2<-raster::raster(ext=extent(c(0,10,0,10)), res=1, vals=100:1)

#set dataType of sample rasters to 'INT2S'
dataType(r1)<-'INT2S'
dataType(r2)<-'INT2S'

#check dataType of sample rasters
dataType(r1)
dataType(r2)

#do some simple arithmetics
r3<-r2-r1

#check the dataType of the output raster
dataType(r3)
Run Code Online (Sandbox Code Playgroud)

我希望 dataType(r3) 也为 'INT2S'

Nat*_*ood 0

我对“INT2U”数据有同样的问题,我不相信这是可能的。AFAIK,R 支持“数字”。浮点可以用“as.integer()”强制转换为“整数”,但我认为它只是被截断了。