浮動小数点 32 ビット深度を持つ 100 個までの異なる 4 バンド衛星画像 .tif ラスターがあります。これらを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