Note at the bottom for a possible solution, though it's not very elegant!

I’m at a bit of a brick wall – I think this probably has a really simple solution, but I’m not quite sure where to start. Using ArcGIS Pro.

Problem: I can’t figure out how to calculate the area of various categories in a raster file, based on country boundaries in a shapefile.

Description of raster: Environmental data based on 15 categories of land cover. The attribute table has three fields: Objectid, Value and Count. Value stores a category label, 1-15. I have a separate dbf which maps these to land cover (e.g. large forest, small forest, lake, sea) and Type of cover (e.g. forest, water), but I’m not sure if I should be bringing that in at this stage. I have one version where I’ve joined it to the raster att table, and another version where they’re still separate.

Description of shapefile: This stores various boundaries. The attribute table has 6 fields: FID, Shape, Country, Province, Region, Area.

What I want to achieve: There are five countries. For each country, I want to know the area of forest, the area of water etc.

Rough Illustration

Dbf table:

enter image description here

Raster attribute table:

enter image description here

Shapefile att table:

enter image description here


enter image description here

Whether “Forest” and “Water” actually contain the km2 area, or just a cell count that I can convert based on cell size – I don’t mind. It would also be OK to still have Description (large forest, small forest) rather than grouped Type (forest), since I will be analysing everything in Excel anyway (sweet home, Excel).

I thought Zonal Statistics might be a good place to start, but I don’t think that will really achieve what I’m after, since I want to split out the data in the raster. I used that previously with the same shapefile, trying to get the population across each country. But I suppose that was a case of getting less detailed (summing across provinces), whereas now I want to get more detailed (split the “Count” field by country).

Can anyone point me in the right direction to get started?

Edit: I may have found a way to do this. First I extracted each country to a separate layer (select, right click, make layer from selected features). Then I used extract as mask on my main raster. I did this three times, once for each country. Now I have three raster files, each one corresponding to a unique country. I think this will do the job, but I can't help but feel that there's a tidier way.


1 Answer 1


You can

  • use the join field tool to join your DBF to the raster attribute table, then
  • use the tabulate area tool with shapefile / country as the in_zone_data / zone_field and raster / type as in_class_data / class_field

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.