added ws202425 courses

This commit is contained in:
2024-11-14 13:11:04 +01:00
parent 800282c2e8
commit beb31897b1
461 changed files with 20368 additions and 0 deletions
@@ -0,0 +1,109 @@
#Preprocessed data import
l5_2011_rawdn <- stack('L5_2011.tif')
l5_2011_toa <- stack('L5_2011_TOA.tif')
l5_2011_surfref <- stack('L5_2011_sr.tif')
#Rescale data according to metadata
l5_2011_surfref <- -0.2 + l5_2011_surfref*2.75e-05
#Export raster
writeRaster(l5_2011_surfref, 'L5_2011_sr_rescaled.tif', Format='GTiff', overwrite= TRUE)
#Remove negative values, set negative to 0, above 1 values to 1
l5_2011_surfref <- reclassify(l5_2011_surfref, c(-Inf,0,0,1,Inf,1))
#Plot
plotRGB(l5_2011_rawdn, 3,2,1, stretch='lin')
plotRGB(l5_2011_toa, 3,2,1, stretch='lin')
plotRGB(l5_2011_surfref, 3,2,1, stretch='lin')
#
lambda <- c(480, 560, 655, 865, 1610, 2150)
#Pick a spot with vegetation and show the spectra
plotRGB(l5_2011_surfref, r=4, g=3, b=2, stretch="lin")
pxy<-locator(1) # This function requires an input! -> Click once in the image on a vegetated area --> then wait!
spectrum_rawdn<-extract(l5_2011_rawdn, cbind(pxy$x[1], pxy$y[1]))
spectrum_toa<-extract(l5_2011_toa, cbind(pxy$x[1], pxy$y[1]))
spectrum_surfref<-extract(l5_2011_surfref, cbind(pxy$x[1], pxy$y[1]))
dev.off()
par(mfrow=c(1,3))
plot(lambda, spectrum_rawdn,
ylab="raw DN",
xlab="wavelength (nm)", type='b')
plot(lambda, spectrum_toa,
ylab="ToA reflectance",
xlab="wavelength (nm)", type='b')
plot(lambda, spectrum_surfref,
ylab="Surface reflectance",
xlab="wavelength (nm)", type='b')
#Load terrain correction file
dem <- stack('/Users/huaqo/Downloads/SRTM_ffB01_p045r032.tif')
#Match to images
dem <- resample(dem, l5_2011_surfref)
#Calculate slope and aspect
slp <- terrain (dem, opt='slope')
asp <- terrain (dem, opt='aspect')
#Input sun position
theta_e <- 49.6590900
theta_a <- 144.56665673
#Calculate the hillshade
hs2011 <- hillShade(slp,asp, angle = theta_e, direction = theta_a)
#Plot hillshade
plot(hs2011, col=grey.colors(255), zlim=c(0,1))
summary(hs2011)
#Reclassify data
hs2011 <- reclassify(hs2011, matrix(c(-Inf, 0, 0.0), 1, 3))
#Topographic normalization with hillshade
l5_2011_topo <- l5_2011_surfref*cos((90-theta_e)/180*pi) / hs2011
#Export
writeRaster(l5_2011_topo, 'l5_2011_topo.tif', format='GTiff', overwrite=TRUE)
#Plot
par(mfrow=c(1,2))
plotRGB(l5_2011_surfref, r=4, g=3, b=2, stretch="lin")
plotRGB(l5_2011_topo, r=4, g=3, b=2, stretch="lin")
#Export Plot
savePlot('topographic correction', type='jpeg')
#Read shapefile with two example points
points <- readOGR('/Users/huaqo/Downloads/shape/points.shp')
#Plot points
plotRGB(l5_2011_surfref,4,3,2, stretch='lin')
plot(points, col=c('green', 'orange'), pch=19, add=TRUE)
#Extract pixel values below points
spectrum_surfref <- extract(l5_2011_surfref, points)
spectrum_topo <- extract(l5_2011_topo, points)
spectrum_surfref
spectrum_topo
#Plot spectra
x11()
par(mfrow=c(2,2))
plot(lambda, spectrum_surfref[2,],
ylab="Surface reflectance",
xlab="wavelength (nm)", type='b', ylim=c(0,0.4), main="no topo - illuminated")
plot(lambda, spectrum_surfref[1,],
ylab="Surface reflectance",
xlab="wavelength (nm)", type='b', ylim=c(0,0.4), main="no topo - shaded")
plot(lambda,spectrum_topo[2,],
ylab="Surface reflectance",
xlab="wavelength (nm)", type='b', ylim=c(0,0.4), main="topo - illuminated")
plot(lambda,spectrum_topo[1,],
ylab="Surface reflectance",
xlab="wavelength (nm)", type='b', ylim=c(0,0.4), main="topo - shaded")