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.:

  1. Calculate area by Zone 1
  2. Calculate area by Zone 2, including specifying areas that do and do not overlap with Zone 1
  3. Retain fields in attribute table for both zones
  4. 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.

Example table of output attribute table

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?

closed as too broad by PolyGeo Apr 10 '18 at 1:55

Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.

  • It seems like you are seeking a discussion on the merits of your and other possible approaches, which makes this too broad for focused Q&A. In any event, I think the best approach for getting areas from multiple zones in different layers that overlap will be to use the Union tool. I think you are dealing with a requirement more suited to vector than raster analysis. – PolyGeo Apr 10 '18 at 1:55
  • @PolyGeo, thank you. I may delete/edit and add as an answer to my own question, once it has been narrowed down to a specific approach. Good point about vectors being suitable for this approach. I was trying to avoid using vectors since most of my source data is raster, and rasters are fast to analyze and process. – Dan Apr 10 '18 at 18:40