Je recherche des enregistrements en double dans des fichiers dbf basés sur l'attribut appelé «ID». J'ai divers fichiers dbf de 500 000 enregistrements à 1,5 million et je sais qu'il existe une multitude de doublons.
Je voudrais ajouter un champ «Dupliquer» qui dit Oui ou Non (ou 1 ou 0 est bien) lorsque l'attribut ID est présent ailleurs. L'utilisation du script python suivant dans Field Calculator renvoie 1 pour une entrée en double et 0 pour une entrée unique;
uniqueList = []
def isDuplicate(inValue):
if inValue in uniqueList:
return 1
else:
uniqueList.append(inValue)
return 0
isDuplicate(!FIELD_NAME!)
Cependant, le 1er enregistrement de, par exemple, 5 ID en double sera également renvoyé sous la forme d'un 0 (les 4 suivants sont considérés comme des doublons). J'aurais besoin que tous les 5 soient marqués comme doublons car l'ID existe ailleurs.
L'utilisation du code suivant vous donnera un compte incrémentiel du nombre de fois que cet ID se produit, 1 signifiant la 1ère occasion, etc.
UniqueDict = {}
def isDuplicateIndex(inValue):
UniqueDict.setdefault(inValue,0)
UniqueDict[inValue] += 1
return UniqueDict[inValue]
isDuplicateIndex( !YOUR_FIELD! )
Je veux juste un 1 (ou Oui) si l'ID de cet enregistrement existe ailleurs! (ArcGIS version 10.1)
J'ai vu d'autres réponses telles que le script Python pour identifier les enregistrements en double (suivi) mais cela ne fonctionne pas tout à fait.
Une autre solution alternative ( ne fonctionne qu'avec les environnements SDE ) consiste à utiliser la fonctionnalité SQL existante dans ArcGIS pour afficher les enregistrements en double
Obtenir des enregistrements en double dans le tableau (sélectionner par attribut)
Exemple:
la source
HAVING COUNT(*) > 1
. Je ne vois vraiment pas de moyen de le faire fonctionner dans les géodatabases fichier . Je sais que cet article technique est quelque peu daté, mais il semble être la source de votre instruction SQL et il indique qu'il ne fonctionne pas dans les géodatabases fichier. Je suis prêt à voter pour votre réponse si je peux le faire fonctionner dans le fichier gdbs, ou si une clarification est ajoutée pour indiquer qu'ils sont l'exception.Le script suivant crée un nouveau champ avec le nombre d'occurrences de chaque valeur d'un champ spécifié. Donc, par exemple, si vous avez "Paris" 6 fois dans ce domaine, chaque ligne avec "Paris" obtiendra un 6.
Il peut être facilement modifié pour que vous puissiez avoir "Oui" ou 1 si compter> 1, mais je suppose que le fait d'avoir le numéro de compte réel est plus utile.
Édition ultérieure: Ou vous pouvez l'utiliser dans la calculatrice de terrain. Code de script pré-logique:
champ en double =
la source