Estoy tratando de resolver el siguiente problema.
Tengo una malla regular de puntos que cubre Europa
nx <- 361 ; ny <- 181
xmin <- -30.0 ; ymin <- 25.0
dx <- 0.25 ; dy <- 0.25
lat <- seq(ymin, ymin+(ny-1)*dy, dy)
lon <- seq(xmin, xmin+(nx-1)*dx, dx)
Lo que necesito hacer es asociar el país para cada celda de la cuadrícula y hacer operaciones en los países.
Por ejemplo, tengo que multiplicar la densidad de población de Francia, España, Polonia, etc) por un determinado factor.
He producido un feo script para ocultar la cuadrícula de coordenadas de cada país, los nombres, pero no es muy práctico y me preguntaba si hay una manera más eficiente de hacerlo.
Aquí está el código que me han producido :
m <- matrix(1, ncol=nx, nrow=ny) # create grid with unit (or whatever) value
n <- vector(mode='character', length=nx*ny) # empty character vector with same length as raster of grid
EUstates <- c('AUT', 'BEL', 'BGR', 'HRV', 'CYP', 'CZE', 'DNK', 'EST', 'FIN', 'FRA', 'DEU', 'GRC',
'HUN', 'IRL', 'ITA', 'LVA', 'LTU', 'LUX', 'MLT', 'NLD', 'POL', 'PRT', 'ROU', 'SVK',
'SVN', 'ESP', 'SWE', 'GBR')
r = raster( m, xmn=xmin,xmx=max(lon),ymn=ymin,ymx=max(lat)) # create a raster of grid 'm' to be used for masking
# now loop through EU countries for masking
for (c in EUstates){
EUc <- getData("GADM", country=c, level=0)
rr <- mask(r, EUc) # assigns NAN to whichever is outsided country c
n[which(!is.na(rr@data@values))] <- c # assign country name to cells that are not NAN
}
n[which(n=='')] <-'SEA' # all remaining empty cells assigned as 'SEA'