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

Zusammenfassung

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

Verwendung

Syntax

AddFeatureClassToTerrain_3d (in_terrain, in_features)
ParameterErläuterungDatentyp
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_feature_class, height_source, SF_type, group, min_resolution, max_resolution, overview, embedded, embedded_fields, anchored],...]

Das Feature-Classes, die dem Terrain hinzugefügt werden. Jede Feature-Class muss sich im gleichen Feature-Dataset wie das Terrain befinden, und es müssen Eigenschaften angegeben werden, die die Rolle des Features im Terrain definieren.

Die Größe des Dialogfelds kann angepasst werden, falls die Spalten in der Standardeinstellung zu schmal sind.

Feature-Class-Eigenschaften:

in_feature_class: Der Name der Eingabe-Feature-Class, die dem Terrain-Dataset hinzugefügt wird.

height_source: Das Feld, das Höhenwerte für die Features bereitstellt. Alle Zahlenfelder sind als verfügbare Optionen aufgeführt. Wenn die Feature-Class Z-aktiviert ist, ist das Geometriefeld des Features in der Liste enthalten und wird als Standardwert ausgewählt. Wenn die Feature-Class nicht Z-aktiviert ist, wird standardmäßig das Schlüsselwort <Keine> verwendet. Features ohne Z-Wert besitzen keine Höhe. Ihre Z-Werte werden vor dem Hinzufügen von der Oberfläche interpoliert.

SF_type: Dies ist ein Oberflächen-Feature-Typ. Er definiert, wie die Features beim Triangulieren der Oberfläche behandelt werden. Zu den Optionen gehören Massenpunkte, Bruchkanten und mehrere Polygontypen. Bruchkanten und Polygone verfügen außerdem über harte und weiche Parameter. Diese geben gegenüber dem Interpolator an, ob die Oberfläche die Features glatt (weich) oder eventuell mit abrupten Unterbrechungen (hart) schneidet.

group: Thematisch ähnliche Daten, die dieselben geographischen Features, aber auf unterschiedlichen Detaillierungsebenen darstellen, werden in Gruppen zusammengefasst. Feature-Classes, die derselben Gruppe angehören, wird derselbe Wert zugewiesen. Wenn zum Beispiel zwei Features für die Grenzen eines Untersuchungsgebiets vorhanden sind und eines davon eine sehr detaillierte Grenze aufweist, die für große Anwendungen genutzt wird, und das andere eine grobe Grenze, können beide Features derselben Gruppe zugewiesen werden, um so sicherzustellen, dass es bei den jeweiligen Anzeigemaßstäben nicht zu Überlappungen kommt. Dieser Parameter gilt nur für Bruchkanten und Polygonoberflächentypen.

min_resolution und max_resolution: Definiert die Pyramidenauflösungsbereiche, die für Features im Terrain-Dataset erzwungen werden. Diese Parameter gelten nur für Bruchkanten und Polygonoberflächentypen.

overview: Gibt an, ob die Feature-Class bei der Übersichtsanzeige des Terrain-Datasets erzwungen wird. Hierbei handelt es sich um die gröbste Darstellung, die bei voller Ausdehnung standardmäßig gezeichnet wird. Um die Darstellungs-Performance zu maximieren, stellen Sie sicher, dass in der Übersicht dargestellten Feature-Classes eine vereinfachte Geometrie enthalten. Bruchkanten können zum Beispiel nicht sichtbar genug sein, um für eine Übersicht relevant zu sein, wohingegen ein Clip-Polygon nützlich sein kann. Wenn das vorliegende Grenzen-Feature detailliert ist, sollten Sie eine Generalisierung in Betracht ziehen und die gröbere Darstellung für die Übersicht verwenden. Die detaillierte Version sollte für Pyramidenebenen mit detaillierter Auflösung verwendet werden. Dieser Parameter gilt nur für Bruchkanten und Polygonoberflächentypen.

embedded: Gibt an, ob die Feature-Class in das Terrain-Dataset eingebettet wird. Wenn diese Option auf "True" festgelegt wird, wird eine Kopie der Feature-Punkte erstellt. Auf die eingebettete Feature-Class kann nur mit Werkzeugen zugegriffen werden, die sich auf Terrain-Datasets beziehen. Sie ist in ArcCatalog nicht direkt sichtbar und kann nicht im Browser "Daten hinzufügen" ausgewählt werden. Diese Option gilt nur für Multipoint-Feature-Classes.

embedded_fields: Identifiziert die LIDAR-Attribute, die mit der eingebetteten Feature-Class gespeichert werden sollen. Das Werkzeug "LAS zu Multipoint" ermöglicht das Speichern von LIDAR-Attributen in einer Multipoint-Feature-Class.

anchored: Gibt 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

Codebeispiel

AddFeatureClassToTerrain – Beispiel 1 (Python-Fenster)

Anhand des folgenden Beispiels wird veranschaulicht, wie dieses Werkzeug im Python-Fenster verwendet wird:

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)
AddFeatureClassToTerrain – Beispiel 2 (eigenständiges Skript)

Im folgenden Beispiel wird veranschaulicht, wie dieses Werkzeug in einem eigenständigen Python-Skript verwendet wird:

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

Umgebungen

Verwandte Themen

Lizenzinformationen

ArcView: Erfordert 3D Analyst
ArcEditor: Erfordert 3D Analyst
ArcInfo: Erfordert 3D Analyst

7/10/2012