Interpolate Polygon To Multipatch (3D Analyst)

Summary

Creates surface-conforming multipatch features by draping polygon features over a surface.

Usage

  • Each polygon feature has its boundary profiled along the surface. Heights are obtained using linear interpolation by sampling at each input vertex and wherever the boundary line intersects surface triangle edges and nodes. This natural densification captures the full definition of the linear surface using a minimal number of samples. Then, all nodes that fall within the polygon are extracted. The nodes are re-triangulated in a new memory-based TIN, and the 3D polygon boundary is enforced as a clip polygon. The triangles of this new TIN are then extracted in a series of strips that are used to define a multipatch-based feature.

  • Resulting multipatch will capture the 3D surface representation in its geometry. Planimetric and surface area calculations are included in the output alongside other attributes from the input polygon.

  • Consider converting polygons to multipatches if you experience display problems with three-dimensional rendering of polygons draped on a surface.

  • The Maximum Triangle Strip Size value must be 3 or larger. This parameter specifies the maximum number of vertices allowed in any triangle strip used in constructing the multipatch. ArcGIS does not have a particular size limit or preference, but some 3D graphic cards might, as triangle strips are directly loaded to the 3D graphics application program interface (API) for rendering. The recommended range is between 128 and 2048.

Syntax

InterpolatePolyToPatch(in_surface, in_feature_class, out_feature_class, {max_strip_size}, {z_factor}, {area_field}, {surface_area_field}, {pyramid_level_resolution})
ParameterExplanationData Type
in_surface

The input triangulated irregular network (TIN) or terrain dataset surface.

Terrain Layer; TIN Layer
in_feature_class

The input polygon feature.

Feature Layer
out_feature_class

The output multipatch feature class.

Feature Class
max_strip_size
(Optional)

Controls the maximum number of points used to create an individual triangle strip. Note that each multipatch is usually composed of multiple strips. The default value is 1,024.

Long
z_factor
(Optional)

The factor by which z-values will be multiplied. This is typically used to convert Z linear units to match XY linear units. The default is 1, which leaves elevation values unchanged. This parameter is disabled if the spatial reference of the input surface has a Z datum with a specified linear unit.

Double
area_field
(Optional)

The name of the output field containing the planimetric, or 2D, area of the resulting multipatches.

String
surface_area_field
(Optional)

The name of the output field containing the 3D area of the resulting multipatches. This area takes the surface undulations into consideration and is always larger than the planimetric area unless the surface is flat, in which case, the two are equal.

String
pyramid_level_resolution
(Optional)

The z-tolerance or window-size resolution of the terrain pyramid level that will be used by this tool. The default is 0, or full resolution.

Double

Code sample

InterpolatePolygonToMultipatch example 1 (Python window)

The following sample demonstrates the use of this tool in the Python window.

arcpy.env.workspace = "C:/data"
arcpy.InterpolatePolyToPatch_3d("sample.gdb/featuredataset/terrain", "polygon.shp", "out_multipatch.shp", 1024, 1, "Area", "SArea", 5)
InterpolatePolygonToMultipatch example 2 (stand-alone script)

The following sample demonstrates the use of this tool in a stand-alone Python script.

'''****************************************************************************
Name: InterpolatePolyToPatch Example
Description: This script demonstrates how to use the
             InterpolatePolyToPatch tool.
****************************************************************************'''

# Import system modules
import arcpy
from arcpy import env

# Set environment settings
env.workspace = "C:/data"

# Set Local Variables
inTerrain = "sample.gdb/featuredataset/terrain"
inPoly = "polygon.shp"
outMP = arcpy.CreateUniqueName("out_multipatch.shp")

#Execute InterpolatePolyToPatch
arcpy.InterpolatePolyToPatch_3d(inTerrain, inPoly, outMP, 1024, 1, "Area", "SArea", 5)

Licensing information

  • Basic: Requires 3D Analyst
  • Standard: Requires 3D Analyst
  • Advanced: Requires 3D Analyst

Related topics