Tôi đang tìm các bản ghi trùng lặp trong các tệp dbf dựa trên thuộc tính được gọi là 'ID'. Tôi có các tệp dbf khác nhau từ 500.000 bản ghi đến 1,5 triệu và tôi biết có một loạt các bản sao.
Tôi muốn thêm một trường 'Sao y' có nghĩa là Có hoặc Không (hoặc 1 hoặc 0 là tốt) khi thuộc tính ID có mặt ở nơi khác. Sử dụng tập lệnh python sau đây trong Máy tính trường trả về 1 cho mục nhập trùng lặp và 0 cho mục nhập duy nhất;
uniqueList = []
def isDuplicate(inValue):
if inValue in uniqueList:
return 1
else:
uniqueList.append(inValue)
return 0
isDuplicate(!FIELD_NAME!)
Tuy nhiên, bản ghi đầu tiên của, ví dụ, 5 ID trùng lặp cũng sẽ được trả về là 0 (4 bản tiếp theo được coi là bản sao). Tôi sẽ cần tất cả 5 để được đánh dấu là trùng lặp vì ID tồn tại ở nơi khác.
Sử dụng mã sau đây sẽ cung cấp cho bạn tổng số lần tăng của số lần ID đó xảy ra với 1 lần nghĩa là lần đầu tiên và vv;
UniqueDict = {}
def isDuplicateIndex(inValue):
UniqueDict.setdefault(inValue,0)
UniqueDict[inValue] += 1
return UniqueDict[inValue]
isDuplicateIndex( !YOUR_FIELD! )
Tôi chỉ muốn 1 (hoặc Có) nếu ID của hồ sơ đó tồn tại ở nơi khác! (Phiên bản ArcGIS 10.1)
Tôi đã thấy các câu trả lời khác như tập lệnh Python để xác định các bản ghi trùng lặp (theo dõi) nhưng nó không hoạt động.