How to calculate Raster Area per Polygon?
In ArcMap, I have a raster file that contains 6 classes of landcover and a shapefile that is the census data (OA boundaries and their population).
I want the area of each class in each OA?
For instance, I need to add six columns to the census shapefile (i.e one column for each class) and calculate the area of that class in the appropriate OA…
Does anyone know how I can solve this?
Assuming you're using ArcGIS 9.3, get the free Hawth's analysis tools extension for ArcGIS, and use the Zonal Statistics ++ tool. Make sure the shapefile is in the same projection as the raster.
From having just looked at the Hawth's tools website for the first time in ages to get the links, I've just seen they're putting all their efforts into developing Geospatial Modelling Environment, which may also do the job, though I haven't tried it.
Lastly, you could do the calculations manually. There are two options:
- Turn the raster into a polygon, run an intersect with the boundaries, and calculate areas based on the results. This works well if there aren't a lot of raster classes, or the size of the polygon isn't very large in comparison to cell size.
- Turn the polygon into a raster with the same cell size and origin as the original raster and run a combine. Works well if there are lots of raster classes, but only if the original polygons are at all points substantially greater than cell size.
Potentially as well you could take the 2nd option and re-sample the original raster into smaller pixels if you are worried about data loss through polygon size and shape (make sure to keep cell sizes as factors of the original cells to avoid data loss).
I'd use a combination of the clip geoprocessing tool and the procedure from this page: Calculating an Area in Raster.
From a Comment by the Question's author (@Zeinab; who has not logged into this site for nearly four years) on one of the other Answers, it looks like the solution that resolved this was the Tabulate Area (Spatial Analyst) tool which:
Calculates cross-tabulated areas between two datasets and outputs a table.