I've got a polygon feature class with Z values enabled. The polygon entities represent billboards. I'm looking for a way to measure the front surface area of this entities - i.e the area of the billboards from one side.

Can I do this using a Geoprocessing tool?

Some snapshots

enter image description here

Polygon in ArcMap

enter image description here

Polygon in ArcScene


2 Answers 2


First, copy and paste the defs in the accepted answer of the post that you mentioned to the python interpreter of ArcMap. And then run a cursor on the shapes to calculate the 3D area, such as:

for row in arcpy.SearchCursor("Billboard Layer on My Table of Content"):
    area_array=[[j.X,j.Y,j.Z] for i in row.Shape.getPart() for j in i]
    print row.OBJECTID, area(area_array)

This routine just prints the ID and the area of the feature but it can be used to record areas into a new field as well by UpdateCursor. Intentionally, I have exemplified the old cursor approach, otherwise there are much more efficient utilities in arcpy's data access module (i.e., arcpy.da)


If you have 3D Analyst, this works - for individual polygons:

  1. Create a TIN using your polygon
  2. Use Add Surface Information with your polygon as input feature class and the corresponding TIN as input surface. Check "SURFACE_AREA" as output property.

The 3D area is then added in a new field to your polygon feature class' attribute table.

You can automate this with Python or ModelBuilder if you have a large number of polygons or need to repeat the process.


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.