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 am very new to programming (I started learning this semester) and would very much appreciate helop with one piece of a project. I have the following table, and I need to write a script compatible with Arc10 that will extract some statistics from it. Specifically, I need to obtain a total of all the areas, and then a percentage describing how much of the total area each class of land takes up. If someone knows of a tool or command I should use, that would be a lot of help, even without a script. Thank you in advance to anyone who wants to help an extremely raw beginner.

Id_1    LandClass   F_AREA

    0   Mixed Forest    15612315.78
    0   Softwood Forest 2161121.455
    0   Wetland         2255656.822
    0   Grassy          27009516.24
    0   Hardwood Forest 10345393.4
share|improve this question
    
I'm writing a python script for a class project, so I have to do everything using Python, especially since I'm creating a tool that will be (hopefully) useable by students who aren't familiar with Arc GIS at all. Thank you for your help, I'm finally making some progress again. –  user6572 Mar 27 '12 at 14:29

1 Answer 1

I'm going to assume that this table is within ArcMap because you calculated the area of each feature in the third column. To extract values from a table that resides in a current ArcMap document, you need to use cursors. These ArcPython objects loop through each row in a table and allow you read and/or write to that table. If you are only reading information, the loop will be much faster if you use a SearchCursor; if you want to edit table values, you'll have to use an UpdateCursor.

There are a lot of different ways to go with cursors, but the simplest thing to sum the total area of all features, store it in a variable, then run the division for each feature and store the % of the total in a new field called "Percent_Area" or something like that. I'm assuming you know basic Python.

import arcpy

#Below is the name of the table layer in ArcMap.
InputTable = "My Table"

#This searchCursor reads the total area of all features.
TotalArea = 0.0
TableCursor = arcpy.SearchCursor(InputTable)
for TableRow in TableCursor:
    TotalArea += TableRow.getValue("F_AREA")
del TableRow
del TableCursor

#This updateCursor inputs the % values for each feature
arcpy.AddField_management(InputTable,"Percent_Area","DOUBLE")
TableCursor = arcpy.UpdateCursor(InputTable)
for TableRow in TableCursor:
    CurrentArea = TableRow.getValue("F_AREA")
    TableRow.setValue("Percent_Area",CurrentArea/TotalArea*100.0)
    TableCursor.updateRow(TableRow)
del TableRow
del TableCursor

For such a small table and such a simple operation it would probably be easiest to just run Summary Statistics to get the total area and then do Field Calculator on a new field to calculate the percentage, but I'm assuming you are using Python for a reason.

share|improve this answer

Your Answer

 
discard

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.