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