Raster και Raster Stack στην R

Η ανάρτηση αυτή περιλαμβάνει το περιεχόμενο από το workshop στο FOSSCOMM 2019 στην Λαμία. Για περισσότερες λεπτομέρειες ανατρέξτε στο github repository.

Στόχος του εργαστηρίου είναι η εξοικείωση του χρήστη με το πακέτο raster της R το οποίο προσφέρει την δυνατότητα ανάγνωσης ψηφιδωτών δεδομένων (raster) και επεξεργασίας τους (cropreclassifyreprojectresample κτλ.).

Επιπλέον, θα επικεντρωθούμε στην κλάση raster stack η οποία δημιουργεί συστοιχίες ψηφιδωτών δεδομένων, κατάλληλες για χρονοσειρές και πολυκαναλικές εικόνες.

Η διεξαγωγή του εργαστηρίου θα γίνει μέσω παραδειγμάτων και με την χρήση δεδομένων νυκτερινών φώτων DMSP-OLS Nighttime Lights Time Series (Stable Lights Version 4). Θα προηγηθεί μια σύντομη παρουσίαση των βημάτων και της διαδικασίας ώστε οι χρήστες να αποκτήσουν μια σύντομη αλλά περιεκτική εικόνα του στόχου του εργαστηρίου και των δυνατοτητων που προσφέρει ο προγραμματισμός με την R.

Εγκατάσταση των απαραίτητων βιβλιοθηκών

install.packages(c("raster","ggplot2","rasterVis","rgdal","leaflet"),dependencies=T)

Εισαγωγή των απαραίτητων βιβλιοθηκών

library(raster)
library(ggplot2)
library(rasterVis)
library(rgdal)
library(leaflet)

Ορισμός Working directory

# Επιβεβαίωση ποιο είναι το working directory
getwd()
## [1] "/home/leonidas/Desktop/rworkshop"

Δημιουργία rasterStack Object

myfiles <- list.files(path=file.path("data","dmsp_ols"),  pattern="*.stable_lights.tif$", full.names = TRUE)
s <- raster::stack(myfiles)

Οπτικοποίηση raster stack

plot(s)

Μερικές ιδιότητες του rasterStack

class(s) # ποιάς κλάσης ειναι object?
## [1] "RasterStack"
## attr(,"package")
## [1] "raster"
s@ncols  # πλήθος στηλών 
## [1] 1422
s@nrows  # πλήθος γραμμών
## [1] 1122
s@extent # όρια γεωγραφικής έκτασης
## class      : Extent 
## xmin       : 18.50417 
## xmax       : 30.35417 
## ymin       : 33.8625 
## ymax       : 43.2125
names(s)   # όνομα των επιμέρους raster
##  [1] "F101992.v4b_web.stable_lights" "F101993.v4b_web.stable_lights"
##  [3] "F101994.v4b_web.stable_lights" "F121994.v4b_web.stable_lights"
##  [5] "F121995.v4b_web.stable_lights" "F121996.v4b_web.stable_lights"
##  [7] "F121997.v4b_web.stable_lights" "F121998.v4b_web.stable_lights"
##  [9] "F121999.v4b_web.stable_lights" "F141997.v4b_web.stable_lights"
## [11] "F141998.v4b_web.stable_lights" "F141999.v4b_web.stable_lights"
## [13] "F142000.v4b_web.stable_lights" "F142001.v4b_web.stable_lights"
## [15] "F142002.v4b_web.stable_lights" "F142003.v4b_web.stable_lights"
## [17] "F152000.v4b_web.stable_lights" "F152001.v4b_web.stable_lights"
## [19] "F152002.v4b_web.stable_lights" "F152003.v4b_web.stable_lights"
## [21] "F152004.v4b_web.stable_lights" "F152005.v4b_web.stable_lights"
## [23] "F152006.v4b_web.stable_lights" "F152007.v4b_web.stable_lights"
## [25] "F162004.v4b_web.stable_lights" "F162005.v4b_web.stable_lights"
## [27] "F162006.v4b_web.stable_lights" "F162007.v4b_web.stable_lights"
## [29] "F162008.v4b_web.stable_lights" "F162009.v4b_web.stable_lights"
## [31] "F182010.v4d_web.stable_lights" "F182011.v4c_web.stable_lights"
## [33] "F182012.v4c_web.stable_lights" "F182013.v4c_web.stable_lights"
nlayers(s) # πλήθος raster
## [1] 34
res(s) # resolution των raster
## [1] 0.008333333 0.008333333
inMemory(s) # επαληθέουμε αν τα δεδομένα είναι στην μνήμη
## [1] FALSE
fromDisk(s) # επαληθέουμε αν τα δεδομένα είναι στον δίσκο
## [1] TRUE

Υποσύνολο από layers του stack

sub_s <- subset(s, c(1:5))
plot(sub_s)