2017-04-14 1 views
-3

J'ai cherché une solution pour cela mais je n'ai pas trouvé de solution complète. J'ai des dizaines de tables qui contiennent chacune des milliers de traits linéaires. chaque fois qu'un élément de ligne est divisé, un autre enregistrement est créé mais la nouvelle ligne (enregistrement) a toujours l'ancien ASSETID. Cela signifie qu'un double ASSETID est né. Est-ce que le script python de maintenance peut trouver tous les ASSETID en double et les rendre NULL? cela laisserait juste l'ASSETID d'origine, j'ai un script qui serait exécuté ensuite qui remplirait le champ ASSETID avec un nouvel ASSETID généré aléatoirement. J'ai été capable de créer des listes de toutes les valeurs dupliquées, une liste du nombre de fois qu'une valeur se produit, une nouvelle colonne sur la table qui a un 'Y' si la valeur est répétée, etc. mais qui ont été en mesure de supprimer le doublon valeurs de champ tout en conservant tout le reste dans la rangée.Supprimer (rendre nul) les valeurs de champ en double

+0

Je pense que vous devriez la recherche/poser à la Bourse Stack [de gis.se] à la place. – PolyGeo

Répondre

0

Étant donné que vous avez une liste de duplication ASSETID s, vous pouvez utiliser un ArcPy UpdateCursor pour modifier uniquement cet attribut.

with arcpy.da.UpdateCursor(feature_class, ["ASSETID"]) as cursor: 
    for row in cursor: 
     if row[0] in unique_id_list: # if the ASSETID is in the list 
      row[0] = None 
      cursor.updateRow(row) 

Cela modifiera toutes les lignes qui ont cette ASSETID valeur, cependant, et ne pas laisser le "original" intact. Vous auriez besoin d'une liste supplémentaire de l'original (par un autre identifiant unique, par exemple OBJECTID) et excluez ceux-ci, par exemple .:

if row[0] in unique_id_list and row[1] not in original_id_list: