Ich suche nach doppelten Datensätzen in DBF-Dateien basierend auf dem Attribut 'ID'. Ich habe verschiedene DBF-Dateien von 500.000 Datensätzen bis 1,5 Millionen und ich weiß, dass es eine Vielzahl von Duplikaten gibt.
Ich möchte ein Feld 'Duplizieren' hinzufügen, das Ja oder Nein sagt (oder 1 oder 0 ist in Ordnung), wenn das ID-Attribut an anderer Stelle vorhanden ist. Wenn Sie das folgende Python-Skript in Field Calculator verwenden, wird 1 für einen doppelten Eintrag und 0 für einen eindeutigen Eintrag zurückgegeben.
uniqueList = []
def isDuplicate(inValue):
if inValue in uniqueList:
return 1
else:
uniqueList.append(inValue)
return 0
isDuplicate(!FIELD_NAME!)
Der erste Datensatz von beispielsweise 5 doppelten IDs wird jedoch auch als 0 zurückgegeben (die folgenden 4 werden als doppelte IDs betrachtet). Ich würde alle 5 als doppelt markiert markieren müssen, da die ID an anderer Stelle vorhanden ist.
Wenn Sie den folgenden Code verwenden, erhalten Sie eine inkrementelle Zählung, wie oft diese ID vorkommt, wobei 1 die erste Gelegenheit usw. bedeutet.
UniqueDict = {}
def isDuplicateIndex(inValue):
UniqueDict.setdefault(inValue,0)
UniqueDict[inValue] += 1
return UniqueDict[inValue]
isDuplicateIndex( !YOUR_FIELD! )
Ich möchte nur eine 1 (oder Ja), wenn die ID dieses Datensatzes an anderer Stelle vorhanden ist! (ArcGIS Version 10.1)
Ich habe andere Antworten wie das Python-Skript zum Identifizieren doppelter Datensätze gesehen (Follow-up), aber es funktioniert nicht ganz.
Eine andere alternative Lösung ( funktioniert nur in SDE-Umgebungen ) besteht darin, die vorhandenen SQL-Funktionen in ArcGIS zu verwenden, um die doppelten Datensätze anzuzeigen
Doppelte Datensätze in Tabelle abrufen (nach Attribut auswählen)
Beispiel:
quelle
HAVING COUNT(*) > 1
. Ich sehe wirklich keine Möglichkeit, es in Datei- Geodatabases zum Laufen zu bringen. Ich weiß, dass dieser technische Artikel etwas veraltet ist, aber er scheint die Quelle Ihrer SQL-Anweisung zu sein und zeigt an, dass er in Datei-Geodatabases nicht funktioniert. Ich bin bereit, Ihre Antwort zu bewerten, wenn ich sie in Datei-GDBS zum Laufen bringen kann, oder es wird eine Klarstellung hinzugefügt, um anzuzeigen, dass sie die Ausnahme sind.Das folgende Skript erstellt ein neues Feld mit der Anzahl der Vorkommen jedes Werts aus einem angegebenen Feld. Wenn Sie beispielsweise 6 Mal "Paris" in diesem Feld haben, erhält jede Zeile mit "Paris" eine 6.
Es kann leicht geändert werden, so dass Sie "Ja" oder 1 haben können, wenn die Anzahl> 1 ist, aber ich denke, dass es nützlicher ist, die tatsächliche Anzahl zu haben.
Später bearbeiten: Oder Sie können dies im Feldrechner verwenden. Pre-Logic-Skriptcode:
doppeltes Feld =
quelle