Feature-Class zu Terrain hinzufügen (3D Analyst)
Zusammenfassung
Fügt einem Terrain-Dataset eine oder mehrere Feature-Classes hinzu.
Verwendung
-
Eingabe-Feature-Classes müssen sich im selben Feature-Dataset befinden wie das Terrain-Dataset.
-
Für das Terrain-Dataset muss bereits mindestens eine Pyramidenebene erstellt 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 neu berechnet werden muss.
-
Für in SDE gespeicherte Terrain-Datasets gilt Folgendes:
- Das Ziel-Terrain kann nicht als versioniert registriert werden.
- Die Eingabe-Feature-Class kann nicht als versioniert registriert werden.
Syntax
Parameter | Erläuterung | Datentyp |
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
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)
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")