Feature-Class zu Terrain hinzufügen (3D Analyst)

Zusammenfassung

Fügt einem Terrain-Dataset eine oder mehrere Feature-Classes hinzu.

Verwendung

  • Eingabe-Features müssen sich im selben Feature-Dataset befinden wie das Terrain-Dataset.

  • Für das Terrain-Dataset muss bereits mindestens eine Pyramidenebene definiert worden sein.

  • Abhängig vom Oberflächentyp, der mit Features verknüpft ist, die einem Terrain hinzugefügt wurden, muss das Terrain-Dataset möglicherweise mit Terrain berechnen neu erstellt werden. Das Dialogfeld Eigenschaften des Terrain-Datasets in ArcCatalog und das Dialogfeld Eigenschaften des Terrain-Layers in ArcMap enthalten beide einen Hinweis darauf, ob das Dataset erneut berechnet werden muss.

  • Aktivieren Sie die Option "Übersicht" für Bruchkanten- und Polygon-Oberflächen-Feature-Typen nur dann, wenn Features vereinfachte Geometrien enthalten und für den erwarteten Anzeigemaßstab visuell relevant sind. Bruchkanten können zum Beispiel nicht ausreichend sichtbar sein, um für eine Übersicht relevant zu sein, wohingegen ein Clip-Polygon nützlich sein kann. Wenn das Grenz-Feature detailliert ist, sollten Sie eine Generalisierung in Betracht ziehen und die gröbere Darstellung für die Übersicht verwenden. Die detaillierte Version sollte bei Anzeigemaßstäben verwendet werden, die besser für eine detailliertere Auflösung geeignet sind.

  • Für Terrain-Datasets, die in einer Enterprise-Geodatabase gespeichert sind, gilt Folgendes:

    • Das Ziel-Terrain kann nicht als versioniert registriert werden.
    • Die Eingabe-Feature-Class kann nicht als versioniert registriert werden.

Syntax

arcpy.3d.AddFeatureClassToTerrain(in_terrain, in_features)
ParameterErklärungDatentyp
in_terrain

Das Terrain, dem Feature-Classes hinzugefügt werden. Für das Terrain-Dataset muss bereits mindestens eine Pyramidenebene erstellt worden sein.

Terrain Layer
in_features
[[in_features, height_field, SF_type, group, min_resolution, max_resolution, overview, embed, embed_name, embed_fields, anchor],...]

Identifiziert Features, die dem Terrain hinzugefügt werden. Jedes Feature muss sich im gleichen Feature-Dataset wie das Terrain befinden und dessen Rolle muss anhand der folgenden Eigenschaften definiert werden:

  • Input FeaturesName der Feature-Class, die dem Terrain hinzugefügt wird.
  • Height FieldFeld mit den Höheninformationen des Features. Es kann ein beliebiges numerisches Feld angegeben werden, und Z-aktivierte Features können ebenfalls das Geometriefeld auswählen. Bei Auswahl der Option <keine> werden Z-Werte von der Oberfläche interpoliert.
  • TypeOberflächen-Feature-Typ, der festlegt, wie das Feature zu einem Terrain-Dataset beitragen soll. Massenpunkte, die Features angeben, die zu Z-Messungen beitragen; Bruchkanten geben lineare Features mit bekannten Z-Messungen und mehrere Polygontypen an. Bruchkanten und Polygon-basierte Feature-Typen haben auch "harte" und "weiche" Parameter, die das Interpolationsverhalten um die Kanten des Features beim Exportieren in Raster angeben. Weiche Features weisen allmähliche Neigungsänderungen auf, wohingegen harte Features abrupte Unterbrechungen darstellen.
  • GroupDefiniert die Gruppe des jeweils beteiligten Features. Unspezifische Bruchkanten und Polygon-Oberflächen-Features, die dieselben geographischen Features auf unterschiedlichen Detaillierungsebenen darstellen, sind für die Anzeige in bestimmten Maßstabsbereichen vorgesehen. Daten, die dieselben geographischen Features auf unterschiedlichen Detaillierungsebenen darstellen, können durch Zuweisen desselben numerischen Wertes in Gruppen zusammengefasst werden. Wenn beispielsweise zwei Grenz-Features mit einer hohen und einer niedrigen Detaillierungsebene derselben Gruppe zugewiesen werden, kann sichergestellt werden, dass deren verknüpfte Anzeigemaßstabsbereiche keine Überlappungen aufweisen.
  • Min/Max ResolutionLegt den Bereich der Pyramidenauflösungen fest, bei denen das Feature im Terrain erzwungen wird. Massenpunkte müssen den kleinsten und größten Wertebereich verwenden.
  • OverviewGibt an, ob das Feature bei der gröbsten Darstellung des Terrain-Dataset erzwungen wird. Um die Darstellungs-Performance zu maximieren, stellen Sie sicher, dass in der Übersicht dargestellte Feature-Classes eine vereinfachte Geometrie enthalten. Dies ist nur für Feature-Typen zulässig, die keine Massenpunkte sind.
  • EmbedWenn diese Option auf TRUE eingestellt ist, weist dies darauf hin, dass die Quell-Features in eine verborgene Feature-Class kopiert werden, die vom Terrain referenziert und ausschließlich für das Terrain verfügbar ist. Eingebettete Features sind nicht direkt sichtbar, da nur über bestimmte Terrain-Werkzeuge darauf zugegriffen werden kann. Dies ist nur für Multipoint-Features zulässig.
  • Embed NameName der eingebetteten Feature-Class. Dies gilt nur dann, wenn das Feature eingebettet ist.
  • Embed FieldsGibt BLOB-Feldattribute an, die in der eingebetteten Feature-Class beibehalten werden sollen. Diese Attribute können zum Symbolisieren des Terrains verwendet werden. Die LAS-Attribution kann mit dem Werkzeug LAS in Multipoint in BLOB-Feldern von Multipoint-Features gespeichert werden.
  • AnchorGibt an, ob die Point-Feature-Class für alle Terrain-Pyramidenebenen erhalten bleibt. Ankerpunkte werden nie gefiltert oder ausgedünnt, um sicherzustellen, dass sie in der Terrain-Oberfläche erhalten bleiben. Diese Option gilt nur für Single-Point-Feature-Classes.
Value Table

Abgeleitete Ausgabe

NameErklärungDatentyp
derived_out_terrain

Das aktualisierte Terrain.

Terrain-Layer

Codebeispiel

AddFeatureClassToTerrain – Beispiel 1 (Python-Fenster)

Anhand des folgenden Beispiels wird die Verwendung dieses Werkzeugs im Python-Fenster veranschaulicht.

arcpy.env.workspace = "C:/data"
terrain_data = ["terrain.gdb/terrainFDS/points2", "SHAPE", "masspoints", 2, 0, 
                10, "true", "false", "points_embed", "<None>", "false"]
arcpy.AddFeatureClassToTerrain_3d("test.gdb/featuredataset/terrain", terrain_data)
AddFeatureClassToTerrain – Beispiel 2 (eigenständiges Skript)

Im folgenden Beispiel wird die Verwendung dieses Werkzeugs in einem eigenständigen Python-Skript veranschaulicht.

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

Lizenzinformationen

  • Basic: Erfordert 3D Analyst
  • Standard: Erfordert 3D Analyst
  • Advanced: Erfordert 3D Analyst

Verwandte Themen