Files
courses/2021 Regionale Themen der Fernerkundung/04_Physische_Geographie.R
T

107 lines
2.7 KiB
R

#Preparation
library(rgdal)
library(raster)
setwd('~/Nextcloud/Fernerkundung/Regionale Themen/04')
l5_2011 <- stack("l5_2011_topo.tif")
l8_2014 <- stack("L8_2014_topo.tif")
#NDWI Change analysis
##NDWI and change image (NDWI=Green-SWIR/Green+SWIR)
ndwi2014 <- (l8_2014[[2]] - l8_2014[[5]]) / (l8_2014[[2]] + l8_2014[[5]])
ndwi2011 <- (l5_2011[[2]] - l5_2011[[5]]) / (l5_2011[[2]] + l5_2011[[5]])
###Plot NDWI
plot(ndwi2011, zlim=c(-1,1))
plot(ndwi2014, zlim=c(-1,1))
###Calculate change image
change <- ndwi2011-ndwi2014
###Plot
plot(change)
##Change threshold
plot(density(change))
abline(v = 0.3,
col = 'red')
loss <- change > 0.3
plot(loss)
##Derive change area
lossval <- getValues(loss) #convert the values of the raster to a matrix or vector
table(lossval)
###Area in km/m
area <- table (lossval)[2] * 30 * 30 / 10000
area2 <- table (lossval)[2] * res(change) * res(change) / 10000
print(paste("The results of both variants should be equal: ", area, " = ", area2))
#Vector data
##Download administrative data
adm <- getData ("GADM", country="USA", level=2)
#plot(adm)
##Select specific polygons
adm[adm$NAME_2=='Trinity',]
shasta.county <- adm[adm$NAME_2=='Shasta',]
shasta.county
trinity.county <- adm[adm$NAME_2=='Trinity' & adm$NAME_1=='California',]
trinity.county
###Plot
plot(shasta.county)
plot(trinity.county)
###Combined plot option
counties <- bind(shasta.county, trinity.county)
plot(counties)
##Change projection of geodata in R
crs(shasta.county) #show projection
crs(loss)
shasta.county.utm <- spTransform (shasta.county, crs(loss)) #change projection
trinity.county.utm <- spTransform(trinity.county, crs(loss))
crs (shasta.county.utm)
###Plot
plot(loss)
plot(shasta.county.utm, add=TRUE)
plot(trinity.county.utm, add=TRUE)
##Clip the raster data based on specific polygons
shasta.loss <- mask(loss, shasta.county.utm)
plot(shasta.loss)
trinity.loss <- mask(loss, trinity.county.utm)
plot(trinity.loss)
###Loss area
shasta.lossval <- getValues (shasta.loss)
shasta.area <- table(shasta.lossval)[2] * res(shasta.loss)[1] * res(shasta.loss)[2] / 10000
trinity.lossval <- getValues (trinity.loss)
trinity.area <- table(trinity.lossval)[2] * res(trinity.loss)[1] * res(trinity.loss)[2] / 10000
print(paste("The loss area of Shasta county equals ", shasta.area, " ha."))
print(paste("The loss area of Trinity county equals ", trinity.area, " ha." ))
#Tasselled Cap Wetness
##Calculate TCW
TCW.ls8 <- c(0.1511, 0.1973, 0.3283, 0.3407, -0.7117, -0.4559)
wetness.ls8 <- l8_2014*TCW.ls8
wetness.ls8 <- stackApply(wetness.ls8,rep(1,6),sum)
wetness.ls8 <- stackApply(wetness.ls8,1,sum)
wetcol <- colorRampPalette (c("tan3", "beige","navy"))
plot(wetness.ls8, col=wetcol(255), zlim=c(-0.4,0.1))
#Homework