对于使用卫星图像NDVI的灌溉清单,我需要将Landsat 8图像从DN转换为反射率。在R中,有两个包(Landsat和Landsat8)具有要转换的函数,但是这些函数的输出是一个大的“数字”类。
输入是不同的: SpatialGridDataframe (参见函数描述)。我尝试过这两种方法,但是不能将它们转换为光栅或SpatialGridDataframe。“数字”类不适合进一步计算(NDVI、图像校正或绘图)。有办法把这个转化吗?我可以请您帮个忙吗?
谢谢!
#BAND 4
R4 <- list()
R4 <- lapply(j, FUN = function(x) {raster(paste0('LC81700merged2014',x,'LGN00_B4.tif'))})
names(R4) <- paste0("R4",j)
Jab=readShapeSpatial('E:/Maps/GIS Data/Jabi IrrigationSchemes/Jabi_Irrigation_Schemes_UTM.shp')
CR <- lapply(R4, FUN=function(x) {crop(x, extent(Jab), snap="out")})
y <- stack( CR) # stack as RasterStack
ty <- as(y, "SpatialGridDataFrame")
#landsat8- package:
ytest <- reflconv(ty$R4016,2.0E-5,-0.1)
class(ytest) #numeric class
ytest[ytest==-0.1] <- NA
tsa <- as.raster(ytest, max=1)
class(tsa) #raster Object
y.tsa <- rasterize(tsa,background=NA,mask=FALSE, update=FALSE) #not working
#alternative landsat-package
jan16 <-radiocorr(ty$R4016,Grescale=L.var[4,4],Brescale=L.var[4,5],sunelev=SunEvel[1,2],edist=ESdist('2014-01-16'),
Esun=L.var[4,6],method= "apparentreflectance")
class(jan16) #numeric class again..发布于 2016-04-20 14:40:56
要么立即处理整个RasterStack,要么如果要处理一个层,将"SpatialGridDataFrame“强制移到不同的位置。
...
y <- stack( CR) # stack as RasterStack
ty <- as(y, "SpatialGridDataFrame")
#landsat8- package:
ytest <- reflconv(ty, 2.0E-5, -0.1)
class(ytest) # "SpatialGridDataFrame"或
...
y <- stack( CR) # stack as RasterStack
#landsat8- package:
ty <- as(y$R4016, "SpatialGridDataFrame")
ytest <- reflconv(ty, 2.0E-5, -0.1)
class(ytest) # "SpatialGridDataFrame"自反转换需要一个SpatialGridDataFrame,而得到一个SpatialGridDataFrame的一个层会给出一个向量。
https://stackoverflow.com/questions/36743318
复制相似问题