Crear terreno (3D Analyst)
Resumen
Crea un nuevo dataset de terreno.
Uso
El terreno debe residir en un dataset de entidad.
-
El parámetro Espaciado de punto promedio se debe basar en los datos que se utilizarán en el terreno. A pesar de que no es necesario que este valor sea exacto, debe representar una buena aproximación. Si los datos se recopilaron a densidades significativamente diferentes de una ubicación a otra, proporcione más ponderación al espaciado menor al determinar este valor.
El espaciado de punto se usa para determinar el tamaño de teselas de terreno, que se usa para optimizar el rendimiento de visualización y análisis de datos. Cada tesela se aproxima para que no tenga más de 200,000 puntos de elevación de origen.
Utilice Agregar nivel de la pirámide del terreno y Agregar clase de entidad al terreno, seguido por Construir terreno para completar la definición del terreno y construir un terreno utilizable.
-
Las herramientas de geoprocesamiento para la construcción de terrenos están orientadas a los procedimientos de automatización de datos en secuencias de comandos Python y ModelBuilder. Considere utilizar el Asistente de terrenos de ArcCatalog o la ventana Catálogo para crear un terreno nuevo de forma interactiva. Para acceder al Asistente de terreno, haga clic con el botón derecho del ratón en el dataset de entidades y haga clic en Nuevo > terreno..
Sintaxis
Parámetro | Explicación | Tipo de datos |
in_feature_dataset |
El dataset de entidad donde se creará el dataset de terreno. | Feature Dataset |
out_terrain_name |
El dataset de terreno de salida. | String |
average_point_spacing |
La distancia horizontal promedio o nominal entre los puntos de datos utilizados para construir el terreno. Los datos recogidos por relevamientos topográficos fotogramétricos, LIDAR y SONAR generalmente tienen un espaciado conocido. Este es el valor que se debe utilizar. Si no está seguro del espaciado debe volver atrás y comprobar los datos en lugar de adivinarlo. El espaciado se proporciona en unidades horizontales del sistema de coordenadas del dataset de entidades. | Double |
max_overview_size (Opcional) |
La vista general del terreno es la representación más gruesa del dataset de terreno y es similar al concepto de vista en miniatura de las imágenes. El tamaño máximo representa el límite superior del número de puntos de medición tomados como muestra para crear la vista de conjunto. | Long |
config_keyword (Opcional) |
Palabra clave de configuración para ArcSDE. Se utiliza una palabra clave de configuración para optimizar el almacenamiento de la base de datos y generalmente la configura el administrador de base de datos. | 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 sólo se aplica cuando se especifica WINDOWSIZE en el parámetro Tipo de pirámide.
| 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) |
El umbral vertical utilizado para activar la simplificación secundaria con el filtro de Tamaño de ventana. El valor configurado debe ser igual o mayor que la precisión vertical de los datos. | Double |
Ejemplo de código
El siguiente ejemplo muestra cómo usar de esta herramienta en la ventana Python:
import arcpy
from arcpy import env
arcpy.CheckOutExtension('3D')
env.workspace = 'C:/data'
arcpy.CreateTerrain_3d('source.gdb/Redlands', 'Redlands_terrain', 5,
50000, '', 'WINDOWSIZE', 'ZMIN', 'NONE', 1)
El siguiente ejemplo muestra cómo usar esta herramienta en una secuencia de comandos 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
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")