我想使用以下方法对景观图像进行辐射校正:
radiocorr(x, gain, offset, Grescale, Brescale, sunelev, satzenith, edist, Esun,
Lhaze, method = "apparentreflectance")
我对每个乐队进行了修正,如下所示:
B1 <- readGDAL("_X20060509_B_1.tif")
B1.ar<-radiocorr(x = B1, Grescale = 0.76583, Brescale = -2.28583, sunelev = 43.99853366,
satzenith = 0, edist = 1.0095786, Esun = 1983, method = "apparentreflectance")
writeGDAL(B1.ar, "C:/Users/Documents/ Reflectance/B1.tif", drivername="GTiff")
如何使一个功能自动执行六个波段的校正? 我试过这个功能:
atmcor <- function(img, i) {
x<-img[[i]]
Grescale<-gain[i,2]
Brescale<-bias[i,2]
sunelev<-sunelevation[i,2]
satzenith=0
edist<-edistance[i,2]
Esun<-Esun[1,2]
method = "apparentreflectance"
B.ar<-radiocorr(x, Grescale, Brescale, sunelev, satzenith, edist, Esun, method)
return(B.ar)
}
ATMCOR <- atmcor(landsat_stack, 1)
但是,我收到了这个错误: (数组中的错误(x,c(length(x),1L),if(!is.null(names(x)))list(names(x),: 长度&#39; dimnames&#39; [1]不等于数组范围)
答案 0 :(得分:0)
如果您只想在一个执行块中对所有波段进行辐射校准,您还需要加载元数据文件。 因此,您可以采用多种形式。但以下代码可以轻松解决您的问题。
radCor(img, metaData, method = "apref", bandSet = "full", hazeValues,
hazeBands, atmosphere, darkProp = 0.01, clamp = TRUE, verbose)
当您将bandSet设置为“full”时,将处理太阳区域中的所有波段。