Funcția de actualizare a cursorului în Arc Pro nu afișează erori, dar nu se execută (Programare, Python, Gis, Arcgis, Arcpy)

Linds a intrebat.

Am scris acest lucru pentru a fi executat în ArcGIS Pro pentru a popula unele celule dintr-un tabel de atribute dacă una dintre celelalte celule este adevărată. Când execut scriptul, nu se întâmplă nimic în tabel și nu primesc un mesaj de eroare. Oare am uitat vreo porțiune din codul care îl va executa? Vă mulțumesc!

import arcpy
fc = 'C://file//path//folder.gdb//featureclass'

fields = ['OBJECT', 'PROJECT', 'LENGTH', 'ID', 'etc.', 'FIELD', 'FIELD2', 
'FIELD3', 'FIELD4', 'DV......']


with arcpy.da.UpdateCursor(fc, fields) as rows:
    for row in rows:
        if(row[10] == "AERIAL"):
            row[15] == "N" and row[18] == "AER::"
            rows.updateRow(row)
        else:
            if(row[10] == "BURIED"):
                row[15] == "Y" and row[18] == "BUR::"
                cursor.updateRow(row)

Comentarii

  • Cred că întrebările legate de ArcPy sunt mai potrivite pentru subiect la Geographic Information Systems Stack Exchange. –  > Por PolyGeo.
1 răspunsuri
Sub radar

Nu atribui valori noi rândurilor înainte de a încerca să le actualizezi.

Cred că este o problemă de sintaxă.

Acele două rânduri:

row[15] == "N" and row[18] == "AER::"
row[15] == "Y" and row[18] == "BUR::"

Sunt doar de testare dacă row[15] valoarea este egală cu "N" sau "Y" și row[18] valoarea este egală cu "AER::" sau "BUR::". Aceste linii doar returnează True sau False, valorile rândurilor nu sunt modificate.

Dacă doriți să atribuiți noi valori la row[15] și row[18]trebuie să procedați ca în codul de mai jos:

import arcpy
fc = 'C://file//path//folder.gdb//featureclass'

fields = ['OBJECT', 'PROJECT', 'LENGTH', 'ID', 'etc.', 'FIELD', 'FIELD2', 
'FIELD3', 'FIELD4', 'DV......']

with arcpy.da.UpdateCursor(fc, fields) as rows:
    for row in rows:
        if row[10] == "AERIAL":
            row[15] = "N" #assign value "N" to row[15]
            row[18] = "AER::" #assign value "AER::" to row[18]
            cursor.updateRow(row)
        elif row[10] == "BURIED":
            row[15] = "Y" #assign value "Y" to row[15]
            row[18] = "BUR::" #assign value "BUR::" to row[18]
            cursor.updateRow(row)

Comentarii

  • Acesta nu a funcționat. Recunoaște tabelul corect, deoarece poate imprima valorile, doar că nu va introduce valori noi. –  > Por Linds.
  • Ok vezi răspunsul meu editat. dacă tot nu funcționează, verifică că row[10] sunt completate cu "AERIAL" sau "BURIED" numai valori. Problema este probabil că nu sunt îndeplinite niciodată condițiile. –  > Por Sub radar.