Crear terreno (3D Analyst)

Resumen

Crea un nuevo dataset de terreno.

Uso

Sintaxis

CreateTerrain_3d (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

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.

  • WINDOWSIZELa simplificación se realiza al seleccionar los puntos de datos en el área definida por un tamaño de ventana determinado para cada nivel de pirámide usando el criterio especificado en el parámetro Método de tamaño de ventana.
  • 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 sólo se aplica cuando se especifica WINDOWSIZE en el parámetro Tipo de pirámide.

  • 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.

  • NINGUNONo 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)

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

Ejemplo 1 de CreateTerrain (ventana de Python)

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)
Ejemplo 2 de CreateTerrain (secuencia de comandos independiente)

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

Entornos

Temas relacionados

9/11/2013