我正在尝试为两个多波段图像运行马赛克。输出保存为单波段

时间:2018-04-17 13:06:01

标签: r mosaic

这是我得到的最终输出,我应该将最终输出作为带有两个波段的单个文件:

enter image description here

以下是我正在使用的代码:

A11 <-brick("E:/Official/PROJECTS/R_Progrm/1.tif") // to read multiband image
B11<-brick("E:/Official/PROJECTS/R_Progrm/3.tif")  // To read multiband image
mos1 <- mosaic(A11,B11,fun=max,tolerance=0.5, 
filename="Mosaic_new",overwrite=TRUE)
plot(mos1,main="Mosaic_new1")
writeRaster(x=mos1,file="E:/Official/PROJECTS/R_Progrm/M11.tif",options="INTERLEAVE=BAND",format="GTiff",datatype="FLT8S",overwrite=TRUE)

2 个答案:

答案 0 :(得分:0)

rm(list = ls())
gc() 
memory.limit(size= 2000)
library(rgdal)
library(raster)
install.packages("gdalUtils")
library(gdalUtils)
library(sp)
setwd("E:/Official/PROJECTS/R_Progrm/MOs/")
list.files()
file1=file.path(getwd(), "", "1.tif")
gdal_setInstallation()
valid_install <- !is.null(getOption("gdalUtils_gdalPath"))
if(require(raster) && require(rgdal) && valid_install)
{
 layer1 <- file.path(getwd(), "", "1.tif")
 layer2 <- file.path(getwd(), "", "3.tif")
 file_list=c(layer1,layer2)
 mosaic_rasters(gdalfile=file_list,dst_dataset="E:/Official/PROJECTS/R_Progrm/MOs//test_mosaic.GTiff",separate=TRUE,of="GTiff",verbose=TRUE)
gdalinfo("test_mosaic.GTiff")
}  

答案 1 :(得分:0)

您在问题中显示的图表显示了输出图像的两个波段。因此,您的代码及其输出应该没有任何问题。如果问题与将所有波段可视化为RGB图像有关,则必须修改绘图功能的参数,这意味着您必须提供波段组合。例如:

plotRGB(a, r = 4, g = 3, b = 2, axes=TRUE, main="3 Band Color Composite Image")
box(col="white")

此外,您可以尝试下面给出的代码,这对我来说很好,我希望它能解决您的问题。

a <- stack("Path to first raster")
b <- stack("Path to second raster")
rast.list <- list(a,b)     
rast.list$fun <- mean
rast.mosaic <- do.call(mosaic,rast.list)
plot(rast.mosaic)
writeRaster(rast.mosaic,"Output_Raster_Name",format="GTiff",overwrite=TRUE)