2

R: Crop GeoTiff Raster using packages "rgdal" and "raster" で提起された質問と同様に、元のカラー テーブルを維持しながら、パッケージ "rgdal" および "raster" を使用して、スイス連邦地形局から地図をトリミングしようとしています。 . 単一のバンド *.tif ファイルの場合、トリミングされたイメージはカラー テーブル情報を失うため、適切に表示されません (結果のイメージはほとんど黒になります)。

入力ファイルはここからダウンロードでき、「C:/files」フォルダーに展開する必要があります。これはコードです:

## install.packages("rgdal")
## install.packages("raster")
library("rgdal")
library("raster")
input <- "C:/files/PK25_KOMB_20L_2004_1_1.tif"
output <- "C:/files/cropped.tif"
r <- raster(input)
ex  <- extent(c(600500, 601500, 196500, 197500))
cropped <- crop(r, ex)
writeRaster(cropped, output, format="GTiff", datatype='INT1U', overwrite=TRUE)

前述の投稿で提示されたソリューションは、3 バンドの *.tif に対してのみ機能し、1 バンドの *.tif (サンプル ファイルなど) に対しては機能しませんでした。

機能するはずの解決策は、カラー テーブルを含むシングル バンドの rasterLayer を 3 バンド RGB の rasterStack に変換することです (前述の投稿のコメントで概説されているように)。

ただし、カラー テーブルを保持しながら、単一バンド *.tif を 3 バンド RGB rasterStack に変換する方法がわかりません。この変換を行う方法を知っている人はいますか、または問題を解決するためのより良いアイデアを持っている人はいますか?

4

1 に答える 1

2

これに使用できますgdalUtils::gdalwarp

library(raster)
library(gdalUtils)

データのダウンロード:

download.file(file.path('http://www.swisstopo.admin.ch/internet/swisstopo/de',
                        'home/products/maps/national/digital/national',
                        'pk_25.parsys.89625.downloadList.82162.DownloadFile.tmp',
                        'pk25komblzw.zip'), f <- tempfile())
unzip(f, exdir=tempdir())

でトリミングgdalwarp:

cropped <- gdalwarp(
  file.path(tempdir(), 'PK25_KOMB_20L_2004_1_1.tif'), 
  'cropped.tif', te=c(600500, 196500, 601500, 197500), output_Raster = TRUE)

範囲は として指定する必要があることに注意してくださいc(xmin, ymin, xmax, ymax)。これは、 に使用される順序とは異なりraster::extentます。

動作確認:

plot(raster('cropped.tif'))

ここに画像の説明を入力

于 2015-03-19T23:40:19.867 に答える