Ajouter une classe d'entités au MNT (3D Analyst)

Récapitulatif

Ajoute une ou plusieurs classes d'entités à un jeu de données de MNT

Utilisation

Syntaxe

AddFeatureClassToTerrain_3d (in_terrain, in_features)
ParamètreExplicationType de données
in_terrain

MNT auquel sont ajoutées les classes d'entités. Un ou plusieurs niveaux de pyramide doivent déjà être créés pour le jeu de données de MNT.

Terrain Layer
in_features
[[in_feature_class, height_source, SF_type, group, min_resolution, max_resolution, overview, embedded, embedded_fields, anchored],...]

Classes d'entités ajoutées au MNT. Chaque classe d'entités doit résider dans le même jeu de données d'entité que le MNT, et les propriétés qui définissent le rôle de l'entité dans le MNT doivent être spécifiées.

Vous pouvez, si nécessaire, redimensionner la boîte de dialogue afin d'augmenter la largeur par défaut de ses colonnes.

Propriétés de la classe d'entités :

in_feature_class - Nom de la classe d'entités en entrée, ajoutée au jeu de données de MNT.

height_source - Champ indiquant les hauteurs des entités. Tous les champs numériques sont répertoriés en tant qu'options disponibles. Si la classe d'entités prend en charge les valeurs Z, le champ de géométrie de l'entité est inclus dans la liste et sélectionné en tant que valeur par défaut. Si la classe d'entités ne prend pas en charge les valeurs Z, le mot-clé <Aucun> est fourni par défaut. Les entités z-less ne présentent pas de hauteur et leurs valeurs sont interpolées à partir de la surface avant leur ajout.

SF_type - Représente le type de surface. Il indique comment les entités sont traitées lors de la triangulation de la surface. Il comprend des options pour les points cotés, les lignes de fracture et plusieurs types de polygones. Les lignes de fracture et les polygones présentent aussi des qualificateurs rigides et malléables, qui indiquent à une méthode d'interpolation si la surface recouvre les entités de manière lisse (malléable) ou avec une discontinuité potentiellement brusque (rigide).

group - Les données similaires, associées par thème représentant les mêmes entités géographiques à différents niveaux de détail, sont organisées en groupes. Une valeur identique est attribuée aux classes d'entités appartenant au même groupe. Prenons par exemple deux entités de la limite de la zone d'étude. L'une d'entre elles présente une limite très détaillée pour les applications à grande échelle et l'autre présente une limite grossière, mais les deux entités peuvent être attribuées au même groupe afin de garantir l'absence de superposition pour leurs échelles d'affichage respectives. Ce paramètre s'applique seulement aux lignes de fracture et aux types de surface de polygone.

min_resolution et max_resolution - Indiquent les plages de résolution de pyramide auxquelles les entités sont définies dans le jeu de données de MNT. Ces paramètres s'appliquent seulement aux lignes de fracture et aux types de surface de polygone.

overview - Indique si la classe d'entités s'applique sur l'affichage de la vue d'ensemble du jeu de données de MNT, qui constitue la représentation la plus grossière tracée par défaut en cas d'affichage complet. Pour optimiser les performances d'affichage, assurez-vous que les classes d'entités représentées dans la vue d'ensemble comportent une géométrie simplifiée. Par exemple, les lignes de fracture peuvent ne pas être assez visibles pour être significatives dans un affichage de la vue d'ensemble, alors qu'un polygone de découpage serait utile. Si votre entité de limite est détaillée, généralisez-la et utilisez la représentation la plus grossière pour la vue d'ensemble. La version détaillée doit être utilisée dans les niveaux de résolution de pyramide plus détaillés. Ce paramètre s'applique seulement aux lignes de fracture et aux types de surface de polygone.

embedded - Indique si la classe d'entités est intégrée dans le jeu de données de MNT. La définition de la valeur true pour cette option crée une copie des points de l'entité. La classe d'entités intégrée est seulement accessible avec les outils de jeu de données de MNT, mais n'est pas directement visible dans ArcCatalog ni sélectionnable via le navigateur Ajouter des données. Cette option s'applique seulement aux classes d'entités multi-points.

embedded_fields - Identifie les attributs LIDAR à stocker avec la classe d'entités intégrée. L'outil LAS vers multi-points permet de stocker les attributs LIDAR dans une classe d'entités multi-points.

anchored - Indique si la classe d'entités points est ancrée dans tous les niveaux de pyramide du MNT. Les points d'ancrage ne sont jamais filtrés ni affinés pour garantir leur présence sur la surface de MNT. Cette option s'applique seulement aux classes d'entités points uniques.

Value Table

Exemple de code

1er exemple de l'outil AddFeatureClassToTerrain (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"
params = "terrain.gdb/terrainFDS/points2 SHAPE masspoints 2 0 10 true false "\
       "points_embed <None> false"
arcpy.AddFeatureClassToTerrain_3d("test.gdb/featuredataset/terrain", params)
2e exemple de l'outil AddFeatureClassToTerrain (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

Rubriques connexes

Informations de licence

ArcView : Obligatoire 3D Analyst
ArcEditor : Obligatoire 3D Analyst
ArcInfo : Obligatoire 3D Analyst

7/10/2012