如何通过R中的波长图制作反射率?

问题描述

我想做一个这样的图表。我看到可以使用pavo R包,但我没有波长或反射率的值,我不太明白我是如何得到它的。我有一个图像(来自无人机),我可以得到它的 RGB 波段值。从那里开始,如何在 R 中进行?

enter image description here

解决方法

这不是在 SO 上要问的问题类型,因为它不涉及任何编程问题,此外,关于您的数据的所有信息都丢失了,因此无法为您创建示例。我不知道无人机携带的是哪种传感器,但如果你想要像你张贴的图像那样的图,你需要几个光谱带(几十到几百个,如高光谱图像)来创建“平滑”的光谱特征示例图像。但是,典型的工作流程是将您的波段导入为例如 rasterStack(或 rasterBrick),然后在某些点位置(通常来自采样设计)提取所有波段的值。这些点必须涵盖您想要创建其光谱特征的所有类别(如果您想要光谱特征,比如说 10 个土地利用类别,采样点必须属于每个土地用途)。最后,只需根据提取的值绘制光谱波段的波长,按土地利用类别分组。

一小段伪代码:

library(raster)
library(ggplot2)
r <- raster(ncol=36,nrow=18,vals=runif(648,300,320))
s <- lapply(seq(100,700,20),function(x)r+x*runif(1))
s <- stack(s)
names(s) <- seq(100,20)+300
xy <- cbind(-50,seq(-80,80,by=20))
sp <- SpatialPoints(xy)
ex <- extract(s,sp,df=T)
ex$ID <- factor(c(1,1,2,3,3))
m <- reshape2::melt(ex,id.vars="ID")
m$ID <- factor(m$ID)
m$variable <- as.numeric(gsub("X","",m$variable))

ggplot(m,aes(x=variable,y=value,col=ID,group=ID))+
  geom_line()