Créer un MNT (3D Analyst)

Résumé

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

Utilisation

  • La valeur du paramètre Espacement moyen des points doit refléter approximation valable des données qui seront utilisées dans le MNT, car elle servira à définir la taille des tuiles internes du MNT qui sont utilisées pour optimiser l'analyse des données et les performances d'affichage. De manière approximative, chaque tuile ne peut contenir plus de 200 000 points d'altitude source. Si les données ont été rassemblées à des densités considérablement différentes d'un emplacement à un autre, la valeur spécifiée doit privilégier le plus petit espacement.

  • Pour réaliser le MNT, utilisez l'outil Ajouter un niveau de pyramide au MNT pour spécifier la définition de pyramide, puis l'outil Ajouter une classe d'entité au MNT pour référencer les sources de données qui participent à la surface, et enfin l'outil Générer un MNT pour achever la construction du MNT.

Syntaxe

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

Jeu de données d'entité devant contenir le jeu de données de MNT.

Feature Dataset
out_terrain_name

Nom du jeu de données de MNT.

String
average_point_spacing

Distance horizontale moyenne entre les points de données qui seront utilisés dans la modélisation du MNT. Les mesures reposant sur des capteurs, telles que les relevés photogrammétriques, de radar optique (LIDAR) et sonar, possèdent généralement un espacement connu qui doit être utilisé. L'espacement doit être 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 s'apparente au concept de miniature d'image. Il s'agit de la représentation la plus grossière du jeu de données de MNT. La taille maximale représente la limite supérieure du nombre de points de mesure pouvant être échantillonnés pour créer la vue d'ensemble.

Long
config_keyword
(Facultatif)

Mot-clé de configuration permettant d'optimiser le stockage du MNT dans une base de données d'entreprise.

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

  • 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 de l’option 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 WINDOWSIZE. La valeur doit être supérieure ou égale à la précision verticale des données.

Double

Sortie dérivée

NomExplicationType de données
derived_out_terrain

Nouveau jeu de données de MNT.

MNT

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.

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

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

Informations de licence

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

Rubriques connexes