Zusammenfassung
Dieses Werkzeug erkennt, wo die Aktualisierungs-Linien-Features räumlich mit den Basis-Linien-Features übereinstimmen und ob es räumliche Änderungen, Attributänderungen, beide oder keine Änderungen gibt. Es erstellt eine Ausgabe-Feature-Class mit abgeglichenen Aktualisierungs-Features samt Informationen zu Änderungen sowie Aktualisierungs-Features ohne Übereinstimmung und Basis-Features ohne Übereinstimmung.
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 Aktualisierungs- und Basis-Linien-Datasets übereinstimmenden Features erkannt und es wird ermittelt, wo es räumliche Änderungen, Attributänderungen oder beide 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 Aktualisierungs-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 Aktualisierungs-Features. Der Wert lautet bei einem Basis-Feature ohne Übereinstimmung -1.
- BASE_FID: Die Feature-ID des Basis-Features. Der Wert lautet bei einem Aktualisierungs-Feature ohne Übereinstimmung -1.
- CHANGE_TYPE: Der Typ der erkannten Änderung; die folgenden Werte werden dargestellt:
- S für "Spatial" (räumlich) zum Angeben eines abgeglichenen Aktualisierungs-Features mit einer räumlichen Änderung.
- A für "Attribute" (Attribut) zum Angeben eines abgeglichenen Aktualisierungs-Features mit einer Attributänderung.
- SA für "Spatial" (räumlich) und "Attribute" (Attribut) zum Angeben eines abgeglichenen Aktualisierungs-Features mit einer räumlichen Änderung und Attributänderung.
- S_LD für räumliche Änderungen und unterschiedliche Linienrichtungen.
- SA_LD für räumliche und Attributänderungen und unterschiedliche Linienrichtungen.
- NC für "No Change" (keine Änderung) zum Angeben eines abgeglichenen Aktualisierungs-Features ohne Änderung.
- N für "New" (Neu) zum Angeben eines Aktualisierungs-Features ohne Übereinstimmung, das neu zu den Basisdaten hinzukommt.
- D für "Deletion" (Löschen) zum Angeben eines Basis-Features ohne Übereinstimmung, das möglicherweise aus den Basisdaten gelöscht werden muss.
Der Feature-Abgleich erfolgt zunächst anhand der Suchentfernung und dem optionalen Parameter 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 weiter ü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. Angenommen, das Aktualisierungs- und Basis-Feature enthalten beide ein STREET_NAME-Feld mit Straßennamen. Wenn ein Aktualisierungs-Feature räumlich mit zwei Basis-Features übereinstimmt, jedoch nur ein Basiskandidat über denselben STREET_NAME-Wert wie das Aktualisierungs-Feature verfügt, handelt es sich dabei um die bessere Übereinstimmung. Beim Vergleich der Textzeichenfolgen wird nicht zwischen Groß- und Kleinschreibung unterschieden. First St und first st werden deshalb als gleich betrachtet.
Die Ausgabe-Zuordnungstabelle ist optional. Diese 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 Aktualisierungs-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 Aktualisierungs-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 Aktualisierungs-Features unterscheiden sich von den ihnen entsprechenden Basis-Features in der Topologie. Beispielsweise wenn ein Aktualisierungs-Feature mit zwei Basis-Features übereinstimmt.
- In jeder Übereinstimmungsgruppe liegt jeder Teil der aktualisierten oder Basis-Features außerhalb der Änderungstoleranz.
Die Einstellung Toleranz ändern dient als Breite einer Pufferzone um die Aktualisierungs- oder Basis-Features herum. Für jede Abgleichgruppe wird ein Aktualisierungspuffer um alle Aktualisierungs-Features und ein Basispuffer um alle Basis-Features erstellt. Anschließend werden alle Aktualisierungs-Features anhand des Basispuffers und alle Basis-Features anhand des Aktualisierungspuffers überprüft. Wenn Teile der Aktualisierungs-Features außerhalb des Basispuffers und/oder Teile der Basis-Features außerhalb des Aktualisierungspuffers liegen, gilt dies als räumliche Änderung. Bei der Angabe eines Wertes, der größer als 0 ist, enthält die Ausgabe zwei zusätzliche 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 Aktualisierungs-Features außerhalb des Basispuffers liegen –
- Lu = die Gesamtlänge der Teile außerhalb der Aktualisierungs-Features.
- Pu (der Längenprozentsatz) = Lu / die Gesamtlänge aller Aktualisierungs-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. Nur Features mit räumlichen Änderungen haben diese Werte, andere verfügen über den Wert -1.
Es wird eine Attributänderung (Änderungstyp A) anhand der Vergleichsfelder erkannt. Wenn Sie ein oder mehrere Feldpaare für 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 Aktualisierungs-Feature erkannt werden, erhält es den Änderungstyp "SA". Wenn weder räumliche Änderungen noch Attributänderungen für ein abgeglichenes Aktualisierungs-Feature erkannt werden, wird dies als keine Änderung betrachtet, und das Feature erhält es den Änderungstyp "NC".
Änderung der Linienrichtung (Änderungstypen mit "_LD") gelten als räumliche Änderung und können als Option erkannt werden.
- Den abgeglichenen Aktualisierungs-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 Aktualisierungs-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 in hohem Maße von der Qualität, Komplexität und Ähnlichkeit der Daten der zwei Eingaben abhängig.
Während der Vorverarbeitung müssen Sie die Datenfehler minimieren und relevante Features 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. Außerdem kann es empfehlenswert sein, Attribute in Aktualisierungs-Features und Basis-Features zu ü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.
Syntax
arcpy.management.DetectFeatureChanges(update_features, base_features, out_feature_class, search_distance, {match_fields}, {out_match_table}, {change_tolerance}, {compare_fields}, {compare_line_direction})
Parameter | Erklärung | Datentyp |
update_features | Linien-Features, die mit den Basis-Features verglichen werden sollen. | Feature Layer |
base_features | Linien-Features, die zur Änderungserkennung mit Aktualisierungs-Features verglichen werden sollen. | Feature Layer |
out_feature_class | Ausgabe-Line-Feature-Class mit Änderungsinformationen. Die Ausgabe enthält alle beteiligten Aktualisierungs-Features (mit und ohne Übereinstimmung) und alle Basis-Features ohne Übereinstimmung. | Feature Class |
search_distance | Die für die Suche nach Übereinstimmungskandidaten verwendete Entfernung. Die Entfernung muss angegeben und größer als null sein. Sie können eine bevorzugte Einheit auswählen. Standardmäßig wird die Feature-Einheit verwendet. | Linear Unit |
match_fields [[source_field, target_field],...] (optional) | Liste der Felder aus 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. Die Entfernung kann gleich oder größer als Null sein. Die Standardeinstellung ist 0. Bei Angabe eines Wertes, der größer als Null ist, enthält die Ausgabe die Felder LEN_PCT und LEN_ABS. Sie können eine bevorzugte Einheit auswählen. Standardmäßig wird die Feature-Einheit verwendet. | Linear Unit |
compare_fields [[source_field, target_field],...] (optional) | Mit diesen Feldern wird bestimmt, ob eine Attributänderung zwischen abgeglichenen Aktualisierungs- und Basis-Features vorliegt. | Value Table |
compare_line_direction (optional) | Legt fest, ob Linienrichtungen für abgeglichene Features verglichen werden sollen.
| 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