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

Synthèse

Ajoute une ou plusieurs classes d'entités au MNT.

Utilisation

  • Les entités en entrée doivent se trouver dans le même jeu de données d'entité que le jeu de données de MNT.

  • Un ou plusieurs niveaux de pyramide doivent déjà être définis pour le jeu de données de MNT.

  • Selon le type de surface associé aux entités ajoutées à un MNT, le jeu de données de MNT peut nécessiter une regénération via l'outil Générer un MNT. La boîte de dialogue Propriétés du jeu de données de MNT dans ArcCatalog et la boîte de dialogue Propriétés de la couche de MNT dans ArcMap indiquent toutes deux s'il est nécessaire de régénérer le jeu de données.

  • Activez l'option de vue d'ensemble pour les lignes de fracture et les types d'entités surfaciques que si les entités contiennent une géométrie simplifiée et qu'elles sont visuellement pertinentes pour l'échelle d'affichage anticipé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 l'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 à des échelles d'affichage qui conviennent mieux à sa résolution de détail.

  • Pour les jeux de données de MNT stockés dans une géodatabase d'entreprise :

    • Le MNT cible ne peut pas être inscrit comme versionné.
    • La classe d'entités en entrée ne peut pas être inscrite comme versionnée.

Paramètres

ÉtiquetteExplicationType de données
MNT en entrée

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
Classe d'entités en entrée

Identifie les 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 son rôle doit être défini via les propriétés suivantes :

  • Input FeaturesNom de la classe d'entités ajoutée au MNT.
  • Height FieldChamp contenant les informations de hauteur de l'entité. N’importe quel champ numérique peut être spécifié et les entités prenant en charge les valeurs z peuvent également choisir le champ de géométrie. Si l’option <aucun> est choisie, les valeurs z sont interpolées depuis la surface.
  • TypeType d'entité surfacique qui définit la façon dont les entités contribuent au MNT. Les points de masse représentent les entités contribuant aux mesures z, les lignes de fracture représentent les entités linéaires avec des mesures z connues et plusieurs types de polygones. Les types d'entités surfaciques et de lignes de fracture présentent également des qualificateurs rigides et malléables qui définissent le comportement d'interpolation autour des tronçons de l'entité lors de l'exportation en raster. Les entités malléables représentent des changements graduels au niveau de la pente, tandis que les entités rigides représentent des discontinuités nettes.
  • GroupDéfinit le groupe de chaque entité participante. La non spécification des lignes de fracture et des entités surfaciques représentant les mêmes entités géographiques à des niveaux de détail différents permet un affichage à différentes plages d'échelles. Les données représentant les mêmes entités géographiques à différents niveaux de détail peuvent être regroupées en attribuant la même valeur numérique. Par exemple, l'attribution de deux entités limites avec un niveau de détail élevé et faible au même groupe permet de s'assurer que leur plage d'échelle d'affichage associée n'est pas superposée.
  • Min/Max ResolutionDéfinit la plage des résolutions de pyramide auxquelles l'entité est définie sur le MNT. Les points cotés doivent utiliser la plage de valeurs la plus petite et la plus grande.
  • OverviewIndique si l'entité est définie à la représentation la plus grossière du jeu de données de MNT. 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. Valide uniquement pour les types d'entités autres que les points cotés.
  • EmbedSi vous définissez cette option sur TRUE (VRAI), les entités source seront copiées dans une classe d’entités masquée qui sera référencée par le MNT et qui sera uniquement disponible sur le MNT. Les entités intégrées ne sont pas directement consultables, car elles sont uniquement accessibles via les outils de MNT. Valide uniquement pour les entités multi-points.
  • Embed NameNom de la classe d'entités incorporée. S'applique uniquement si l'entité est incorporée.
  • Embed FieldsSpécifie les attributs des champs BLOB à conserver dans la classe d’entités intégrée. Ces attributs permettent de symboliser le MNT. Attribution LAS à stocker dans des champs BLOB d’entités multi-points via l’outil LAS To Multipoint (LAS vers multi-points).
  • AnchorIndique 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

Sortie obtenue

ÉtiquetteExplicationType de données
MNT en entrée mis à jour

MNT mis à jour.

Couche de MNT

arcpy.ddd.AddFeatureClassToTerrain(in_terrain, in_features)
NomExplicationType 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_features, height_field, SF_type, group, min_resolution, max_resolution, overview, embed, embed_name, embed_fields, anchor],...]

Identifie les 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 son rôle doit être défini via les propriétés suivantes :

  • Input FeaturesNom de la classe d'entités ajoutée au MNT.
  • Height FieldChamp contenant les informations de hauteur de l'entité. N’importe quel champ numérique peut être spécifié et les entités prenant en charge les valeurs z peuvent également choisir le champ de géométrie. Si l’option <aucun> est choisie, les valeurs z sont interpolées depuis la surface.
  • TypeType d'entité surfacique qui définit la façon dont les entités contribuent au MNT. Les points de masse représentent les entités contribuant aux mesures z, les lignes de fracture représentent les entités linéaires avec des mesures z connues et plusieurs types de polygones. Les types d'entités surfaciques et de lignes de fracture présentent également des qualificateurs rigides et malléables qui définissent le comportement d'interpolation autour des tronçons de l'entité lors de l'exportation en raster. Les entités malléables représentent des changements graduels au niveau de la pente, tandis que les entités rigides représentent des discontinuités nettes.
  • GroupDéfinit le groupe de chaque entité participante. La non spécification des lignes de fracture et des entités surfaciques représentant les mêmes entités géographiques à des niveaux de détail différents permet un affichage à différentes plages d'échelles. Les données représentant les mêmes entités géographiques à différents niveaux de détail peuvent être regroupées en attribuant la même valeur numérique. Par exemple, l'attribution de deux entités limites avec un niveau de détail élevé et faible au même groupe permet de s'assurer que leur plage d'échelle d'affichage associée n'est pas superposée.
  • Min/Max ResolutionDéfinit la plage des résolutions de pyramide auxquelles l'entité est définie sur le MNT. Les points cotés doivent utiliser la plage de valeurs la plus petite et la plus grande.
  • OverviewIndique si l'entité est définie à la représentation la plus grossière du jeu de données de MNT. 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. Valide uniquement pour les types d'entités autres que les points cotés.
  • EmbedSi vous définissez cette option sur TRUE (VRAI), les entités source seront copiées dans une classe d’entités masquée qui sera référencée par le MNT et qui sera uniquement disponible sur le MNT. Les entités intégrées ne sont pas directement consultables, car elles sont uniquement accessibles via les outils de MNT. Valide uniquement pour les entités multi-points.
  • Embed NameNom de la classe d'entités incorporée. S'applique uniquement si l'entité est incorporée.
  • Embed FieldsSpécifie les attributs des champs BLOB à conserver dans la classe d’entités intégrée. Ces attributs permettent de symboliser le MNT. Attribution LAS à stocker dans des champs BLOB d’entités multi-points via l’outil LAS To Multipoint (LAS vers multi-points).
  • AnchorIndique 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

Sortie obtenue

NomExplicationType de données
derived_out_terrain

MNT mis à jour.

Couche de MNT

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.

arcpy.env.workspace = "C:/data"
terrain_data = ["terrain.gdb/terrainFDS/points2", "SHAPE", "masspoints", 2, 0, 
                10, "true", "false", "points_embed", "<None>", "false"]
arcpy.ddd.AddFeatureClassToTerrain("test.gdb/featuredataset/terrain", terrain_data)
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

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

Rubriques connexes