Hi everyone,
I have a very large shapefile with many polygons (17769 polygons, 104.4 Mb),
which I want to convert to a raster file. A grid cell can be covered by either
none, 1 or several polygons. I want to assign the percentage cover of polygons
to the respective grid cell, just like the function rasterize (x, y,
getCover=TRUE) does. The big problem ist, that the rasterize function only notes
those polygons covering the center of the grid cell and ignores all others. So,
I lose more than half of my data set when applying this. The second problem is
that my data is very large. I tried this (see below), but it is very slow and at
some point crashes down (but works for smaller data sets):
(r = raster, ln = shapefile with polygons)
rp <- rasterToPolygons(r)
covers <- unique(ln at data$PERCENTAGE)
for(cover in covers){
psub <- subset(ln, PERCENTAGE==cover)
pu <- gUnaryUnion(psub)
gi <- gIntersection(rp, pu, byid = T)
ind <- as.numeric(do.call(rbind, strsplit(names(gi), " "))[,1])
r[] <- NA
r[ind] <- sapply(gi at polygons, function(x) slot(x, 'area')) # a
bit faster than gArea(gi, byid = T)
writeRaster(r, paste0("cover/", cover, "area.tif"))
}
Every polygon contains a cover estimation (percentage cover of an invasive plant
species) and the column name of that information is called PERCENTAGE. There are
basically 4 cover classes. At the end of this loope I get 4 rasters, which are
named correspondingly to the cover class and in whose raster cells the
information of the percentage cover of polygons of every grid cell is stored.
Has anybody an idea to either trick the rasterize function to consider all
polygons (not just those covering the cell center of the raster) or fasten my
code above?
Any help will be appreciated!
Thank you very much!
Best regards,
Vanessa
_________________________________________
PhD student / Doktorandin
Disturbance Ecology / St?rungs?kologie
University of Bayreuth / Universit?t Bayreuth
Phone / Telefon: 0921-552188
Raum: GEO II, Rm 015.2
Universit?tsstra?e 30
D-95447 Bayreuth
[[alternative HTML version deleted]]