0

浮動小数点 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 
4

1 に答える 1