Identische finden (Data Management)
Zusammenfassung
Erstellt einen Bericht aller Datensätze in einer Feature-Class oder einer Tabelle, die über identische Werte in einer Liste von Feldern verfügen, und generiert eine Tabelle, in der diese identischen Datensätze aufgeführt werden. Wenn das Feld "Shape" ausgewählt wird, werden Feature-Geometrien verglichen.
Das Werkzeug Identische löschen kann verwendet werden, um identische Datensätze zu suchen und zu löschen.
Bild
Verwendung
-
Die Datensätze sind identisch, wenn die Werte in den ausgewählten Eingabefeldern für diese Datensätze identisch sind. Die Werte mehrerer Felder im Eingabe-Dataset können verglichen werden. Wenn mehr als ein Feld angegeben wird, werden Datensätze anhand der Werte im ersten Feld, danach anhand der Werte des zweiten Feldes usw. abgeglichen.
-
Bei Feature-Class- oder Feature-Layer-Eingaben wählen Sie das Feld "Shape" im Parameter Feld(er) aus, um Feature-Geometrien zu vergleichen und identische Features lagebezogen zu suchen. Die Parameter XY-Toleranz und Z-Toleranz sind nur gültig, wenn "Shape" als eines der Eingabefelder ausgewählt wird.
Wenn das Feld "Shape" ausgewählt ist und die Eingabe-Features über aktivierte M- oder Z-Werte verfügen, werden auch die M- oder Z-Werte verwendet, um identische Features zu ermitteln.
Aktivieren Sie den Parameter Nur doppelte Datensätze ausgeben, wenn ausschließlich die doppelten Datensätze in der Ausgabetabelle enthalten sein sollen. Die Ausgabe weist dieselbe Anzahl an Datensätzen wie das Eingabe-Dataset auf, wenn dieser Parameter nicht aktiviert ist (Standardeinstellung).
-
Die Ausgabetabelle enthält zwei Felder: IN_FID und FEAT_SEQ.
- Das Feld "IN_FID" kann verwendet werden, um die Datensätze der Ausgabetabelle wieder mit dem Eingabe-Dataset zu verbinden.
- Identische Datensätze verfügen über denselben FEAT_SEQ-Wert, während nicht identische Datensätze über einen sequenziellen Wert verfügen. FEAT_SEQ-Werte haben keine Beziehung zu den IDs der Eingabedatensätze.
Syntax
Parameter | Erläuterung | Datentyp |
in_dataset |
Die Tabelle oder die Feature-Class, deren identische Datensätze gesucht werden. | Table View |
out_dataset |
Die Ausgabetabelle, in der identische Datensätze gemeldet werden. Das FEAT_SEQ-Feld in der Ausgabetabelle verfügt über den gleichen Wert bei identischen Datensätzen. | Table |
fields [fields,...] | Die Felder, deren Werte bei der Suche nach identischen Datensätzen verglichen werden. | Field |
xy_tolerance (optional) |
Die XY-Toleranz, die auf jeden Stützpunkt angewendet wird, wenn evaluiert wird, ob in einem anderen Feature ein identischer Stützpunkt vorhanden ist. Dieser Parameter ist nur aktiviert, wenn "Shape" als eines der Felder ausgewählt wird. | Linear unit |
z_tolerance (optional) |
Die Z-Toleranz, die auf jeden Stützpunkt angewendet wird, wenn evaluiert wird, ob in einem anderen Feature ein identischer Stützpunkt vorhanden ist. Dieser Parameter ist nur aktiviert, wenn "Shape" als eines der Felder ausgewählt wird. | Double |
output_record_option (optional) |
Wählen Sie diese Option, wenn ausschließlich doppelte Datensätze in der Ausgabetabelle enthalten sein sollen.
| Boolean |
Codebeispiel
Das folgende Skript im Python-Fenster veranschaulicht, wie Sie die Funktion "FindIdentical" im unmittelbaren Modus verwenden.
import arcpy
# Find identical records based on a text field and a numeric field.
arcpy.FindIdentical_management("C:/data/fireincidents.shp", "C:/output/duplicate_incidents.dbf", ["ZONE", "INTENSITY"])
Das folgende eigenständige Skript veranschaulicht, wie Sie das Werkzeug "FindIdentical" zum Identifizieren doppelter Datensätze einer Tabelle oder Feature-Class verwenden.
# Name: FindIdentical_Example2.py
# Description: Finds duplicate features in a dataset based on location (Shape field) and fire intensity
import arcpy
from arcpy import env
env.overwriteOutput = True
# Set workspace environment
env.workspace = "C:/data/findidentical.gdb"
try:
# Set input feature class
in_dataset = "fireincidents"
# Set the fields upon which the matches are found
fields = ["Shape", "INTENSITY"]
# Set xy tolerance
xy_tol = ".02 Meters"
out_table = "duplicate_incidents"
# Execute Find Identical
arcpy.FindIdentical_management(in_dataset, out_table, fields, xy_tol)
print arcpy.GetMessages()
except arcpy.ExecuteError:
print arcpy.GetMessages(2)
except Exception as ex:
print ex.args[0]
Dieses Skript veranschaulicht, wie Sie den optionalen Parameter "Nur doppelte Datensätze ausgeben" verwenden. Wenn der Parameter über das Dialogfeld des Werkzeugs aktiviert wird oder der Wert ONLY_DUPLICATES festgelegt ist, werden alle einzelnen Datensätze entfernt. Es werden ausschließlich die doppelten Datensätze aus der Ausgabe beibehalten.
# Name: FindIdentical_Example3.py
# Description: Demonstrates the use of the optional parameter Output only duplicated records.
import arcpy
from arcpy import env
env.overwriteOutput = True
# Set workspace environment
env.workspace = "C:/data/redlands.gdb"
try:
in_data = "crime"
out_data = "crime_dups"
# Note that XY Tolerance and Z Tolerance parameters are not used
# In that case, any optional parameter after them must assign
# the value with the name of that parameter
arcpy.FindIdentical_management(in_data, out_data, ["Shape"], output_record_option="ONLY_DUPLICATES")
print arcpy.GetMessages()
except Exception as ex:
print arcpy.GetMessages(2)
print ex.args[0]
Liest die Ausgabe des Werkzeugs "FindIdentical" und gruppiert identische Datensätze über den FEAT_SEQ-Wert.
import arcpy
from itertools import groupby
from operator import itemgetter
# Set workspace environment
arcpy.env.workspace = r"C:\data\redlands.gdb"
# Run Find Identical on feature geometry only.
result = arcpy.FindIdentical_management("parcels", "parcels_dups", ["Shape"])
# List of all output records as IN_FID and FEAT_SEQ pair - a list of lists
out_records = []
for row in arcpy.SearchCursor(result.getOutput(0), fields="IN_FID; FEAT_SEQ"):
out_records.append([row.IN_FID, row.FEAT_SEQ])
# Sort the output records by FEAT_SEQ values
# Example of out_records = [[3, 1], [5, 3], [1, 1], [4, 3], [2, 2]]
out_records.sort(key = itemgetter(1))
# records after sorted by FEAT_SEQ: [[3, 1], [1, 1], [2, 2], [5, 3], [4, 3]]
# records with same FEAT_SEQ value will be in the same group (i.e., identical)
identicals_iter = groupby(out_records, itemgetter(1))
# now, make a list of identical groups - each group in a list.
# example identical groups: [[3, 1], [2], [5, 4]]
# i.e., IN_FID 3, 1 are identical, and 5, 4 are identical.
identical_groups = [[item[0] for item in data] for (key, data) in identicals_iter]
print identical_groups