Agregar clase de entidad al terreno (3D Analyst)
Resumen
Agrega una o más clases de entidad a un dataset de terreno.
Uso
-
Las clases de entidad de entrada deben residir en el mismo dataset de entidad que el dataset de terreno.
-
El dataset de terreno ya debe tener uno o más niveles de pirámide creados.
-
Dependiendo del tipo de superficie asociado con las entidades agregadas a un terreno, es posible que sea necesario reconstruir el dataset de terreno utilizando Construir terreno. Los cuadros de diálogo Propiedades del dataset de terreno en ArcCatalog y Propiedades de la capa de terreno en ArcMap proporcionan una indicación de si el dataset necesita ser reconstruido.
-
Para los datasets de terreno almacenados en SDE:
- El terreno objetivo no puede estar registrado como versionado.
- La clase de entidad de entrada no se puede registrar como versionada.
Sintaxis
Parámetro | Explicación | Tipo 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
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)
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")