Créer un MNT (3D Analyst)

Récapitulatif

Crée un jeu de données de MNT.

Utilisation

Syntaxe

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})
ParamètreExplicationType de données
in_feature_dataset

Jeu de données d'entité où est créé le jeu de données de MNT.

Feature Dataset
out_terrain_name

Jeu de données de MNT en sortie.

String
average_point_spacing

Distance moyenne horizontale, ou nominale, entre les points pour les données utilisées afin de créer le MNT. L'espacement des données recueillies pour les relevés photogrammétriques, LIDAR et SONAR est généralement connu. Cette valeur doit être utilisée. En cas de doute sur l'espacement, ne jouez pas aux devinettes et prenez le temps de vérifier les données. L'espacement est exprimé dans les unités horizontales du système de coordonnées du jeu de données d'entité.

Double
max_overview_size
(Facultatif)

La vue d'ensemble du MNT est la représentation la plus grossière du jeu de données de MNT, et elle ressemble au concept de la miniature. La taille maximale représente la limite supérieure du nombre de points de mesure échantillonnés pour créer la vue d'ensemble.

Long
config_keyword
(Facultatif)

Mot-clé de configuration pour ArcSDE. Un mot-clé de configuration permet d'optimiser le stockage de la base de données et il est généralement configuré par l'administrateur de base de données.

String
pyramid_type
(Facultatif)

Méthode d'affinage de points utilisée pour construire les erreurs systématiques.

  • WINDOWSIZEL'affinage s'effectue en sélectionnant des points de données dans la surface définie par une taille de fenêtre donnée pour chaque niveau de pyramide à l'aide du critère spécifié dans le paramètre Méthode de la taille de fenêtre.
  • ZTOLERANCEL'affinage s'effectue en spécifiant la précision verticale de chaque niveau de pyramide par rapport à la résolution maximale des points de données.
String
windowsize_method
(Facultatif)

Critère utilisé pour la sélection des points dans la surface définie par la taille de fenêtre. Ce paramètre s'applique uniquement lorsque WINDOWSIZE est spécifié dans le paramètre Type de pyramide.

  • ZMINPoint présentant la plus petite valeur d'altitude.
  • ZMAXPoint présentant la plus grande valeur d'altitude.
  • ZMEANPoint présentant la valeur d'altitude la plus proche de la moyenne de toutes les valeurs.
  • ZMINMAXPoints présentant la valeur d'altitude la plus petite et la valeur d'altitude la plus grande.
String
secondary_thinning_method
(Facultatif)

Spécifie des options d'affinage supplémentaires pour réduire le nombre de points utilisé sur des surfaces planes lorsque les pyramides de taille de fenêtre sont utilisées. Une surface est considérée comme plane si les hauteurs des points de cette surface sont conformes à la valeur fournie pour le paramètre Seuil d'affinage secondaire. Ses répercussions sont plus notables à des niveaux de pyramide de résolution plus élevée, car les petites surfaces ont plus de chances d'être planes que les grandes.

  • NONEAucun affinage secondaire n'est effectué. Il s'agit du paramétrage par défaut.
  • MILDOptimal pour conserver les discontinuités linéaires (côtés de bâtiments et limites de forêt, par exemple). Il est recommandé pour les lidar comprenant des points terrestres et non terrestres. Il affine moins de points.
  • MODERATEOffre un bon compromis entre performances et précision. Il ne conserve pas autant de détail que l'affinage léger, mais il s'en rapproche grandement tout en supprimant plus de points dans l'ensemble.
  • STRONGSupprime le plus de points, mais est moins susceptible de conserver des entités fortement délimitées. Son utilisation doit être limitée aux surfaces où la pente a tendance à changer progressivement. Par exemple, l'affinage élevé serait efficace pour un lidar de terre nue et des données bathymétriques.
String
secondary_thinning_threshold
(Facultatif)

Seuil vertical utilisé pour activer l'affinage secondaire avec le filtre Taille de fenêtre. La valeur doit être supérieure ou égale à la précision verticale des données.

Double

Exemple de code

1er exemple d'utilisation de l'outil CreateTerrain (fenêtre Python)

L'exemple suivant illustre l'utilisation de cet outil dans la fenêtre 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)
2e exemple d'utilisation de l'outil CreateTerrain (script autonome)

L'exemple suivant illustre l'utilisation de cet outil dans un script Python autonome :

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

Environnements

Thèmes connexes

9/12/2013