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
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ámetro | Explicación | Tipo 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.
| 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.
| 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.
| 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
Nombre | Explicación | Tipo de datos |
derived_out_terrain | El nuevo dataset de terreno. | Terreno |
Muestra de código
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)
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