Créer un MNT (3D Analyst)
Récapitulatif
Crée un jeu de données de MNT.
Utilisation
Le MNT doit résider dans un jeu de données d'entité.
-
Le paramètre Espacement moyen des points doit être basé sur les données qui seront utilisées dans le MNT. Même si cette valeur n'a pas besoin d'être exacte, elle doit représenter une bonne approximation. Si les données ont été rassemblées à des densités considérablement différentes d'un emplacement à l'autre, accordez une pondération plus importante au plus petit espacement lorsque vous définissez cette valeur.
L'espacement des points permet de déterminer la taille de tuile du MNT, qui sert à optimiser l'analyse de données et les performances d'affichage. De manière approximative, chaque tuile ne peut contenir plus de 200 000 points d'altitude source.
Utilisez les outils Ajouter un niveau de pyramide au MNT, Ajouter une classe d'entités au MNT, puis Générer un MNT pour parachever la définition du MNT et créer un MNT utilisable.
-
Les outils de géotraitement pour la construction de MNT sont destinés aux procédures d'automatisation des données dans les scripts Python et dans ModelBuilder. Utilisez l'Assistant MNT dans ArcCatalog ou la fenêtre Catalogue pour créer un MNT de manière interactive. Pour accéder à l'Assistant MNT, cliquez avec le bouton droit de la souris sur le jeu de données d'entité, puis cliquez sur Nouveau > MNT.
Syntaxe
Paramètre | Explication | Type 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.
| 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.
| 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.
| 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
The following sample demonstrates the use of this tool in the Python window:
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)
The following sample demonstrates the use of this tool in a stand-alone Python script:
"""**************************************************************************** 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")