Mehr

Zusammenführen vieler zu einer Datenzeile in arcpy

Zusammenführen vieler zu einer Datenzeile in arcpy


Der Datensatz 'left_right_merge' am unteren Rand meines Screenshots zeigt den Datensatz, mit dem ich gerade arbeite. Die NODE-Werte geben ein einzelnes Punkt-Feature an, das jedoch mit vielen Attributen dupliziert wird. Ich möchte das Dataset so reduzieren, dass es wie die 'test_data_nodes' oben auf dem Screenshot aussieht. Wie würde ich das in Python tun?


Es könnte einen eleganteren Weg geben, dies zu tun, aber hier ist eine schnelle und schmutzige Skriptbasis, die meinem Verständnis Ihres Problems entspricht:

import arcpy arcpy.env.workspace = r'C:UsersechiassonDocumentsArcGISDefault.gdb' # Korrekten Geodatabase-Pfad ersetzen arcpy.env.overwriteOutput = True # Eine Kopie der ursprünglichen Feature-Class erstellen arcpy.Copy_management( 'left_right_merge', 'left_right_merge_collapse') # Reduziere die Ausgabe-Feature-Class nodeList = [] mit arcpy.da.UpdateCursor('left_right_merge_collapse', ['NODE']) als Cursor: für Zeile im Cursor: if row[0] in nodeList : cursor.deleteRow() else: nodeList.append(row[0]) für Knoten in nodeList: # Kompilieren Sie die Werte in der ursprünglichen Feature-Class attList = [0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0] mit arcpy.da.SearchCursor('left_right_merge', ['NB_L','NB_R', 'SB_L', 'SB_R', 'NWB_L', 'NWB_R ', 'NEB_L', 'NEB_R', 'SWB_L', 'SWB_R', 'SEB_L', 'SEB_R', 'EB_L', 'EB_R', 'WB_L', 'WB_R'], "NODE = " + str( node)) als Cursor: für Zeile im Cursor: für i im Bereich(0,15): if row[i] != 0: attList[i] = row[i] # Aktualisieren Sie die Werte in der Collapse-Feature-Class mit arcpy .da.UpdateCursor('left_right_merge_collap se', ['NB_L','NB_R', 'SB_L', 'SB_R', 'NWB_L', 'NWB_R', 'NEB_L', 'NEB_R', 'SWB_L', 'SWB_R', 'SEB_L', 'SEB_R ', 'EB_L', 'EB_R', 'WB_L', 'WB_R'], "NODE = " + str(node)) als Cursor: für Zeile im Cursor: für i im Bereich(0,15): Zeile[i ] = attList[i] cursor.updateRow(row)

Bitte hinterlassen Sie einen Kommentar, wenn ich etwas vermisse.


Wenn du das hast Vorauszahlung (ArcInfo)-Version von ArcMap können Sie einfach das Werkzeug "Identische löschen" ausführen, ohne dass Python erforderlich ist.

Wenn Sie eine Frage stellen, sollten Sie Ihr GIS-System, die Lizenzstufe und die entsprechenden Erweiterungen angeben, da dies die Antwort bestimmt, die Sie erhalten, wenn einige Tools für die Verwendung mit höheren Lizenzstufen verfügbar werden.


Daran habe ich früher nicht gedacht, aber in der vorherigen Frage haben Sie mit einer einzigen Tabelle gearbeitet. Eine weitere Option ist ein Spatial Join, der auf allen Lizenzstufen verfügbar ist und somit nicht eingeschränkt ist wie das Pivot-Table-Tool. Ich habe bestätigt, dass du kann Räumlich Verbinden Sie eine Ebene mit sich selbst.

Sie würden Ihre reduzierte Punkttabelle (ein Datensatz pro Knoten) als Ziel-Features und Ihre duplizierte Knotentabelle als Join-Features festlegen. Durch Auswahl eines Join_One_to_One-Vorgangs können Sie mithilfe von Summe eine Feldzuordnungs-Zusammenführungsregel für jedes Ihrer anderen Felder erstellen. In der resultierenden Ausgabepunkttabelle sollten Sie Ihren einen Datensatz pro Knoten mit der Summe aller identischen Knotenattribute erhalten - in diesem Fall 1, wenn es überhaupt einen Attributwert gibt, und 0, wenn nicht.

Auch hier finden Sie auf der oben verlinkten Hilfeseite Python-Codebeispiele sowohl für ein Window- als auch für ein eigenständiges Skript.


Schau das Video: FLET EN JULESTJERNE. HOMEMADE