A basic GIS task that I regularly come across in my work is to calculate the area of a variable of interest by multiple, overlapping and/or hierarchical zones. I am looking for a more efficient way to perform this and export to tabular format for inclusion in reports. Can anyone recommend an approach (or ArcPy script) that can calculate land cover type (raster) by two or more overlapping zones, in an efficient manner, e.g.:
- Calculate area by Zone 1
- Calculate area by Zone 2, including specifying areas that do and do not overlap with Zone 1
- Retain fields in attribute table for both zones
- Optional: Export to CSV or Excel, or compile multiple tables into a single table if above was iterated. Example below, where management choice is variable of interest to be reported back by zone 1 and zone 2.
This is similar to using Tabulate Area with the administrative area by zone (Tabulate Area Using Multiple Shapefiles and Multiple Rasters), but I need one or more additional levels of zones, and my zones are not in the same input file.
What I currently do (works, but seems less efficient):
Clip and Iterate: (1) Clip zone 2 by zone 1 (land use clipped by administrative zone, in example above), (2) iterate through each category in variable of interest (e.g. management choice) and run zonal statistics (cell count) or tabulate area, and (3) export table for each to Excel. This works, but reports total theoretical areas, not accounting for the fact that once a management choice is made it precludes other choices if it overlaps in that area.
Combine: Another approach I have used, but is also not efficient is to use ArcMap’s ‘Combine’ tool, join back text descriptions to the output so I know what combination code (similar to overlap of Management Choice Codes above, e.g. 1101 (wetland, managed wetland, and forest restoration overlap)), and run zonal statistics on this. Then calculate area based on cell size, and export to CSV/Excel. This works for 1-2 zones, but gets complicated when there are multiple potential values for any given location. For example, interpreting what values should join to 1101 can take time.
Other: I have not tried this approach as I do not have the ability to install QGIS at work. However, SAGA’s Cross-classification and Tabulation tool might be able to do this too, as referenced here (Is there a "Tabulate Area" function in QGIS?) and here. For example, use Zone 2 as ‘Input Grid 1’ and Management Choice as ‘Input Grid 2) in SAGA, then analyze by Administrative Zone (zone 1, above).
Thoughts on any of the above, or can you recommend another approach that would perform this in a single step (or iterated steps) and report the total area of variable (Management Choice), by Zone 2 (Land Use) within Zone 1, by Zone 1, as well as the total overlapping and non-overlapping?