# NOT RUN {
library(raster)
library(ggplot2)
## Import Landsat example subset
data(lsat)
## We have two tiny clouds in the east
# }
# NOT RUN {
ggRGB(lsat, stretch = "lin")
# }
# NOT RUN {
## Calculate cloud index
cldmsk <- cloudMask(lsat, blue = 1, tir = 6)
# }
# NOT RUN {
ggR(cldmsk, 2, geom_raster = TRUE)
# }
# NOT RUN {
## Define threshold (re-use the previously calculated index)
## Everything above the threshold is masked
## In addition we apply a region-growing around the core cloud pixels
cldmsk_final <- cloudMask(cldmsk, threshold = 0.1, buffer = 5)
## Plot cloudmask
# }
# NOT RUN {
ggRGB(lsat, stretch = "lin") +
ggR(cldmsk_final[[1]], ggLayer = TRUE, forceCat = TRUE, geom_raster = TRUE) +
scale_fill_manual(values = c("red"), na.value = NA)
# }
# NOT RUN {
#' ## Estimate cloud shadow displacement
## Interactively (click on cloud pixels and the corresponding shadow pixels)
# }
# NOT RUN {
shadow <- cloudShadowMask(lsat, cldmsk_final, nc = 2)
# }
# NOT RUN {
## Non-interactively. Pre-defined shadow displacement estimate (shiftEstimate)
# }
# NOT RUN {
shadow <- cloudShadowMask(lsat, cldmsk_final, shiftEstimate = c(-16,-6))
# }
# NOT RUN {
## Plot
# }
# NOT RUN {
csmask <- raster::merge(cldmsk_final[[1]], shadow)
ggRGB(lsat, stretch = "lin") +
ggR(csmask, ggLayer = TRUE, forceCat = TRUE, geom_raster = TRUE) +
scale_fill_manual(values = c("blue", "yellow"),
labels = c("shadow", "cloud"), na.value = NA)
# }
Run the code above in your browser using DataLab