【发布时间】:2021-03-26 08:27:03
【问题描述】:
我有大约 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
【问题讨论】:
-
你能改进你的问题吗?你尝试了什么?你想如何扩展?你能提供一个最小的例子吗?你看光栅包的帮助文件了吗?
-
@RobertHijmans,编辑中提供的附加信息。我不确定缩放是如何机械地工作的,例如在 ArcGIS 或 QGIS 中的位深度之间进行转换时,但基本上我希望落入 32 位范围内的每个像素都以 0-65,535 的 16 位范围表示。