added ws202425 courses
This commit is contained in:
@@ -0,0 +1,103 @@
|
||||
#Intro
|
||||
|
||||
##Packages
|
||||
library(raster)
|
||||
library(rgdal)
|
||||
library(randomForest)
|
||||
|
||||
##Working directory
|
||||
setwd('/Users/huaqo/Nextcloud/Fernerkundung/Projektbezogenes Arbeiten/04')
|
||||
|
||||
##Load data
|
||||
img <- brick("landsat8_satellit_randomForest.tif")
|
||||
shp <- shapefile("Trainingsdaten_landsat8_RF.shp")
|
||||
getwd()
|
||||
dir()
|
||||
img
|
||||
shp
|
||||
|
||||
##Coordinate system
|
||||
compareCRS(shp, img) #Compare coordinate systems
|
||||
shp <-spTransform(shp, crs(img)) #Overwrite coordinate system
|
||||
|
||||
##Plot data
|
||||
plotRGB(img, r = 4, g = 3, b = 2, stretch = "lin")
|
||||
plot(shp, col = "yellow", add = TRUE)
|
||||
|
||||
#Preprocessing of shapefile
|
||||
levels(as.factor(shp$classes)) #Show all classes
|
||||
for (i in 1: length(unique(shp$classes))) {
|
||||
cat(paste0(i,"", levels(as.factor(shp$classes))[i], sep= "\n"))
|
||||
} #assignment of numerical values to classes
|
||||
|
||||
#Create trainingdata
|
||||
|
||||
##Extract Pixelvalues
|
||||
smp <- extract(img, shp, df = TRUE) #Extract and merge
|
||||
save(smp , file = "smp.rda") #save file in wd
|
||||
load(file = 'smp.rda') #load file from wd
|
||||
|
||||
##Merge trainingdate with classes
|
||||
smp$cl <- as.factor(shp$classes[match(smp$ID, seq(nrow(shp)))]) #merge
|
||||
smp <- smp[-1]
|
||||
summary(smp$cl) #show assignment
|
||||
str(smp) #show data
|
||||
|
||||
#Create random forest modell
|
||||
|
||||
##Downsampling and get sample size of classification
|
||||
smp.size <- rep(min(summary(smp$cl)), nlevels(smp$cl))
|
||||
smp.size
|
||||
|
||||
##Modell
|
||||
rfmodel <- tuneRF(x = smp[-ncol(smp)],
|
||||
y = smp$cl,
|
||||
sampsize = smp.size,
|
||||
strata = smp$cl,
|
||||
ntree = 250,
|
||||
importance = TRUE,
|
||||
doBest = TRUE)
|
||||
rfmodel #show modell
|
||||
|
||||
##Plot Statistical information
|
||||
x11()
|
||||
varImpPlot(rfmodel)
|
||||
|
||||
x11()
|
||||
plot(rfmodel, col = c("violet", "tan4", "blueviolet",
|
||||
"yellowgreen", "green4", "blue"))
|
||||
save(rfmodel, file = "rfmodel.RData")
|
||||
|
||||
#Classification
|
||||
##Show modell as image
|
||||
result <- predict(img,
|
||||
rfmodel,
|
||||
filename = 'Ergebnis.tif',
|
||||
overwrite = TRUE)
|
||||
|
||||
##Plot results
|
||||
plot(result,
|
||||
axes = FALSE,
|
||||
box = FALSE,
|
||||
col= c("violet",
|
||||
"tan4",
|
||||
"blueviolet",
|
||||
"yellowgreen",
|
||||
"green4",
|
||||
"blue"))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user