Več

Posodabljanje razreda lastnosti na podlagi vrednotenja različnih polj z arcpy.da.UpdateCursor

Posodabljanje razreda lastnosti na podlagi vrednotenja različnih polj z arcpy.da.UpdateCursor


Imam razred lastnosti s številnimi polji, od katerih sta dve ključni polji, imenovani ključ in spredaj, ter sekundarni polji, imenovani key_n in front_n.

Stvar je v tem, da moram v celotni tabeli poiskati vse primere vrednosti ključev, kjer je sprednja stran enaka vrednosti front_n (ključ+spredaj = ključ+spredaj_n), kot osnovo za izračun vrednosti key_n.

Poskušal sem z arcpy.da.UpdateCursor, vendar ga nisem dobil, saj po mojem mnenju arcpy.da.UpdateCursor primerja samo vrednosti v trenutni vrstici in navedeni primeri z ArcGis ne raziskujejo te možnosti.

To je koda, ki sem jo dobil v zadnjem času, brez uspeha. V tem primeru je treba polji cvegeo in cveft iskati kot ujemanje s cvegeo + cveref1, v tem primeru pa se polja cvevial1 in cveseg1 poneseta iz zapisa, kjer so cvegeo + cveft vzeti izvirno.

import arcpy import sys frentes = arcpy.GetParameterAsText (0) #frentes = arcpy.GetParameterAsText (1) campos = ('CVEGEO', 'CVEFT', 'CVEVIAL', 'CVESEG', 'CVEGEO_N', 'CVEFT_N', ' ',' CVESEG_N ',' CVEREF1 ',' CVEVIAL1 ',' CVESEG1 ',' CVEREF2 ',' CVEVIAL2 ',' CVESEG2 ',' CVEREF1_N ',' CVEVIAL1_N ',' CVESEG1_N ',' CVEREF2_N ',' CVEVIAL2_N ', 'CVESEG2_N', 'PRUEBA') z arcpy.da.SearchCursor (frentes, campos) kot brskalnik: za vrstico v brskalniku: abuscar = vrstica [0] frente = vrstica [1] clave_vial = vrstica [2] clave_seg = [3] z arcpy.da.UpdateCursor (frentes, campos) kot ucursor: za urow v ucursor: if (urow [0] == abuscar in urow [8] == frente): urow [9] = clave_vial urow [10] = clave_seg ucursor.updateRow (urow)

V zunanji zanki imate sintaktično napako. Namesto da bi vrednosti 4. polja dodeliliclave_seg, ste mu dali vrednost[3], ki je seznam in ArcGIS ne ve, kaj bi z njim.

Spremeniteclave_seg = [3]doclave_seg = vrstica [3]:


Poglej si posnetek: Poco X3 NFC 6GB128GB je najboljši pametni telefon v srednjem razredu?