Mehr

Aktualisieren einer Feature-Class basierend auf der Auswertung verschiedener Felder mit arcpy.da.UpdateCursor

Aktualisieren einer Feature-Class basierend auf der Auswertung verschiedener Felder mit arcpy.da.UpdateCursor


Ich habe eine Feature-Class mit einer Reihe von Feldern, von denen zwei Schlüsselfelder namens key und front sind, und sekundäre Felder namens key_n und front_n.

Die Sache ist, dass ich in der gesamten Tabelle nach allen Instanzen von Schlüsselwerten suchen muss, bei denen die Front gleich dem Wert front_n ist (Schlüssel + Front = Schlüssel + Front_n), als Grundlage für die Berechnung des Werts key_n.

Ich habe es mit arcpy.da.UpdateCursor versucht, habe es aber nicht hinbekommen, da arcpy.da.UpdateCursor meiner Ansicht nach nur Werte innerhalb der aktuellen Zeile vergleicht und die bereitgestellten Beispiele mit ArcGis diese Möglichkeit nicht untersuchen.

Dies ist der Code, den ich in letzter Zeit bekommen habe, ohne Erfolg. In diesem Fall sind die Felder cvegeo und cveft als Übereinstimmung mit cvegeo + cveref1 zu suchen, in diesem Fall sind die Felder cvevial1 und cveseg1 aus dem Datensatz zu übernehmen, in dem cvegeo+cveft ursprünglich genommen wurde.

import arcpy import sys frentes = arcpy.GetParameterAsText(0) #frentes = arcpy.GetParameterAsText(1) campos = ('CVEGEO', 'CVEFT', 'CVEVIAL', 'CVESEG', 'CVEGEO_N', 'CVEFT_N', 'CVEVIAL_N ', 'CVESEG_N', 'CVEREF1', 'CVEVIAL1', 'CVESEG1', 'CVEREF2', 'CVEVIAL2', 'CVESEG2', 'CVEREF1_N', 'CVEVIAL1_N', 'CVESEG',_N', 'CVESEG2_N', 'PRUEBA') mit arcpy.da.SearchCursor(frentes, campos) als Scursor: für Zeile im Scursor: abuscar = row[0] frente = row[1] clave_vial = row[2] clave_seg = [3] mit arcpy.da.UpdateCursor(frentes, campos) als ucursor: for urow in ucursor: if (urow[0] == abuscar und urow[8] == frente): urow[9] = clave_vial urow[10] = clave_seg ucursor.updateRow(urow)

Sie haben einen Syntaxfehler in Ihrer äußeren Schleife. Anstatt den Wert des 4. Felds zuclave_seg, du hast ihm den Wert von gegeben[3], bei der es sich um eine Liste handelt, und ArcGIS weiß nicht, was damit zu tun ist.

Veränderungclave_seg = [3]zuclave_seg = Reihe[3]: