107 lines
2.7 KiB
R
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
|
|
|
|
|
|
|
|
|