Agregar clase de entidad al terreno (3D Analyst)

Resumen

Agrega una o más clases de entidad a un dataset de terreno.

Uso

Sintaxis

AddFeatureClassToTerrain_3d (in_terrain, in_features)
ParámetroExplicaciónTipo de datos
in_terrain

El terreno al que se agregarán las clases de entidad. El dataset de terreno ya debe tener uno o más niveles de pirámide creados.

Terrain Layer
in_features
[[in_feature_class, height_source, SF_type, group, min_resolution, max_resolution, overview, embedded, embedded_fields, anchored],...]

Las clases de entidad que se están agregando al terreno. Cada clase de entidad debe residir en el mismo dataset de entidad que el terreno y se deben especificar las propiedades que definen el rol de la entidad en el terreno.

Se puede cambiar el tamaño del cuadro de diálogo para aumentar su ancho en el caso de que el ancho de la columna predeterminada sea muy pequeño.

Propiedades de clase de entidad:

in_feature_class: el nombre de la clase de entidad de entrada que se está agregando al dataset de terreno.

height_source: el campo que proporciona los valores de altura de las entidades. Todos los campos numéricos se enumerarán como opciones disponibles. Si la clase de entidad es habilitada en z, el campo de geometría de la entidad se incluye en la lista y se selecciona como valor predeterminado. Si la clase de entidad no está habilitada en z, la palabra clave <Ninguno> se proporcionará de manera predeterminada. Las entidades sin z no tienen altura y sus valores se interpolan a partir de una superficie antes de agregarlos.

SF_type: esto representa el tipo de entidad de superficie. Define la forma en que se tratan las entidades al triangular la superficie. Las opciones incluyen puntos de masa, líneas de corte y diversos tipos de polígonos. Las líneas de corte y los polígonos también tienen calificadores bruscos y suaves, que le indican a un interpolador si la superficie cruza sobre las entidades de forma suave (fina) o con una discontinuidad potencialmente afilada (gruesa).

group: los datos temáticamente similares que representan las mismas entidades geográficas, pero con distintos niveles de detalle se encuentran colocados en grupos. A las clases de entidad que pertenecen al mismo grupo se les asigna el mismo valor. Por ejemplo, si hay dos entidades de límites de área de estudio en donde una consta de un límite muy detallado que se usa para las aplicaciones de gran escala y otra con un límite grueso, ambas se pueden asignar al mismo grupo para garantizar que no hay superposición en sus respectivas escalas de visualización. Este parámetro solo aplica a los tipos de superficie poligonales y líneas de corte.

min_resolution and max_resolution: define los rangos de resolución de pirámide en los que se aplicarán las entidades en el dataset de terreno. Estos parámetros solo aplican a los tipos de superficie poligonales y líneas de corte.

overview: indica si la clase de entidad se aplica en la visualización de vista general del dataset de terreno, que es la representación más gruesa que se obtiene de manera predeterminada cuando se visualiza a extensión completa. Para maximizar el rendimiento de visualización, asegúrese de que las clases de entidad representadas en la vista general contengan una geometría simplificada. Por ejemplo, es posible que las líneas de corte no sean los suficientemente visibles para tener importancia en una visualización de vista general, mientras que un polígono de clip sería útil. Si la entidad de límite que tiene es detallada, considere generalizarla y usar la representación más gruesa para la vista general. La versión detallada se debe usar en niveles de resolución de pirámide más detallados. Este parámetro solo aplica a los tipos de superficie poligonales y líneas de corte.

embedded: indica si la clase de entidad se integrará en el dataset de terreno. Establecer esta opción como verdadera crea una copia de los puntos de la entidad. La clase de entidad integrada solo será accesible a través de las herramientas relacionadas con el dataset de terreno, pero no estará directamente visible en ArcCatalog ni se podrá seleccionar a través del explorador Agregar datos. Esta opción solo se aplica a las clases de entidad multipunto.

embedded_fields: identifica los atributos lidar que se deben almacenar con la clase de entidad integrada. La herramienta LAS a multipunto permite el almacenamiento de atributos lidar en una clase de entidad multipunto.

anchored: especifica si la clase de entidad de puntos se anclará a través de todos los niveles de pirámide de terreno. Los puntos de anclaje nunca se filtran o simplifican para garantizar que persisten en la superficie de terreno. Esta opción solo se aplica a las clases de entidad de punto único.

Value Table

Ejemplo de código

Ejemplo 1 de AddFeatureClassToTerrain (ventana de Python)

La siguiente muestra demuestra cómo utilizar esta herramienta en la ventana de Python:

import arcpy
from arcpy import env

arcpy.CheckOutExtension("3D")
env.workspace = "C:/data"
params = "terrain.gdb/terrainFDS/points2 SHAPE masspoints 2 0 10 true false "\
       "points_embed <None> false"
arcpy.AddFeatureClassToTerrain_3d("test.gdb/featuredataset/terrain", params)
Ejemplo 2 de AddFeatureClassToTerrain (secuencia de comandos independiente)

La siguiente muestra demuestra cómo utilizar esta herramienta en una secuencia de comandos Python independiente:

"""****************************************************************************
Name: Create Terrain from TIN
Description: This script demonstrates how to create a terrain dataset using
             features extracted from a TIN. It is particularly useful in 
             situations where the source data used in the TIN is not available,
             and the amount of data stored in the TIN proves to be too large 
             for the TIN. The terrain's scalability will allow improved
             display performance and faster analysis. The script is designed 
             to work as a script tool with 5 input arguments.
****************************************************************************"""
# Import system modules
import arcpy
import exceptions, sys, traceback
from arcpy import env

# Set local variables
tin = arcpy.GetParameterAsText(0) # TIN used to create terrain
gdbLocation = arcpy.GetParameterAsText(1) # Folder that will store terran GDB
gdbName = arcpy.GetParameterAsText(2) # Name of terrain GDB
fdName = arcpy.GetParameterAsText(3) # Name of feature dataset
terrainName = arcpy.GetParameterAsText(4) # Name of terrain

try:
    arcpy.CheckOutExtension("3D")
    # Create the file gdb that will store the feature dataset
    arcpy.management.CreateFileGDB(gdbLocation, gdbName)
    gdb = '{0}/{1}'.format(gdbLocation, gdbName)
    # Obtain spatial reference from TIN
    SR = arcpy.Describe(tin).spatialReference
    # Create the feature dataset that will store the terrain
    arcpy.management.CreateFeatureDataset(gdb, fdName, SR)
    fd = '{0}/{1}'.format(gdb, fdName)
    # Export TIN elements to feature classes for terrain
    arcpy.AddMessage("Exporting TIN footprint to define terrain boundary...")
    boundary = "{0}/boundary".format(fd)
    # Execute TinDomain
    arcpy.ddd.TinDomain(tin, tinDomain, 'POLYGON')
    arcpy.AddMessage("Exporting TIN breaklines...")
    breaklines = "{0}/breaklines".format(fd)
    # Execute TinLine
    arcpy.ddd.TinLine(tin, breaklines, "Code")
    arcpy.AddMessage("Exporting TIN nodes...")
    masspoints = "{0}/masspoints".format(fd)
    # Execute TinNode
    arcpy.ddd.TinNode(sourceTIN, TIN_nodes)
    arcpy.AddMessage("Creating terrain dataset...")
    terrain = "terrain_from_tin"
    # Execute CreateTerrain
    arcpy.ddd.CreateTerrain(fd, terrainName, 10, 50000, "", 
                            "WINDOWSIZE", "ZMEAN", "NONE", 1)
    arcpy.AddMessage("Adding terrain pyramid levels...")
    terrain = "{0}/{1}".format(fd, terrainName)
    pyramids = ["20 5000", "25 10000", "35 25000", "50 50000"]
    # Execute AddTerrainPyramidLevel
    arcpy.ddd.AddTerrainPyramidLevel(terrain, "", pyramids)
    arcpy.AddMessage("Adding features to terrain...")
    inFeatures = "{0} Shape softclip 1 0 10 true false boundary_embed <None> "\
             "false; {1} Shape masspoints 1 0 50 true false points_embed "\
             "<None> false; {2} Shape softline 1 0 25 false false lines_embed "\
             "<None> false".format(boundary, masspoints, breaklines)
    # Execute AddFeatureClassToTerrain
    arcpy.ddd.AddFeatureClassToTerrain(terrain, inFeatures) 
    arcpy.AddMessage("Building terrain...")
    # Execute BuildTerrain
    arcpy.ddd.BuildTerrain(terrain, "NO_UPDATE_EXTENT")
    arcpy.GetMessages()

except arcpy.ExecuteError:
    print arcpy.GetMessages()
except:
    # Get the traceback object
    tb = sys.exc_info()[2]
    tbinfo = traceback.format_tb(tb)[0]
    # Concatenate error information into message string
    pymsg = "PYTHON ERRORS:\nTraceback info:\n{0}\nError Info:\n{1}"\
          .format(tbinfo, str(sys.exc_info()[1]))
    msgs = "ArcPy ERRORS:\n {0}\n".format(arcpy.GetMessages(2))
    # Return python error messages for script tool or Python Window
    arcpy.AddError(pymsg)
    arcpy.AddError(msgs)
finally:
    arcpy.CheckInExtension("3D")

Entornos

Temas relacionados

Información de licencia

ArcView: Requiere 3D Analyst
ArcEditor: Requiere 3D Analyst
ArcInfo: Requiere 3D Analyst

7/10/2012