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 die identischen Datensätze aufgeführt werden. Wenn das Feld "Shape" angegeben wird, werden Feature-Geometrien verglichen.

Das Werkzeug Identische löschen kann verwendet werden, um identische Datensätze zu finden und zu löschen.

Abbildung

Abbildung des Werkzeugs "Identische finden"
Punkte mit den OBJECTIDs 1, 2, 3, 8, 9 und 10 sind lagegleich (blau hervorgehoben). In der Ausgabetabelle werden die lagegleichen Punkte mit demselben Wert für CATEGORY identifiziert.

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 geben Sie das Feld "Shape" im Parameter Feld(er) an, um Feature-Geometrien zu vergleichen und identische Features lagebezogen zu finden. Die Parameter XY-Toleranz und Z-Toleranz sind nur gültig, wenn "Shape" angegeben wird.

    Wenn das Feld "Shape" angegeben wird 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. Wenn dieser Parameter deaktiviert ist, ist die Anzahl der Datensätze im Eingabe-Dataset und der Ausgabe identisch.

  • Die Ausgabetabelle enthält die folgenden Felder:

    • IN_FID: Den Feldwert "Object ID" aus dem Eingabe-Dataset. Dieses Feld kann verwendet werden, um die Datensätze der Ausgabetabelle wieder mit dem Eingabe-Dataset zu verbinden.
    • FEAT_SEQ: Die Sequenznummer. Eingabedatensätze mit denselben Werten verfügen über denselben FEAT_SEQ-Wert, während nicht identische Datensätze über einen sequenziellen Wert verfügen. Die FEAT_SEQ-Werte haben keine Beziehung zu den IDs der Eingabedatensätze.

Parameter

BeschriftungErläuterungDatentyp
Eingabe-Dataset

Die Tabelle oder die Feature-Class, deren identische Datensätze gesucht werden.

Table View
Ausgabe-Dataset

Die Ausgabetabelle, in der identische Datensätze aufgeführt werden. Das FEAT_SEQ-Feld in der Ausgabetabelle enthält bei identischen Datensätzen den gleichen Wert.

Table
Feld(er)

Die Felder, deren Werte bei der Suche nach identischen Datensätzen verglichen werden.

Field
XY-Toleranz
(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 aktiv, wenn der Parameterwert Feld(er) das Feld "Shape" enthält.

Linear Unit
Z-Toleranz
(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 aktiv, wenn der Parameterwert Feld(er) das Feld "Shape" enthält.

Double
Nur doppelte Datensätze ausgeben
(optional)

Gibt an, ob ausschließlich doppelte Datensätze in der Ausgabetabelle enthalten sind.

  • Deaktiviert: Alle Eingabedatensätze verfügen über entsprechende Datensätze in der Ausgabetabelle. Dies ist die Standardeinstellung.
  • Aktiviert: Nur doppelte Datensätze verfügen über entsprechende Datensätze in der Ausgabetabelle. Die Ausgabe ist leer, wenn kein doppelter Datensatz gefunden wird.
Boolean

arcpy.management.FindIdentical(in_dataset, out_dataset, fields, {xy_tolerance}, {z_tolerance}, {output_record_option})
NameErläuterungDatentyp
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 aufgeführt werden. Das FEAT_SEQ-Feld in der Ausgabetabelle enthält bei identischen Datensätzen den gleichen Wert.

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 aktiviert, wenn der Parameterwert fields das Feld "Shape" enthält.

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 aktiviert, wenn der Parameterwert fields das Feld "Shape" enthält.

Double
output_record_option
(optional)

Gibt an, ob ausschließlich doppelte Datensätze in der Ausgabetabelle enthalten sind.

  • ALLAlle Eingabedatensätze verfügen über entsprechende Datensätze in der Ausgabetabelle. Dies ist die Standardeinstellung.
  • ONLY_DUPLICATESNur doppelte Datensätze verfügen über entsprechende Datensätze in der Ausgabetabelle. Die Ausgabe ist leer, wenn kein doppelter Datensatz gefunden wird.
Boolean

Codebeispiel

FindIdentical: Beispiel 1 (Python-Fenster)

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

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"])
FindIdentical: Beispiel 2 (eigenständiges Skript)

Das folgende eigenständige Skript veranschaulicht, wie Sie die Funktion 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

arcpy.env.overwriteOutput = True

# Set workspace environment
arcpy.env.workspace = "C:/data/findidentical.gdb"

# 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())
FindIdentical: Beispiel 3 (eigenständiges Skript)

Das folgende eigenständige Skript veranschaulicht, wie der optionale output_record_option-Parameter verwendet wird. Wenn der Parameterwert auf ONLY_DUPLICATES festgelegt ist, werden alle einzelnen Datensätze entfernt. Es werden ausschließlich die doppelten Datensätze für die Ausgabe beibehalten.

# Name: FindIdentical_Example3.py
# Description: Demonstrates the use of the optional parameter Output only duplicated records.

import arcpy

arcpy.env.overwriteOutput = True

# Set workspace environment
arcpy.env.workspace = "C:/data/redlands.gdb"

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())
FindIdentical: Beispiel 4 (eigenständiges Skript)

Das folgende eigenständige Skript liest die Ausgabe der FindIdentical-Funktion und gruppiert identische Datensätze über den FEAT_SEQ-Feldwert.

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)

Verwandte Themen