Change Terrain Reference Scale (3D Analyst)

Available with 3D Analyst license.

Summary

Changes the reference scale associated with a terrain pyramid level.

Usage

  • Consider changing a terrain pyramid's reference scale if you experience undesirable draw speed performance or require greater densification of data points in the pyramid's display scale range.

  • It may also be necessary to add or remove a pyramid level when changing the resolution of an existing one, which can be done by using Add Terrain Pyramid or Remove Terrain Pyramid.

  • When used in an SDE database, the input terrain cannot be registered as versioned.

Parameters

LabelExplanationData Type
Input Terrain

The terrain dataset that will be processed.

Terrain Layer
Old Reference Scale

The reference scale of an existing pyramid level.

Long
New Reference Scale

The new reference scale for the pyramid level.

Long

Derived Output

LabelExplanationData Type
Updated Input Terrain

The updated terrain.

Terrain Layer

arcpy.ddd.ChangeTerrainReferenceScale(in_terrain, old_refscale, new_refscale)
NameExplanationData Type
in_terrain

The terrain dataset that will be processed.

Terrain Layer
old_refscale

The reference scale of an existing pyramid level.

Long
new_refscale

The new reference scale for the pyramid level.

Long

Derived Output

NameExplanationData Type
derived_out_terrain

The updated terrain.

Terrain Layer

Code sample

ChangeTerrainReferenceScale example 1 (Python window)

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

arcpy.env.workspace = 'C:/data'
arcpy.ddd.ChangeTerrainReferenceScale('terrain.gdb/terrainFDS/terrain1', 
                                   1000, 2000)
ChangeTerrainReferenceScale example 2 (stand-alone script)

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

'''****************************************************************************
Name: Update Terrain
Description: This script demonstrates how to update a terrain dataset
             with new elevation measurements obtained from Lidar by
             importing LAS files to multipoint features, then appending the
             new points to another multipoint feature that participates in a
             terrain. The terrain's pyramids are modified to optimize its
             draw speed.
****************************************************************************'''
# Import system modules
import arcpy

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

    # Set Variables
    inTerrain = "sample.gdb/featuredataset/terrain"
    currentPts = "existing_points"
    lasFiles = ['las/NE_Philly.las',
                'las/NW_Philly.las']
    newPts = 'in_memory/update_pts'
    # Define spatial reference of LAS files using factory code
    # for NAD_1983_StatePlane_Pennsylvania_South
    lasSR = arcpy.SpatialReference(2272)

    arcpy.AddMessage("Converting LAS files to multipoint features...")
    arcpy.ddd.LASToMultipoint(lasFiles, newPts, 1.5, 2, 1,
                              'INTENSITY', lasSR)

    arcpy.AddMessage("Appending LAS points to {0}..."\
                     .format(currentPts))
    arcpy.ddd.AppendTerrainPoints(inTerrain, currentPts, newPts)

    arcpy.AddMessage("Changing terrain pyramid reference scales...")
    arcpy.ddd.ChangeTerrainReferenceScale(inTerrain, 1000, 500)
    arcpy.ddd.ChangeTerrainReferenceScale(inTerrain, 2500, 2000)

    arcpy.AddMessage("Adding terrain pyramid level...")
    arcpy.ddd.AddTerrainPyramidLevel(inTerrain, "", "4 4500")

    arcpy.AddMessage("Changing pyramid resolution bounds for breaklines...")
    arcpy.ddd.ChangeTerrainResolutionBounds(inTerrain, "breaklines", 5, 4)

    arcpy.AddMessage("Building terrain...")
    arcpy.ddd.BuildTerrain(inTerrain)

    arcpy.AddMessage("Completed updates.")

except arcpy.ExecuteError:
    print(arcpy.GetMessages())
except Exception as err:
    print(err)

Related topics