R - 导入然后导出多波段 RGB 航拍图像 .tif

R - Import then export multiband RGB aerial image .tif

我想导入.tif 格式的航拍图,然后以相同的颜色格式导出。我想这是一个简单的任务,但我找不到办法去做。在 Windows 照片查看器和 Google 地球中查看时,原始文件是彩色的,但导出的文件是黑白的。

最终,我想 crop/merge 多幅图像从大约 6 个图块创建一个航拍图像地图。在这 6 个图块中,我只对大约 30% 的区域感兴趣(水面上的部分,加上约 20 米的缓冲区),所以我的想法是通过将我想要的部分保持为一个来减少图像大小文件,而不是导入所有 6 个图块。我可以在 Google 地球中打开一个 .tif 作为彩色航拍图像,这就是我想要的自定义边界 map/image。

目前,我正在努力以相同的 Google 地球可读彩色图像格式导入然后导出单个 .tif。我正在使用 raster 将文件导入 R,并尝试使用 writeRaster 导出,但在 GE 中查看时图像是黑白的。我相信这可能意味着图像只渲染图像的单个 (RGB) 层?但是,R 中的 plotRGB() 能够用彩色绘制它。

您可以从 my Google Drive, or search for it on Elvis 下载我正在使用的文件(来自澳大利亚首都特区内部的卫星图像数据,大约为 -35.467437、148.824043)。感谢您对某些说明的任何帮助或指导。

这是我目前所处的位置...

# import and plot the tif - plots nicely in colour
brick('ACT2017-RGB-10cm_6656073_55_0001_0001.tif') %>% 
  plotRGB

这是我在 plotRGB() 中看到的,也是我在 Google 地球中打开原件时看到的(这是所需的输出颜色)。

# export
brick('ACT2017-RGB-10cm_6656073_55_0001_0001.tif') %>% 
  writeRaster('my_output.tif')

# then import the export
brick('my_output.tif') %>% 
  plotRGB

my_export.tif R 中的彩色图,但 Google Earth 中的黑白图。

这是使用 terraraster 的替代品)的方法。为了让这个例子运行良好,您需要 1.4-1 或更高版本;当前是开发版本,您可以使用 install.packages('terra', repos='https://rspatial.r-universe.dev')

安装
library(terra)
f <- 'ACT2017-RGB-10cm_6656073_55_0001_0001.tif'
r <- rast(f)
plot(r)

由于这是“RGB”图像,因此无需显式调用 plotRGB

我为这个例子创建了两个子图像

ex <- ext(665000, 665500, 6073000, 6073500)
x <- crop(r, ex)
ey <- ext(665500, 666000, 6073500, 6074000)
y <- crop(r, ey)

他们看起来还是不错的
plot(x)
plot(y)

现在合并它们

m <- merge(x, y)

合并后RGB、通道丢失,需要重新声明

RGB(m) <- 1:3

并且可以写入磁盘

z <- writeRaster(m, "test.tif", overwrite=TRUE)
plot(z)