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 dringend ein projiziertes Koordinatensystem empfohlen. Die Verwendung eines geographischen Koordinatensystems mit Breitengrad- und Längengradwerten kann zu unerwünschter Verzerrung oder zu Berechnungsfehlern führen.

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

    • AFFINE: Für die affine Transformation werden mindestens drei Transformations-Links benötigt.
    • PROJECTIVE: Für die projektive Transformation sind mindestens vier Transformations-Links erforderlich.
    • SIMILARITY: Für die Ähnlichkeitstransformation werden mindestens zwei Transformations-Links benötigt.
  • 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 im Allgemeinen die Qualität 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 von Restfehlern und zu RMSE finden Sie im Abschnitt "Transformationslinks und der RMS-Fehler" unter Transformieren eines 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 sollen. 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 TransformationFür die affine Transformation werden mindestens drei Transformations-Links benötigt. Dies ist die Standardeinstellung.
  • Projektive TransformationFür die projektive Transformation sind mindestens vier Transformations-Links erforderlich.
  • ÄhnlichkeitstransformationFür die Ähnlichkeitstransformation werden mindestens zwei Transformations-Links benötigt.
String
Ausgabe-Link-Tabelle
(optional)

Die Ausgabetabelle mit Eingabe-Links und der jeweils zugehörigen Restfehler.

Table

Abgeleitete Ausgabe

BeschriftungErläuterungDatentyp
RMSE

Meldet den RMSE-Fehlerwert.

Double
Aktualisierte Eingabe-Features

Die aktualisierten Eingabe-Features.

Feature Layer

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

Die Eingabe-Features, deren Koordinaten transformiert werden sollen. 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.

  • AFFINEFür die affine Transformation werden mindestens drei Transformations-Links benötigt. Dies ist die Standardeinstellung.
  • PROJECTIVEFür die projektive Transformation sind mindestens vier Transformations-Links erforderlich.
  • SIMILARITYFür die Ähnlichkeitstransformation werden mindestens zwei Transformations-Links benötigt.
String
out_link_table
(optional)

Die Ausgabetabelle mit Eingabe-Links und der jeweils zugehörigen Restfehler.

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 geoprocessing environments
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.CopyFeatures_management(features, in_data + "_links")

    return result.getOutput(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")
    
    try:
        arcpy.edit.TransformFeatures(r"C:\data\Tutorial.gdb\Parcels_copy", tf_link_features)
        print(arcpy.GetMessages())
        
    except arcpy.ExecuteError as aex:
        print(arcpy.GetMessages(2))

    except Exception as ex:
        print(ex.args[0])

Lizenzinformationen

  • Basic: Nein
  • Standard: Nein
  • Advanced: Ja

Verwandte Themen