|Polygon Surface Area Via TIN
One solution for calculating the surface area of a polygon draped on a TIN surface is to add the polygon to the TIN temporarily.
Using a TIN edit session, and tagging only the new triangles created when adding the polygon, those triangles can be retrieved and used as a parameter
for the TIN surface's PartialVolumeAndArea method.
This sample code contains a method 'UpdatePolysWith3DSurfaceArea' which will update a specified attribute of a polygon feature class with it's surface area on the TIN.
The code aims to illustrate this technique, which is to loop through each polygon in the designated layer in ArcMap or ArcScene and:
1. clip and drape it on the TIN to create a 3D poly
2. for each part of the polygon (consider multipart geometries),
3. burn the geometry into the TIN using a unique tag value for the underlying triangles
4. extract the new underlying triangles under the original geometry
5. use these triangles as input for the GetPartialVolumeAndArea surface method to calculate the area for the geometry
6. update the designated field of the polygon feature class with the 3D area
How to use:
Using the 'UpdatePolysWith3DSurfaceArea' method:
ArcScene or ArcMap
Add the polygon layer to which you want to calculate surface area for, as well as a TIN layer which the polygons can be draped on during the calculation. Ensure
that there is an editible attribute for the polygon feature layer.
In an ArcMap or ArcScene VBA session, import the module 'bas3DArea.bas'.
From the VBA immediate window, or in a new module's function, call the 'UpdatePolysWith3DSurfaceArea' with the appropriate parameters for the TIN surface, the polygon feature layer, and the attribute to update with the surface area volume value.
bas3DArea.UpdatePolysWith3DSurfaceArea "TINSurface", "plotboundaries", "surfacearea"
A 3D Analyst License, a polygon feature layer with an editible attribute, and a TIN surface from which to derive surface area values for the polygons.
||Contains the method 'UpdatePolysWith3DSurfaceArea' for deriving the 3D surface area for polygons by using a TIN edit session.
ITinAdvanced, ITInLayer, ITinFeatureEdit, ITinSurface, IEnumTinTriangle