2017-04-14 4 views
-3

Ich habe nach einer Lösung dafür gesucht, aber keine vollständige gefunden. Ich habe Dutzende von Tabellen, die jeweils Tausende von Zeilen enthalten. Wenn ein Linienelement geteilt wird, wird ein anderer Datensatz erstellt, aber die neue Zeile (Datensatz) hat immer noch die alte ASSETID. Dies bedeutet, dass ein Duplikat ASSETID geboren wird. Ist das Wartungs-Python-Skript, das alle doppelten ASSETIDs findet und sie null macht? das würde nur die ursprüngliche ASSETID hinterlassen, ich hätte ein Skript, das danach ausgeführt würde, das das ASSETID-Feld mit einer neuen, zufällig generierten ASSETID füllen würde. Ich war in der Lage, alle doppelten Werte zu erstellen, eine Liste, wie oft ein Wert auftritt, eine neue Spalte in der Tabelle, die ein 'Y' hat, wenn der Wert wiederholt wird usw., aber bisher konnte ich doppelte entfernen Feldwerte unter Beibehaltung aller anderen Elemente in der Zeile.Löschen (make null) doppelte Feldwerte

+0

Ich denke, man sollte diese Forschung/fragen Sie an der [gis.se] Stapel Austausch statt. – PolyGeo

Antwort

0

Da Sie eine Liste der Duplikate ASSETID s haben, können Sie ein ArcPy UpdateCursor verwenden, um nur dieses Attribut zu ändern.

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) 

Dies wird alle Zeilen ändern, die haben, dass ASSETID Wert, aber, und das „Original“ intakt nicht verlassen. Sie würden eine zusätzliche Liste der ursprünglichen (durch eine andere eindeutige Kennung, beispielsweise OBJECTID) benötigen und schließen diejenigen, z.B .:

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