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
arcpy.ddd.InterpolatePolyToPatch(in_surface, in_feature_class, out_feature_class, {max_strip_size}, {z_factor}, {area_field}, {surface_area_field}, {pyramid_level_resolution})
Parameter | Explanation | Data 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.
import arcpy
from arcpy import env
arcpy.CheckOutExtension("3D")
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
arcpy.CheckOutExtension("3D")
# 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)
Environments
Licensing information
- Basic: Requires 3D Analyst
- Standard: Requires 3D Analyst
- Advanced: Requires 3D Analyst