I have a raster file about land usage in northern Italy (crops / urban areas, etc.)

I have defined some buffer zones around some given points of a vector layer, and I'd like to calculate the % of those areas occupied by each value of the raster file in order to make an estimate on the average usages of the selected areas (like 70% crops, 30% urban, etc..).

I know that in ArcGIS Desktop there is a Spatial Analyst function to do so called "Tabulate Area", but I can't find such feature in QGIS.


3 Answers 3


For this case you can use the Cross-Classification and Tabulation as was mentioned above. To use it, first you need to have raster layer with int values. Depending on you usage layer you would need to perform some reclass or recode to have your raster ready. enter image description here

The other premise is that your polygons(your buffer zones) must have some int value. If not, you have to create it (with the calculator formula $id+1). enter image description here

Rasterize your vector layer using the int code as raster value. Here you have to put some conditions: use same pixel value and same extension as the raster that you want to extract the information. enter image description here

Now use the Cross-Classification and Tabulation from SAGA tools. You have to consider that this is going to create a xy table with the count of pixels of each usage category into each polygon. Here you have to insert the "max number of classes" what means that, for example, if you have a raster with 10 categories and a 25 polygon classes, your max will be 25. enter image description here

Here is the final result: a table where you have the count of pixels of each category in each polygon. If you need to convert it to area, just multiply the number of cells by the resolution of you raster. enter image description here


I've coded a Plugin for QGIS called LecoS (look in the Plugin Downloader, experimental plugins, install Scipy first! ). It can achieve what you want (percentages of land cover for a given raster), however until now i haven't found the time to code a polygon overlay in python and therefore you have to clip your raster individually per buffer and vector feature beforehand. See a usecase here.


Try to use "Cross-Classification and Tabulation" of SAGA GIS from Sextante plugin.

  • 1
    Which you must first install via the plugin manager (Fetch python plugins), unless you are using a selfcompiled version — it was added to core after 1.8.0. Nov 30, 2012 at 9:36

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.