Beschriftung | Erläuterung | Datentyp |
Update-Features | Die Linien-Features, die mit den Basis-Features verglichen werden. | Feature Layer |
Basis-Features | Die Linien-Features, die zur Änderungserkennung mit den Update-Features verglichen werden. | Feature Layer |
Ausgabe-Feature-Class | Die Ausgabe-Line-Feature-Class, die die Änderungsinformationen enthält. Die Ausgabe enthält alle beteiligten Update-Features (mit und ohne Übereinstimmung) und alle Basis-Features ohne Übereinstimmung. | Feature Class |
Suchentfernung | Die Entfernung, die für die Suche nach Übereinstimmungskandidaten verwendet werden soll. Die Entfernung muss angegeben und größer als null sein. Sie können eine bevorzugte Einheit auswählen. Die Standardeinstellung ist die Einheit des Features. | Linear Unit |
Felder für Abgleich (optional) | Die übereinstimmenden Felder aus den Aktualisierungs- und Basis-Features. Falls angegeben, wird jedes Feldpaar auf Übereinstimmungskandidaten geprüft, um die Ermittlung des richtigen Treffers zu ermöglichen. | Value Table |
Ausgabe-Zuordnungstabelle (optional) | Die Ausgabetabelle mit vollständigen Informationen zum Feature-Abgleich. | Table |
Toleranz ändern (optional) | Die Entfernung, mit deren Hilfe bestimmt wird, ob eine räumliche Änderung vorliegt. Alle abgeglichenen Aktualisierungs- und Basis-Features werden mit dieser Toleranz verglichen. Wenn Teile der Aktualisierungs- oder Basis-Features außerhalb der Zone um das abgeglichene Feature liegen, wird dies als räumliche Änderung betrachtet. Der Wert muss größer als die XY-Toleranz der Eingabedaten sein, damit dieser Prozess ausgeführt werden kann, und die Ausgabe enthält die Felder LEN_PCT und LEN_ABS. Der Standardwert ist 0. Dies bedeutet, dass der Prozess nicht ausgeführt wird. Der Prozess wird bei jedem Wert zwischen 0 und der XY-Toleranz (einschließlich) der Daten irrelevant, und der Wert wird durch 0 ersetzt. Sie können eine Einheit auswählen. Standardmäßig wird die Feature-Einheit verwendet. | Linear Unit |
Felder für Vergleich (optional) |
Die Felder, mit denen bestimmt wird, ob eine Attributänderung zwischen den abgeglichenen Aktualisierungs- und Basis-Features vorliegt. | Value Table |
Linienrichtung vergleichen (optional) | Gibt an, ob Linienrichtungen für abgeglichene Features verglichen werden.
| Boolean |
Zusammenfassung
Erkennt, wo die Update-Linien-Features räumlich mit den Basis-Linien-Features übereinstimmen und ob es räumliche Änderungen, Attributänderungen, beides oder keine Änderungen gibt. Anschließend wird eine Ausgabe-Feature-Class mit abgeglichenen Update-Features samt Informationen zu Änderungen sowie Update-Features ohne Übereinstimmung und Basis-Features ohne Übereinstimmung erstellt.
Weitere Informationen zur Funktionsweise des Feature-Abgleichs
Abbildung
Verwendung
Ein typischer Anwendungsfall für dieses Werkzeug wäre etwa eine Reihe von Linien-Features (z. B. Straßen), für die regelmäßig Aktualisierungen von Partnern in Form von neuen Straßen-Features eingehen. Sie möchten herausfinden, welche aktualisierten Features Änderungen von vorhandenen Basis-Features sind oder neu hinzugefügt werden müssen und welche Basis-Features alt sind und gelöscht werden sollten. Mit diesem Werkzeug werden die in den Update- und Basis-Datasets übereinstimmenden Features erkannt, und es wird ermittelt, wo es räumliche Änderungen, Attributänderungen, beides oder keine Änderungen gibt. Danach wird eine Ausgabe-Feature-Class mit den Änderungsinformationen zu den Features erstellt.
Die Ausgabe-Feature-Class enthält alle beteiligten Update-Features (mit und ohne Übereinstimmung) und alle Basis-Features ohne Übereinstimmung. Die Informationen zu den erkannten Änderungen werden in die folgenden Felder geschrieben:
- UPDATE_FID: Die Feature-ID des Update-Features. Der Wert lautet bei einem Basis-Feature ohne Übereinstimmung -1.
- BASE_FID: Die Feature-ID des Basis-Features. Der Wert lautet bei einem Update-Feature ohne Übereinstimmung -1.
- CHANGE_TYPE: Der Typ der erkannten Änderung; die folgenden Werte werden dargestellt:
- S: Ein abgeglichenes Update-Feature mit einer räumlichen Änderung.
- A: Ein abgeglichenes Update-Features mit einer Attributänderung.
- SA: Ein abgeglichenes Update-Feature mit einer räumlichen Änderung und einer Attributänderung.
- S_LD: Eine räumliche Änderung sowie unterschiedliche Linienrichtungen.
- SA_LD: Räumliche und Attributänderungen sowie unterschiedliche Linienrichtungen.
- NC: Ein abgeglichenes Update-Feature ohne Änderung.
- N: Ein Update-Feature ohne Übereinstimmung, das neu zu den Basisdaten hinzukommt.
- D: Ein Basis-Feature ohne Übereinstimmung, das möglicherweise aus den Basisdaten gelöscht werden muss.
Der Feature-Abgleich erfolgt zunächst anhand der Suchentfernung und den optionalen Parameterwerten Felder abgleichen. Zum Speichern der Zuordnungsinformationen kann eine Ausgabe-Zuordnungstabelle erzeugt werden.
Der Parameter Suchentfernung wird zum Suchen von Übereinstimmungskandidaten verwendet. Verwenden Sie eine Entfernung, die lang genug ist, um die meisten Verschiebungen zwischen übereinstimmenden Features zu erfassen, jedoch nicht so lang, dass dadurch zu viele Kandidaten unnötig verarbeitet und potenziell falsche Treffer erzielt werden.
Nachdem Übereinstimmungskandidaten gefunden wurden, werden sie durch eine Reihe geometrischer Messwerte überprüft, um zu bestimmen, ob sie ähnlich genug sind, um als räumlich übereinstimmend zu gelten.
Wenn Sie ein oder mehrere Feldpaare für den Parameter Felder abgleichen angeben, werden räumlich abgeglichene Kandidaten mit diesen Feldwerten verglichen, um die richtige Übereinstimmung zu finden. Wenn beispielsweise sowohl das Update- als auch das Basis-Feature ein STREET_NAME-Feld mit Straßennamen enthält und ein Aktualisierungs-Feature räumlich mit zwei Basis-Features übereinstimmt, jedoch nur ein Basiskandidat denselben STREET_NAME-Wert wie das Aktualisierungs-Feature aufweist, ist dies die bessere Übereinstimmung. Beim Vergleich der Textzeichenfolgen wird nicht zwischen Groß- und Kleinschreibung unterschieden. First St und first st werden deshalb als gleich betrachtet.
Der Parameter Ausgabe-Zuordnungstabelle ist optional. Die Zuordnungstabelle enthält vollständige Informationen zum Feature-Abgleich, z. B. die Quellen- und Ziel-FIDs, Übereinstimmungsgruppen, Übereinstimmungsbeziehungen und das Konfidenzniveau des Abgleichs aus Bedingungen für den räumlichen und Attributabgleich. Diese Informationen können die Interpretation der Übereinstimmungssituationen ermöglichen und die Nachprüfung, Nachbearbeitung und weitere Analyse vereinfachen. Weitere Informationen finden Sie unter Feature-Abgleich und Zuordnungstabelle.
In der Ausgabe-Zuordnungstabelle stellen die Werte in den Feldern SRC_FID und TGT_FID die Update-Feature-IDs und Basis-Feature-IDs dar.
Die Identifizierung von Änderungen erfolgt nach dem Feature-Abgleich. Der räumliche Zustand und der Attributzustand sowie die Linienrichtungen aller abgeglichenen Update-Features werden mit den entsprechenden Basis-Features verglichen, um die zugehörigen CHANGE_TYPE-Werte zu bestimmen.
Eine räumliche Änderung (Änderungstyp S) wird erkannt, wenn eine oder beide der folgenden Bedingungen zutreffen:
- Die abgeglichenen Update-Features unterscheiden sich von den ihnen entsprechenden Basis-Features in der Topologie. Beispielsweise wenn ein Update-Feature mit zwei Basis-Features übereinstimmt.
- In jeder Übereinstimmungsgruppe liegt jeder Teil der aktualisierten oder Basis-Features außerhalb des Parameterwertes Änderungstoleranz.
Der Parameterwert Toleranz ändern dient als Breite einer Pufferzone um die Aktualisierungs- oder Basis-Features herum. Für jede Abgleichgruppe wird ein Aktualisierungspuffer um alle Update-Features und ein Basispuffer um alle Basis-Features erstellt. Anschließend werden alle Update-Features mit dem Basispuffer und alle Basis-Features mit dem Aktualisierungspuffer verglichen. Wenn Teile der Update-Features außerhalb des Basispuffers und/oder Teile der Basis-Features außerhalb des Aktualisierungspuffers liegen, gilt dies als räumliche Änderung. Bei Angabe eines Wertes, der größer als die XY-Toleranz der Eingabedaten ist, enthält die Ausgabe die folgenden neuen Felder:
- LEN_PCT: In diesem Feld werden Längenprozentsatzwerte basierend auf Übereinstimmungsgruppen gespeichert.
- LEN_ABS: In diesem Feld werden absolute Längenwerte in Feature-Einheiten basierend auf Übereinstimmungsgruppen gespeichert.
Die Werte dieser Felder werden unter folgenden Bedingungen basierend auf der Übereinstimmungsgruppe bestimmt, zu denen das Ausgabe-Feature gehört:
- Wenn nur Update-Features außerhalb des Basispuffers liegen:
- Lu = die Gesamtlänge der Teile außerhalb der Update-Features.
- Pu (der Längenprozentsatz) = Lu / die Gesamtlänge aller Update-Features * 100.
- LEN_PCT = Pu
- LEN_ABS = Lu
- Wenn nur Basis-Features außerhalb des Aktualisierungspuffers liegen:
- Lb = die Gesamtlänge der Teile außerhalb der Basis-Features.
- Pb (der Längenprozentsatz) = Lb / die Gesamtlänge aller Basis-Features * 100.
- LEN_PCT = Pb
- LEN_ABS = Lb
- Wenn beide oben aufgeführten Bedingungen erfüllt sind, gilt Folgendes:
- Der größere Wert von Lu und Lb sowie dessen zugehöriger Prozentwert werden geschrieben. Wenn Lb geschrieben wird, wird aus dem gleichen Grund wie dem oben genannten ein negatives Zeichen hinzugefügt.
Der Prozentwert reicht von 0 bis 100, wobei 0 bedeutet, dass sowohl Aktualisierungs- als auch Basis-Features in einer Übereinstimmungsgruppe vollständig innerhalb der Änderungstoleranzzonen liegen, und 100 bedeutet, dass alle Aktualisierungs- oder Basis-Features außerhalb der Änderungstoleranzzonen liegen.
Mit den Werten LEN_PCT und LEN_ABS kann bestimmt werden, ob eine Änderung signifikant ist. Je höher die Werte, desto umfangreicher ist die Änderung. Diese Werte werden nur Features mit räumlichen Änderungen zugewiesen. Andere Features erhalten den Wert -1.
Es wird eine Attributänderung (Änderungstyp A) anhand der Vergleichsfelder erkannt. Wenn Sie ein oder mehrere Feldpaare für den Parameter Felder vergleichen angeben, werden abgeglichene Features mit diesen Feldern verglichen, um zu bestimmen, ob es eine Attributänderung gibt. Beim Vergleich der Textzeichenfolgen wird nicht zwischen Groß- und Kleinschreibung unterschieden. First St und first st werden deshalb als gleich betrachtet. Wenn sowohl räumliche Änderungen als auch Attributänderungen für ein abgeglichenes Update-Feature erkannt werden, erhält es den Änderungstyp SA. Wenn weder räumliche Änderungen noch Attributänderungen für ein abgeglichenes Update-Feature erkannt werden, wird dies als keine Änderung betrachtet, und das Feature erhält es den Änderungstyp NC.
Änderung der Linienrichtung (Änderungstyp S_LD oder SA_LD) gelten als räumliche Änderung und können als Option erkannt werden.
- Den abgeglichenen Update-Features wird der Änderungstyp S_LD zugewiesen, wenn sich, mit oder ohne die oben beschriebenen räumlichen Änderungen, die Richtung einer ihrer Linien von der eines oder mehrerer Basis-Features unterscheidet. Sie sind also vom Typ S oder NC, wenn die Linienrichtungen nicht verglichen werden.
- Den abgeglichenen Update-Features wird der Änderungstyp SA_LD zugewiesen, wenn sich zusätzlich zu der Attributänderung oder den räumlichen und Attributänderungen, die oben beschrieben werden, die Richtung einer ihrer Linien von der eines oder mehrerer Basis-Features unterscheidet, und zwar mit oder ohne den oben beschriebenen räumlichen Änderungen. Sie sind also vom Typ A oder SA, wenn die Linienrichtungen nicht verglichen werden.
Die Vereinigung der Eingabe-Ausdehnungen wird als Verarbeitungsausdehnung verwendet. Die Anzahl der beteiligten Quellen- und Ziel-Features wird in den Verarbeitungsmeldungen aufgeführt.
Die Genauigkeit des Feature-Abgleichs ist abhängig von der Qualität, Komplexität und Ähnlichkeit der Daten der zwei Eingaben.
Während der Vorverarbeitung müssen Sie die Datenfehler minimieren und relevante Features als Eingabe auswählen. Im Allgemeinen ist es hilfreich, wenn die Features in einem Eingabe-Dataset topologisch richtig sind, eine gültige Geometrie aufweisen und Singlepart und nicht doppelt sind. Andernfalls können unerwartete Fehler auftreten.
Sie können die erkannten Änderungen in der Ausgabe-Feature-Class überprüfen. Möglicherweise werden Sie feststellen, dass die räumlichen Unterschiede zwischen den zwei Datenquellen signifikant sind und eine der beiden angepasst werden muss, damit sie besser mit der anderen übereinstimmt. Sie können auch Attribute zwischen Update-Features und Basis-Features übertragen. Diese Änderungen können Sie mithilfe der Werkzeuge "Rubbersheeting" und "Attributübertragung" im Toolset "Zusammenführung" vornehmen.
Hinweis:
Alle Eingaben müssen sich im selben Koordinatensystem befinden.
Parameter
arcpy.management.DetectFeatureChanges(update_features, base_features, out_feature_class, search_distance, {match_fields}, {out_match_table}, {change_tolerance}, {compare_fields}, {compare_line_direction})
Name | Erläuterung | Datentyp |
update_features | Die Linien-Features, die mit den Basis-Features verglichen werden. | Feature Layer |
base_features | Die Linien-Features, die zur Änderungserkennung mit den Update-Features verglichen werden. | Feature Layer |
out_feature_class | Die Ausgabe-Line-Feature-Class, die die Änderungsinformationen enthält. Die Ausgabe enthält alle beteiligten Update-Features (mit und ohne Übereinstimmung) und alle Basis-Features ohne Übereinstimmung. | Feature Class |
search_distance | Die Entfernung, die für die Suche nach Übereinstimmungskandidaten verwendet werden soll. Die Entfernung muss angegeben und größer als null sein. Sie können eine bevorzugte Einheit auswählen. Die Standardeinstellung ist die Einheit des Features. | Linear Unit |
match_fields [[source_field, target_field],...] (optional) | Die übereinstimmenden Felder aus den Aktualisierungs- und Basis-Features. Falls angegeben, wird jedes Feldpaar auf Übereinstimmungskandidaten geprüft, um die Ermittlung des richtigen Treffers zu ermöglichen. | Value Table |
out_match_table (optional) | Die Ausgabetabelle mit vollständigen Informationen zum Feature-Abgleich. | Table |
change_tolerance (optional) | Die Entfernung, mit deren Hilfe bestimmt wird, ob eine räumliche Änderung vorliegt. Alle abgeglichenen Aktualisierungs- und Basis-Features werden mit dieser Toleranz verglichen. Wenn Teile der Aktualisierungs- oder Basis-Features außerhalb der Zone um das abgeglichene Feature liegen, wird dies als räumliche Änderung betrachtet. Der Wert muss größer als die XY-Toleranz der Eingabedaten sein, damit dieser Prozess ausgeführt werden kann, und die Ausgabe enthält die Felder LEN_PCT und LEN_ABS. Der Standardwert ist 0. Dies bedeutet, dass der Prozess nicht ausgeführt wird. Der Prozess wird bei jedem Wert zwischen 0 und der XY-Toleranz (einschließlich) der Daten irrelevant, und der Wert wird durch 0 ersetzt. Sie können eine Einheit auswählen. Standardmäßig wird die Feature-Einheit verwendet. | Linear Unit |
compare_fields [[source_field, target_field],...] (optional) |
Die Felder, mit denen bestimmt wird, ob eine Attributänderung zwischen den abgeglichenen Aktualisierungs- und Basis-Features vorliegt. | Value Table |
compare_line_direction (optional) | Gibt an, ob Linienrichtungen für abgeglichene Features verglichen werden.
| Boolean |
Codebeispiel
Das folgende Skript für das Python-Fenster veranschaulicht, wie die Funktion DetectFeatureChanges im unmittelbaren Modus verwendet wird.
import arcpy
arcpy.env.workspace = "C:/data"
arcpy.DetectFeatureChanges_edit("update_Roads.shp",
"base_Roads.shp", "output_changes.shp"
"25 Feet", #, #, "7.6 Meters",
["rdClass", "roadClass"])
Das folgende eigenständige Skript ist ein Beispiel für die Anwendung der Funktion DetectFeatureChanges in einer Skriptumgebung.
# Name: DetectFeatureChanges_example_script2.py
# Description: Perform change detection between newly received road data and
# existing road data and find the number of new roads and the
# total length of them.
# Author: Esri
# -----------------------------------------------------------------------
# Import system modules
import arcpy
from arcpy import env
# Set environment settings
env.overwriteOutput = True
env.workspace = r"D:\conflationTools\ScriptExamples\data.gdb"
# Set local variables
updateFeatures = "updateRoads"
baseFeatures = "baseRoads"
dfcOutput = "dfc_out"
search_distance = "300 Feet"
match_fields = "RD_NAME FULLNAME"
statsTable = "new_roads_stats"
# Perform spatial change detection
arcpy.DetectFeatureChanges_management(updateFeatures, baseFeatures, dfcOutput, search_distance, match_fields)
# ====================================================================================
# Note 1: The result of DetectFeatureChanges may contain errors; see tool reference.
# Inspection and editing may be necessary to ensure correct CHANGE_TYPE N, which
# represents un-matched update feautres, before further calculations.
#
# One of the quick ways of checking whether the CHANGE_TYPE N features have
# matching base features is to find their mid-points and use them to search for
# features in base data, as processed below.
# ====================================================================================
# ======== Check update roads with CHANGE_TYPE N for potential match
# Make Feature Layer with selection of CHANGE_TYPE = 'N' (un-matched update features)
arcpy.MakeFeatureLayer_management(dfcOutput, "sel_N_layer", "CHANGE_TYPE = 'N'")
# Get mid-points of the selected features; the mid-points carry all the attributes.
arcpy.FeatureVerticesToPoints_management("sel_N_layer", "in_memory\midPts", "MID")
# Find nearest base features from the mid-points
arcpy.Near_analysis("in_memory\midPts", baseFeatures, "300 Feet")
# ====================================================================================
# Note 2: At this point you can manually inspect the midPts by the NEAR_DIST values;
# the lower the values, the higher chance (not always) a match was missed in the
# dfc process. Delete features from midPts that have found matching base features
# before further process.
# ====================================================================================
# Transfer CHANGE_TYPE values from features of midPts to update features
arcpy.JoinField_management(updateFeatures, "OBJECTID", "in_memory\midPts", "UPDATE_FID", "CHANGE_TYPE")
# Get the count of new roads and the total length; the remaining roads have
# Null values for CHANGE_TYPE.
arcpy.Frequency_analysis(updateFeatures, statsTable, "CHANGE_TYPE", "Shape_Length")
Umgebungen
Lizenzinformationen
- Basic: Nein
- Standard: Nein
- Advanced: Ja