Szukam zduplikowanych rekordów w plikach dbf na podstawie atrybutu o nazwie „ID”. Mam różne pliki dbf od 500 000 rekordów do 1,5 miliona i wiem, że istnieje wiele duplikatów.
Chciałbym dodać pole „Duplikuj”, które mówi Tak lub Nie (lub 1 lub 0 jest w porządku), gdy atrybut ID jest obecny gdzie indziej. Użycie następującego skryptu python w Kalkulatorze pola zwraca 1 dla zduplikowanego wpisu i 0 dla unikalnego wpisu;
uniqueList = []
def isDuplicate(inValue):
if inValue in uniqueList:
return 1
else:
uniqueList.append(inValue)
return 0
isDuplicate(!FIELD_NAME!)
Jednak pierwszy rekord, na przykład 5 duplikatów identyfikatorów, zostanie również zwrócony jako 0 (kolejne 4 są uważane za duplikaty). Potrzebowałbym wszystkich 5, aby oznaczyć je jako duplikaty, ponieważ identyfikator istnieje gdzie indziej.
Użycie następującego kodu da ci przyrostową liczbę, jak często występuje ten identyfikator, przy czym 1 oznacza pierwszą okazję i tak dalej;
UniqueDict = {}
def isDuplicateIndex(inValue):
UniqueDict.setdefault(inValue,0)
UniqueDict[inValue] += 1
return UniqueDict[inValue]
isDuplicateIndex( !YOUR_FIELD! )
Chcę tylko 1 (lub Tak), jeśli identyfikator tego rekordu istnieje gdzie indziej! (ArcGIS wersja 10.1)
Widziałem inne odpowiedzi, takie jak skrypt Pythona do identyfikowania zduplikowanych rekordów (kontynuacja), ale to nie do końca działa.