Features transformieren (Editing)

Zusammenfassung

Konvertiert die Koordinaten von Eingabe-Features von einer Position in eine andere durch Skalieren, Verschieben und Drehen basierend auf den Transformations-Links zwischen bekannten entsprechenden Passpunkten.

Verwendung

    Vorsicht:

    Mit diesem Werkzeug werden die Eingabedaten geändert. Weitere Informationen und Strategien zur Vermeidung unerwünschter Datenänderungen finden Sie unter Werkzeuge, die Eingabedaten ändern oder aktualisieren.

    Hinweis:

    Alle Eingaben müssen sich im selben Koordinatensystem befinden.

  • Als Eingabe-Features sind Punkte, Linien, Polygone oder Annotationen zulässig.

  • Eingabe-Link-Features sind Linien, die Transformations-Links zwischen bekannten entsprechenden Passpunkten darstellen. Der Startpunkt eines Links ist die Position des Quellpasspunktes und der Endpunkt des Links ist die entsprechende Position des Zielpasspunktes.

  • Die Transformation funktioniert in einem kartesischen oder planaren Koordinatensystem. Es wird ein projiziertes Koordinatensystem empfohlen. Die Verwendung eines geographischen Koordinatensystems mit Breitengrad- und Längengradwerten kann zu Verzerrung oder zu Berechnungsfehlern führen.

  • Alle Eingabe-Features werden mit einer der drei Transformationsmethoden transformiert: affine Transformation, Ähnlichkeitstransformation und projektive Transformation. Jede Methode erfordert eine Mindestanzahl an Transformations-Links. Weitere Informationen sowie Transformationsformeln finden Sie unter Transformieren eines Features.

    • AFFINE: Erfordert mindestens drei Transformations-Links.
    • PROJECTIVE: Erfordert mindestens vier Transformations-Links.
    • SIMILARITY: Erfordert mindestens zwei Transformations-Links.
  • Das transformierte Ergebnis hängt von der Qualität der Eingabe-Links ab. Ein Link sollte von einer bekannten Quellposition starten und an der entsprechenden Zielposition enden, die auch als Passpunkte bezeichnet werden. Je besser die Passpunkte festgelegt sind, desto genauer fällt das transformierte Ergebnis aus. Die Koordinaten der Anfangs- und Zielpositionen der Links dienen zur Ableitung der Transformationsparameter, die den bestmöglichen Kompromiss zwischen den Quell- und Zielpasspunkten darstellen. Auch wenn Sie die Transformationsparameter verwenden, um die tatsächlichen Quellpasspunkte zu transformieren, stimmen die resultierenden Positionen nicht mit den Positionen der Zielpasspunkte überein. Dieser Fehler wird als Restfehler bezeichnet und für jeden Transformations-Link erstellt. Die Restfehler für Eingabe-Links können als Option an eine Tabelle ausgegeben werden, die die folgenden Felder enthält:

    • Orig_FID: Die ID des Eingabe-Link-Features
    • X_Source: Die X-Koordinate der Quell- oder Von-Endposition des Links
    • Y_Source: Die Y-Koordinate der Quell- oder Von-Endposition des Links
    • X_Destination: Die X-Koordinate der Ziel- oder Bis-Endposition des Links
    • Y_Destination: Die Y-Koordinate der Ziel- oder Bis-Endposition des Links
    • Residual_Error: Der Restfehler der transformierten Position

    Der RMS-Fehler (RMSE, Root Mean Square Error), der auch als RMS-Abweichung (RMSD, Root Mean Square Deviation) bezeichnet wird, wird basierend auf den Restfehlern berechnet und gibt die allgemeine Eignung der abgeleiteten Transformation an. Der RMSE-Wert wird an die Verarbeitungsmeldungen ausgegeben. Er ist auch ein abgeleiteter Ausgabeparameter, der in einem Skript oder Modell-Workflow verwendet werden kann.

    Weitere Informationen zu den Berechnungen der Restfehler und des RMSE finden Sie im Thema Transformieren von Features. Sie müssen den zulässigen RMSE-Wert basierend auf Ihrem Wissen über die Positionsgenauigkeit der Eingabe-Features und der Passpunkte bestimmen. Wenn der RMSE-Wert zu hoch ist, müssen Sie die Restfehler überprüfen und die Links mit hohen Restfehlern verwerfen oder ersetzen.

Parameter

BeschriftungErläuterungDatentyp
Eingabe-Features

Die Eingabe-Features, deren Koordinaten transformiert werden. Dies können Punkte, Linien, Polygone oder Annotationen sein.

Feature Layer
Eingabe-Link-Features

Die Eingabe-Link-Features, die bekannte Passpunkte für die Transformation verknüpfen.

Feature Layer
Methode
(optional)

Gibt die Transformationsmethode für die Konvertierung von Eingabe-Feature-Koordinaten an.

  • Affine TransformationEs sind mindestens drei Transformations-Links erforderlich. Dies ist die Standardeinstellung.
  • Projektive TransformationEs sind mindestens vier Transformations-Links erforderlich.
  • ÄhnlichkeitstransformationEs sind mindestens zwei Transformations-Links erforderlich.
String
Ausgabe-Link-Tabelle
(optional)

Die Ausgabetabelle mit den Eingabe-Links und den jeweils zugehörigen Restfehlern.

Table

Abgeleitete Ausgabe

BeschriftungErläuterungDatentyp
RMSE

Meldet den RMSE-Fehlerwert.

Double
Aktualisierte Eingabe-Features

Die aktualisierten Eingabe-Features.

Feature Layer

arcpy.management.TransformFeatures(in_features, in_link_features, {method}, {out_link_table})
NameErläuterungDatentyp
in_features

Die Eingabe-Features, deren Koordinaten transformiert werden. Dies können Punkte, Linien, Polygone oder Annotationen sein.

Feature Layer
in_link_features

Die Eingabe-Link-Features, die bekannte Passpunkte für die Transformation verknüpfen.

Feature Layer
method
(optional)

Gibt die Transformationsmethode für die Konvertierung von Eingabe-Feature-Koordinaten an.

  • AFFINEEs sind mindestens drei Transformations-Links erforderlich. Dies ist die Standardeinstellung.
  • PROJECTIVEEs sind mindestens vier Transformations-Links erforderlich.
  • SIMILARITYEs sind mindestens zwei Transformations-Links erforderlich.
String
out_link_table
(optional)

Die Ausgabetabelle mit den Eingabe-Links und den jeweils zugehörigen Restfehlern.

Table

Abgeleitete Ausgabe

NameErläuterungDatentyp
out_rmse

Meldet den RMSE-Fehlerwert.

Double
out_feature_class

Die aktualisierten Eingabe-Features.

Feature Layer

Codebeispiel

TransformFeatures: Beispiel 1 (Python-Fenster)

Das folgende Skript für das Python-Fenster veranschaulicht, wie die Funktion TransformFeatures im unmittelbaren Modus verwendet wird.

import arcpy
arcpy.env.workspace = "C:/data"
arcpy.edit.TransformFeatures("source_Roads.shp","control_Links.shp",
                             "AFFINE")
TransformFeatures: Beispiel 2: (eigenständiges Skript)

Das folgende eigenständige Skript ist ein Beispiel für die Anwendung der Funktion TransformFeatures in einer Skriptumgebung.

import arcpy
import os

# Set environment settings
arcpy.env.overwriteOutput = True

# Function to convert link info in a text file to a line feature class
def CreateLinkFeatures(in_text_file, in_data):

    sr = arcpy.Describe(in_data).spatialReference
    features = []  # a list to hold polyline geometry objects

    f = open(in_text_file, "r")
    
    for line in f.readlines():

        # Take start/end blank spaces off
        # Separate the start and end point coordinates
        points = line.strip().split()   
        
        point1 = arcpy.Point(float(points[1]), float(points[2]))
        point2 = arcpy.Point(float(points[3]), float(points[4]))
        
        features.append(arcpy.Polyline(arcpy.Array([point1, point2]), sr))
        
    f.close()   # close the text file

    # Copy the geometry objects into a feature class named Links
    result = arcpy.management.CopyFeatures(features, in_data + "_links")

    return result[0]
    
if __name__ == "__main__":

    # Make a copy of the data because
    # TransformFeatures tool modifies the input data
    arcpy.management.CopyFeatures(r"C:\data\Tutorial.gdb\Parcels", r"C:\data\Tutorial.gdb\Parcels_copy")

    links_file = r"C:\data\TF_links.txt"
    tf_link_features = CreateLinkFeatures(links_file, r"C:\data\Tutorial.gdb\Parcels")
    
    arcpy.edit.TransformFeatures(r"C:\data\Tutorial.gdb\Parcels_copy", tf_link_features)
    print(arcpy.GetMessages())