I have a raster file about land usage in northern italy (crops / urban areas ecc..)

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 there is a Spatial Analyst function to do so called "Tabulate Area", but I can't find such feature in QGIS.

If anyone can help me I'd be so grateful.

  • 1
    Ricardo, welcome to our site! I wonder whether you meant to write "QGIS" instead of "ArcGIS" the second time, so that perhaps your remark should read, "I know that in ArcGIS there is a function ... but I can't find such a feature in QGIS." – whuber Apr 12 '12 at 13:58
  • I went ahead and edited the question text. Please revert it if I've misinterpreted your question. – underdark Apr 12 '12 at 18:09
  • @underdark Thanks dude, yes that is what i ment, was a mistype. – Riccardo Apr 13 '12 at 9:50
  • @whuber Thanks for reporting the mistake, but i still didnt solve my problem =) Its weird because its a very simple task and im confident there is a feature for it. – Riccardo Apr 13 '12 at 9:52

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

Hope this help

  • 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. – lynxlynxlynx Nov 30 '12 at 9:36

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.


Tabulated Areas tool is located in the Spatial Analyst toolbox in the Zonal tools section for ArcGIS 10. Not sure what version you are running. Note that you have to have a separate license for Spatial Analyst extension to use those tools. Sounds like that tool will do what your looking for tho.

Hope This Helps

  • Thanks for the answer dude, i know where the tool is located in arcgis, i suppose you answered this way because of my error in typing the question. I'm looking for a similar tool in QGIS. – Riccardo Apr 13 '12 at 9:49

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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