I have two layers. A polygon-shape-layer with many tiles and a raster-layer containing CORINE 2006 land cover with many categories in a colourmap.
I want to obtain for each polygon in the shapelayer a sum of each land cover category of the raster-layer.
For example there is a polygon with id '2' and i want to Attributes like this for this polygon (in percent or square meters):
- Arable land : 15 %
- Forest: 11 %
- Streets:2 %
(… and so one)
I tried to do it in grass, qgis (no function), saga (just sums up every to a total value) r(total sum), but i still found no solution. Most plugins (zonal statistics in qgis) only support 0-1 raster layers. v.rast.stats didn't help either. Iam open to any good and smart solution!. Maybe i even used a wrong approach or made mistakes.
In Arcgis this task is quite easy, if am remember right, but i am still missing a good solution for your everyday linux user.
I am running a debian linux system and this why i can only use programs for this OS.
EDIT:
Because this question still has so many views and visitors:
I wrote a QGIS-plugin, which also is capable of calculating the landcover of raster layer. I have'nt coded a polygon overlay yet, but it definitely planed. Find the plugin here and install the Scipy library first.
Best Answer
Use 'extract' to overlay polygon features from a SpatialPolygonsDataFrame (which can be read from a shapefile using maptools:readShapeSpatial) on a raster, then use 'table' to summarise. Example:
So my first polygon covers 542 pixels, and my second covers 958. I can summarise each of them:
So my first polygon is 287 pixels of class 26, and 255 pixels of class 27. Easy enough to sum and divide and multiply by 100 to get percentages.