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
arcpy.3d.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ètre | Explication | Type 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.
| 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.
| 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 WINDOWSIZE. La valeur doit être supérieure ou égale à la précision verticale des données. | Double |
Sortie dérivée
Nom | Explication | Type de données |
derived_out_terrain | Nouveau jeu de données de MNT. | MNT |
Exemple de code
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)
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
Vous avez un commentaire à formuler concernant cette rubrique ?