I have a raster grid I want to crop according to land borders of the world map provided by the data of the package 'maptools'. By doing some reasearch, I found that I have to use the crop()
function and then the mask()
function, but I get an error message.
Here is my code :
# load the worldmap SpatialPolygonDataFrame
library(maptools)
data(wrld_simpl)
ll=CRS("+init=epsg:4326")
world<-spTransform(wrld_simpl, ll)
ext<-extent(-10.417,31.917,34.083,71.083)
# get only region covering europe
world@bbox<-as.matrix(ext)
# create the origin in WGS84 CRS
ll = CRS("+init=epsg:4326")
origin = SpatialPoints(cbind(7,40),ll)
# create the raster grid
grid = raster()
# define extent and resolution
e = extent(5,18,40,50)
extent(grid)<-e
res(grid)=c(0.08,0.08)
# fill the raster values
grid[] = runif(1:20250)
# crop the grid with worldmap to erase sea areas
test<-crop(grid,world)
rasterize(world,test)
Found 246 region(s) and 3768 polygon(s)
Error in if (x1a > rxmx) { : argument is of length zero
Crop does not crop to the country polygons as you would think. In fact, the
crop(grid, world)
does not really crop anything, as the extent of world is larger than the extent of grid. You can check that by plottingtest
. It's just the same asgrid
.Instead, after
grid[] = runif(1:ncell(grid))
you could do:I believe that's what you're after.