Vairāk

Skripts, lai atjauninātu noteiktus shapefile ierakstus, kas atbilst dažādiem nosacījumiem

Skripts, lai atjauninātu noteiktus shapefile ierakstus, kas atbilst dažādiem nosacījumiem


Šis ir mans scenārijs:

  • Vārdu saraksts pitonu sarakstā: a []
  • 1000 ierakstu formas fails ar kolonnu: 'nosaukums' (aizpildīts)
  • Otrā kolonna ar nosaukumu “vērtība”
  • ArcGIS vide (arcpy)

Es vēlos atjaunināt kolonnu “value” (t.i., no 0 līdz 1) visiem shapefile ierakstiem, kuru vērtība slejā “name” atbilst jebkuram sarakstam.

Runājot par efektivitāti, es nezinu, kurš ir labākais risinājums:

A) Vispirms atkārtojiet sarakstu; katrai saraksta vērtībai es sāku darboties caur shapefile, lūdzot atbilstību, un veicu atjaunināšanu. Piemērs: 3 nosaukumiem; 3000 lasīšanas operāciju šifilā.

B) Vispirms atkārto caur formas failu; katram šablona faila ierakstam es meklēju atbilstību sarakstā, katru reizi atkārtojot sarakstu. Piemērs: 3 nosaukumiem; 1 000 lasīšanas operāciju šablonā.

C) Tā vietā izmantojiet vārdnīcu, bez saraksta. Vispirms veiciet atveidi caur shapefile un katram ierakstam lūdziet vārdnīcai vērtību, ja tāda ir, un veiciet atjaunināšanu. Piemērs: 3 nosaukumiem; 1 000 lasīšanas operācijas shapefile.


Ja jūsu vērtības jau ir pitonu sarakstā, jums ir nepieciešams atkārtot tikai caur savu formefailu. Jūs varat pārbaudīt, vai vērtība ir sarakstā arja iekšā :.

Piemērs:

# pilns ceļš uz shapefile shp = "C:  example  exampe.shp" #check field nameFld = "name" #update field valueFld = "value" #update value updateValue = 1 checkList = […] #jūsu vērtības, lai pārbaudītu importēšanu arcpy #iterate rindas tabulā ar arcpy.da.UpdateCursor (shp, [nameFld, valueFld]) kā kursoru: nosaukumam, vērtība kursorā: #izlaidiet rindu, ja nosaukuma vērtība nav sarakstā, ja nosaukumā nav checkList: turpināt # atjaunināšanas rinda = (nosaukums, updateValue) cursor.updateRow (rinda)

Skatīties video: Kaip atskelti kietojo disko dali?