我有大约 100 个不同的 4 波段卫星图像 .tif 栅格,它们具有浮点 32 位深度。我需要在缩放像素值时将这些转换为 R 中的 16 位无符号数(不仅仅是丢弃高值),但我不知道从哪里开始,即使是单个栅格,更不用说整个批次了。任何帮助将非常感激!
编辑更多信息:我在光栅包文档中搜索了位、像素和深度关键字,但运气不佳。根据 dataType() 下的最小/最大像素值信息判断,我想从 FLT4S(32 位浮点)到 INT2U(16 位)。我尝试使用 writeRaster() 设置数据类型,如示例中所示,但输出只是黑白图像而不是普通卫星图像。
image
class : RasterStack
dimensions : 4300, 8909, 38308700, 4 (nrow, ncol, ncell, nlayers)
resolution : 3, 3 (x, y)
extent : 691032, 717759, 57492, 70392 (xmin, xmax, ymin, ymax)
crs : +proj=utm +zone=17 +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0
names : image.1, image.2, image.3, image.4
min values : 7.244503e-02, 8.278998e-02, 2.286164e-05, 8.571137e-02
max values : 0.5347134, 0.3522218, 0.4896736, 0.7308348
dataType(image) #[1] "FLT4S" "FLT4S" "FLT4S" "FLT4S"
image2 = writeRaster(image, 'new.tif', datatype='INT2U', overwrite=TRUE, format="GTiff")
dataType(image2) #[1] "INT2U"
image2
class : RasterBrick
dimensions : 4300, 8909, 38308700, 4 (nrow, ncol, ncell, nlayers)
resolution : 3, 3 (x, y)
extent : 691032, 717759, 57492, 70392 (xmin, xmax, ymin, ymax)
crs : +proj=utm +zone=17 +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0
source : new.tif
names : new.1, new.2, new.3, new.4
min values : 0, 0, 0, 0
max values : 1, 0, 0, 1