Daha çox

ArcPy -də təsadüfi ədəd yaratmaq üçün axtarış və yeniləmə kursorlarından istifadə edirsiniz?


Hər bir qeyd üçün bir dəyər qaytarmaq üçün axtarış kursoru əldə etməkdə çətinlik çəkirəm. Kodumun məqsədi, bir sahədəki qeydlərin siyahısını (FieldA) taramaq və bu dəyərlərə əsaslanaraq FieldA -da 1 ilə dəyəri arasında təsadüfi bir sayı olan ikinci bir sahəni (FieldB) doldurmaqdır. FieldA, birləşməsindən asılı olaraq dəyişən ədədi dəyərləri ehtiva edir. Mənim kodum belədir:

CursorA = satır üçün cursorA = arcpy.SearchCursor (FC): rowcount = (row.getValue ("FieldA")) row = cursorA.next () cursorB = arcpy.UpdateCursor (FC, "FieldB") in c [0] = randint (1, sıra sayı) cursorB.updateRow (rowB)

Kodu işə saldığımda, axtarış imlecinin FieldA -dakı son qeydin dəyərini tapdığı və bu dəyəri təsadüfi ardıcıllıqla ən yüksək dəyər olaraq istifadə etdiyi görünür. Bununla əlaqədar səhv edə bilərəm və bu, mənim tərəfimdən düzgün olmayan kodlaşdırma ilə əlaqəli ola bilər.


Bu əlavə edilmiş skript mənim yanaşacağımı göstərir. Burada əsas operator UpdateCursor -un özüdür. Hər iki sahəni bir UpdateCursor daxil etdiyimi görə bilərsiniz. UpdateCursor -da bu tərcümə olunur:

sıra [0] = 'FieldA' sətri [1] = 'FieldB'

Sonra sizin üçün ağır yük qaldırmaq üçün bu sıraları istifadə edin:

rnumber = randint (1, sıra [0])

arcpy, təsadüfi idxaldan təsadüfi * fc = r'C:  path  to  fc 'ilə arcpy.da.UpdateCursor (fc, [' FieldA ',' FieldB ']) imleç olaraq: kursordakı satır üçün: rnumber = randint (1, sıra [0]) çap nömrəsi sıra [1] = sayı cursor.updateRow (satır)