Computing dominant area in polygon using ArcGIS Desktop?
INPUT:
After dissolving zones use following WORKFLOW:
arcpy.Intersect_analysis("GRID #;ZONE #","D:/Scratch.gdb/intersect")
arcpy.Sort_management("intersect", "D:/Scratch.gdb/sorted","Shape_Area DESCENDING")
# DELETE MINORITIES USING GRID ID
arcpy.DeleteIdentical_management("sorted", "ID")
OUTPUT SHOWS "SORTED" AND GRID:
Transfer dominant zone ID to grid layer from "sorted", using join by attributes, if necessary.
Important update a year later: each zone must be a single, potentially multipart polygon. If this is not a case original zones layer must be dissolved by zone name.
Ok I think I follow the question. I attempted this with a test data set. I'm using a geodatabase so that the area is calculated (recommended). If you must use a shapefile, calculate a field with geometry for the shape_area before you do step 2. I have a polygon layer named Poly and a fishnet grid named FNET. Poly has a field (MTYPE) and values of 1 (maroon), 2 (green), or 3 (purple) (colors from the 1st screenshot).
Step 1. Intersect the 2 layers.
Now the output from that first step gives you FID fields for each layer (in mycase it is FID_FNET and FID_Poly).
Screenshot showing how FID for each is preserved (325 is the grid cell and it has one each of 1, 2, and 3 in it).
Step 2. SUMMARIZE (sorry the screenshot looks like "Statistics" but use Summarize.
Step 2 (continued). Do a Summarize on FID_FNET and set it up as in this next screenshot so you are getting a maximum on the Shape_Area field ...
Step 3. Do a join using the output of the intersect operation and the table (join the table to the intersect) and base the join on the shape_area from the intersect output and the "Max_shape_area" from the table.
The null values can be ignored (they are the ones that were NOT maximum) or deleted (better yet). and the result using the joined table is a list of FID_FNET records that also have an FID_POLY that matches the largest (MAX) value for each grid cell!
This last screenshot shows how I set up the join.