Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

I'm using ArcGIS 9.3 and I just can't seem to get this right - I've tried tabulate areas, zonal stats, converting to polygons, etc. I'm missing something somewhere.

I have a USGS impervious surface raster data set that has been clipped to my analysis zones (watersheds). I reclassified the values (100) into 10 values and then added fields and calculated the areas in sq mi and sq km throughout my analysis extent of each value. But what I really want is those areas calculated per analysis zone - 15 in all. I don't have classes here per se, just different levels of imperviousness. I want to see how much of each value is in each zone. It seems the tabulate areas tool should work, but I don't understand the numbers I'm seeing in the table. I'm choosing analysis name as my zone field and the sq mi as my class field. Any help would be much appreciated to a relatively new GIS user.


share|improve this question
Do you have the spatial analyst extension? –  Dan Patterson Aug 27 '11 at 21:09
Yes I do have the spatial analyst extension –  user4065 Aug 27 '11 at 21:46
add comment

2 Answers

I will admit to an aversion to the "higher level" functionality in Spatial Analyst, such as the clipping and area tabulation, because too many undocumented operations go on under the hood. In the effort to simplify these operations, the software developers have made them less transparent, whence less reliable, and thereby much less useful. The closer you are to the details of the calculation, the more likely you are to understand it and to get the correct answer.

So, motivated by that, consider using combine to overlay the watershed grid and the permeability class grid. The result of combine is to create one code for every distinct ordered pair of (watershed id, imperviousness class) values occurring within the cells. In addition, two fields are adjoined to the attribute table: one gives the watershed id and the other gives the imperviousness class. As always, there is a [count] field, too: multiplying this by the square of the cellsize (and converting to any area unit you prefer, such as acres or square miles) gives the answers you're looking for. The multiplication is readily done with the Field Calculator or by exporting the attribute table and using other software (like a spreadsheet) or even by multiplying the grid itself (inefficient, but it works), provided the multiplicand is an integer.

(Evidently, tabulate areas attempts to do these two operations at once: combine and multiplication by the squared cellsize. It's not much of a savings in user time, especially when you factor in the additional search for (nonexistent?) documentation about what's really going on...)

share|improve this answer
I appreciate the answer and it makes sense to me. But my watersheds file isn't a raster, it's just a polygon shapefile. Should I convert this to a raster by assigning a numerical value to each polygon name? Yes I do have the spatial analyst extension –  user4065 Aug 27 '11 at 20:27
When you convert a polygon file to a raster, you can select the polygon name as the conversion field. If you had several polygons with the same name, be aware that the spatial analyst treats "like" values as one zone and you can end up with multipart features. I doubt that it will be a problem in your case since you are dealing with discrete watersheds. –  Dan Patterson Aug 27 '11 at 22:27
add comment

For a raster I used the following.

                                  (string.atof(str(arcpy.GetRasterProperties_management(outRaster, "ROWCOUNT")))\
                                  *string.atof(str(arcpy.GetRasterProperties_management(outRaster, "COLUMNCOUNT"))))\
                                  *(string.atof((str(arcpy.GetRasterProperties_management(outRaster, "CELLSIZEY"))))\
                                  *string.atof((str(arcpy.GetRasterProperties_management(outRaster, "CELLSIZEX")))))

--- this gives the area of the raster in m2.

For a vector -maybe best to just merge the polygons into one shape file and run the area calculator in the table view. I have a script for locating and merging the files if you want. I hope I've undertood your question correctly.

share|improve this answer
This solution has the merit of being very fast. Unfortunately, it includes any NoData cells as part of the raster, which would usually not be the desired result. Also, it addresses a different (simpler) question, that of computing a raster's entire area. The current question asks for finding the areas of zones created by overlaying two rasters. –  whuber Aug 30 '11 at 16:57
add comment

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.