首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R: Landsat8 DN到反射率转换

R: Landsat8 DN到反射率转换
EN

Stack Overflow用户
提问于 2016-04-20 12:08:34
回答 1查看 605关注 0票数 1

对于使用卫星图像NDVI的灌溉清单,我需要将Landsat 8图像从DN转换为反射率。在R中,有两个包(Landsat和Landsat8)具有要转换的函数,但是这些函数的输出是一个大的“数字”类。

输入是不同的: SpatialGridDataframe (参见函数描述)。我尝试过这两种方法,但是不能将它们转换为光栅或SpatialGridDataframe。“数字”类不适合进一步计算(NDVI、图像校正或绘图)。有办法把这个转化吗?我可以请您帮个忙吗?

谢谢!

代码语言:javascript
复制
#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..
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-20 14:40:56

要么立即处理整个RasterStack,要么如果要处理一个层,将"SpatialGridDataFrame“强制移到不同的位置。

代码语言:javascript
复制
...
y <- stack( CR) # stack as RasterStack
ty <- as(y, "SpatialGridDataFrame")

#landsat8- package:
ytest <- reflconv(ty, 2.0E-5, -0.1)
class(ytest) # "SpatialGridDataFrame"

代码语言:javascript
复制
...
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的一个层会给出一个向量。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36743318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档