I created contours by using SRTM30 data. Now I need to find area between two contours like in between 0 m to 50 m depth and 50 m to 100 m.

  • 4
    Do you need the 2D area or 3D area?
    – Martin
    Commented Nov 14, 2014 at 6:36
  • You can only caclulate the area of polygons
    – nickves
    Commented Nov 14, 2014 at 6:56
  • possible duplicate of How to calculate te area between contour lines on a DEM with Qgis 1.8? - While different software, it is the principles of the area calculation which are relevant. Commented Nov 14, 2014 at 7:44
  • @MappaGnosis, the question you mentioned is addressed to QGIS tools, and this question is addressed to ArcGIS. Commented Nov 14, 2014 at 8:29
  • @SS_Rebelious I agree - the QGIS question will help but is not a duplicate - mind you I think it would have helped attract potential answerers if the asker had included a picture to illustrate.
    – PolyGeo
    Commented Nov 14, 2014 at 9:46

2 Answers 2


Have you seen Spatial Analyst Supplemental tools : Here : SA Supplemental tools or a direct download page.

You might also want to refer to the create Field Contours page in which you will find a comment about script modifications to allowed for customized contour intervals.

One of these builds a "filled polygon contour" from a raster dem. Not exactly what you are looking for but may be useful.

  • Actually - This is exactly what he was looking for: "...filled contour polygons can be used to easily find the area of elevation values between two particular elevation contours"
    – dof1985
    Commented Nov 14, 2014 at 14:53

Here is a vector-based suggested workflow to compute the area for each contour interval in your data set. You might want to look for some "easier" to implement solutions in other sources - here is one.

As to the suggested work flow:

  1. Start with converting your contours to polygons (Feature to Polygon tool) and add a field named: "Within" of an integer type. This next phase should be based on a model or a python script. It is rather simple, thus model would do the job. Build a model that will
  2. Iterate rows in your new polygon layer
  3. for each row - create a temporary layer using Make Feature Layer; use the Get Field Value tool to extract the contour value of the temporary layer into a model variable.
  4. Use select layer by location tool to select from your polygons layer the features that are WITHIN_CLEMENTINI your temporary layer.
  5. Use select by attributes tool and define REMOVE_FROM_SELECTION as your selection_type. Use an expression that will unselect (remove) all selected features that ther contour value distance from your row contour value is bigger than the contours interval. For example: Let's say that you have contours every 15 meters. Than you should write an expression that will select all [Temporary_Contour_Value]-[Contour]>15
  6. Now you have the contour the "biggest"/"highest" contour within your row. Use get Field value again to extract the selection ID, you might need to write it as temporary layer. Than write the extracted ID value to the within field in your iterated row. You might consider to use the Calculate field tool.
  7. Last phase of each loop is to CLEAR_SELECTION using Select layer by attributes.

Now after the model have run you have, for each row, a field which tells you which contour polygon is within it (by ID). All you have to do is compute shape are (you can use the python expression !shape.area! in the field calculator - it is a double/float type). Make a copy of this layer and join it to itself when the PK is your within field and the FK is your original ID. Use field calculator again to compute the area within two contours, bu expression Area_1 (of origianl layer) - Area_2 (of the joint layer).

You can also incorparate all steps into one model. It is just a workflow, since I havn't tried it since I don't have arcmap on my computer. Some difficulties might come up with the "get field value" variables - so you might want to use .py after all (with the same workflow).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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