Deutsch

How To: Hinzufügen von Z-Anfangswerten und -Endwerten zu einem Linien-Feature mithilfe eines Python-Skripts

Zusammenfassung

Die Anfangshöhe und Endhöhe eines Linien-Features können nicht direkt als Attributwerte eingefügt werden. Das Werkzeug "Shape interpolieren" kann nur Z-Werte zur Feature-Geometrie hinzufügen, und das Werkzeug "Oberflächeninformationen hinzufügen" kann nur durch Definieren der Höhenoberfläche den Höhenmittelwert eines Features hinzufügen. Die Z-Anfangswerte und -Endwerte können jedoch einem Linien-Feature als Attributwerte hinzugefügt werden, indem das Werkzeug "Shape interpolieren" mit einem Python-Skript kombiniert wird.

Vorgehensweise

In den Anweisungen wird beschrieben, wie einem Linien-Feature Z-Anfangswerte und -Endwerte hinzugefügt werden.

  1. Führen Sie das Werkzeug Shape interpolieren aus, um den gewünschten Linien-Features die Z-Wert-Stützpunkte hinzuzufügen. Geben Sie im Feld Eingabe-Oberfläche die Höhendaten ein, und wählen Sie in der Dropdown-Liste Eingabe-Feature-Class das gewünschte Linien-Feature aus.

    The image of the Interpolate Shape tool.
     
  2. Öffnen Sie die Attributtabelle des neu erstellten Linien-Features, und fügen Sie zwei neue Felder mit dem Datentyp Float oder Double für den Z-Startwert und -Endwert hinzu. Weitere Informationen zum Hinzufügen von Feldern finden Sie im folgenden Webhilfedokument: ArcGIS Desktop: Hinzufügen von Feldern.

    Image of newly created Z fields.
     
  3. Führen Sie in der Python-Konsole (Geoverarbeitung > Python) das folgende Skript aus.
     
    import arcpy
    
    #Geben Sie den gewünschten Workspace an.
    input_fc = r'\'
    
    #Diesen Teil entsprechend den in Schritt 2 erstellten Feldnamen ändern
    myfield1 = "Z_Start"
    myfield2 = "Z_End"
    myshape = "SHAPE@"
    
    #Die in der Attributtabelle des Linien-Features verfügbaren Zeilen durchlaufen und die Z-Werte eingeben
    with arcpy.da.UpdateCursor(input_fc, (myshape, myfield1, myfield2)) as cursor:
        for row in cursor:
            geom = row[0]
            startpt = row[0].firstPoint
            endpt = row[0].lastPoint
            row[1] = round(startpt.Z, 2)
            row[2] = round(endpt.Z, 2)
            cursor.updateRow(row)

    The image of the sample script.
     
  4. Die zwei neuen Felder, die in Schritt 2 erstellt wurden, werden mit dem Ergebnis gefüllt.

    Image of populated Z fields.

Referenzinformationen