Crear terreno (3D Analyst)

Resumen

Crea un nuevo dataset de terreno.

Uso

  • El valor del parámetro Espaciado de punto promedio debe reflejar una buena aproximación de los datos que se utilizarán en el terreno, ya que se servirán para definir el tamaño de las teselas internas del terreno que se utilizan para optimizar el análisis de datos y el rendimiento de la visualización. Cada tesela se aproxima para que no tenga más de 200,000 puntos de elevación de origen. Si los datos se han recopilado a densidades significativamente diferentes de una ubicación a otra, el valor especificado debe favorecer el espaciado más pequeño.

  • Para completar el terreno, utilice Agregar nivel de pirámide del terreno para especificar la definición de pirámide, a continuación, Agregar clase de entidad al terreno para hacer referencia a los orígenes de datos que contribuyen a la superficie y, por último, Construir terreno para construir el terreno por completo.

Sintaxis

arcpy.3d.CreateTerrain(in_feature_dataset, out_terrain_name, average_point_spacing, {max_overview_size}, {config_keyword}, {pyramid_type}, {windowsize_method}, {secondary_thinning_method}, {secondary_thinning_threshold})
ParámetroExplicaciónTipo de datos
in_feature_dataset

Dataset de entidades que contendrá el dataset de terreno.

Feature Dataset
out_terrain_name

Nombre del dataset de terreno.

String
average_point_spacing

Distancia horizontal media entre los puntos de datos que se utilizarán para modelar el terreno. Las mediciones basadas en sensores, como los relevamientos topográficos fotogramétricos, LIDAR y SONAR, normalmente tienen un espaciado conocido que se debería usar. El espaciado debe expresarse en unidades horizontales del sistema de coordenadas del dataset de entidades.

Double
max_overview_size
(Opcional)

La vista general del terreno es similar al concepto de vista en miniatura de la imagen. Es la representación más burda del dataset de terreno y el tamaño máximo representa el límite superior del número de puntos de medición que se pueden muestrear para crear la vista general.

Long
config_keyword
(Opcional)

Palabra clave de configuración para optimizar el almacenamiento del terreno en una base datos corporativa.

String
pyramid_type
(Opcional)

El método de simplificación de puntos que se utiliza para construir las pirámides de terreno.

  • WINDOWSIZELa simplificación se realiza seleccionando los puntos de datos en el área definida por un tamaño de ventana determinado para cada nivel de pirámide con el criterio especificado en el parámetro windowsize_method.
  • ZTOLERANCELa simplificación se realiza al especificar la precisión vertical de cada nivel de pirámide con respecto a la resolución completa de los puntos de datos.
String
windowsize_method
(Opcional)

El criterio utilizado para seleccionar puntos en el área definida por el tamaño de ventana. Este parámetro solo se aplica cuando se especifica WINDOWSIZE en el parámetro pyramid_type.

  • ZMINEl punto con el valor de elevación más pequeño.
  • ZMAXEl punto con el valor de elevación más grande.
  • ZMEANEl punto con el valor de elevación más cercano al promedio de todos los valores.
  • ZMINMAXLos puntos con valores de elevación más grandes y más pequeños.
String
secondary_thinning_method
(Opcional)

Especifica las opciones de simplificación adicionales para reducir el número de puntos que se usan en las áreas planas cuando se utilizan pirámides de tamaño de ventana. Un área se considera plana si las alturas de puntos en un área están dentro del valor proporcionado para el parámetro Umbral de simplificación secundario. Su efecto es más evidente en niveles de pirámide de mayor resolución, dado que las áreas más pequeñas tienen más posibilidad de ser planas que las más grandes.

  • NONENo se realizará ninguna simplificación secundaria. Esta es la opción predeterminada.
  • MILDFunciona mejor para conservar discontinuidades lineales (por ejemplo, laterales de edificios y límites de bosques). Se recomienda para datos de lidar que incluyan puntos de tierra y no tierra. Simplificará el mínimo de puntos.
  • MODERATEProporciona un buen equilibrio entre rendimiento y precisión. No conserva tantos detalles como la simplificación leve, pero se le acerca y además elimina más puntos en general.
  • STRONGElimina la mayoría de puntos pero conserva menos entidades bien delineadas. Su uso se debería limitar a aquellas superficies en las que la pendiente tiende a cambiar gradualmente. Por ejemplo, sería eficaz para datos de lidar de terreno desnudo y batimétricos.
String
secondary_thinning_threshold
(Opcional)

Umbral vertical utilizado para activar la simplificación secundaria con el filtro WINDOWSIZE. El valor configurado debe ser igual o mayor que la precisión vertical de los datos.

Double

Salida derivada

NombreExplicaciónTipo de datos
derived_out_terrain

El nuevo dataset de terreno.

Terreno

Muestra de código

Ejemplo 1 de CreateTerrain (ventana de Python)

En el siguiente ejemplo se muestra cómo usar esta herramienta en la ventana de Python.

arcpy.env.workspace = 'C:/data'
arcpy.CreateTerrain_3d('source.gdb/Redlands', 'Redlands_terrain',  5,
                      50000, '', 'WINDOWSIZE', 'ZMIN', 'NONE', 1)
Ejemplo 2 de CreateTerrain (script independiente)

En el siguiente ejemplo se muestra cómo usar esta herramienta en un script independiente de Python.

"""****************************************************************************
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

# 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:
    # 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 Exception as err:
    print(err)

Información de licenciamiento

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

Temas relacionados