Saya memiliki kursor pembaruan ArcPy Data Access yang ingin saya urutkan sebelum melakukan pembaruan.
Kursor membuat pembaruan jika saya tidak mengurutkan, tetapi jika saya menambahkan semacam ke kursor saya mendapatkan kesalahan, "iterasi tidak dimulai."
Penyortiran berfungsi dengan benar tetapi harus menghantam kursor karena suatu alasan.
Apakah tidak mungkin untuk mengurutkan kursor pembaruan seperti kursor pencarian? Apakah itu mengubah jenis atau sesuatu?
idList = ['100100', '100200', '100300', '200100']
count = 0
with arcpy.da.UpdateCursor(newFC, ("SHAPE@X", "SHAPE@Y", "Label")) as addLabelCursor:
for row in sorted(addLabelCursor, key=itemgetter(0), reverse = True):
print idList[count]
row[2] = str(idList[count])
addLabelCursor.updateRow(row)
count += 1
arcpy
arcgis-10.1
cursor
sorting
TurboGus
sumber
sumber
Jawaban:
Semacam itu sepenuhnya menghabiskan kursor sebelum Anda masuk ke
updateRow
. Cara kursor bekerja adalah bahwaupdateRow
panggilan tidak berfungsi pada baris sewenang-wenang, tetapi pada saat ini sedang diulangi. Artinya, Anda hanya dapat beroperasi pada satu baris sekaligus.Anda mungkin ingin melakukan ini di sisi geodatabase. Anda dapat menentukan
ORDER BY
klausa dan mengurutkannya sebelum Anda mendapatkannya.sumber
sql_clause
(tuple) parameter:sql_clause=(None, 'ORDER BY SORT_FIELD ASC')
- atauDESC
untuk turun.Seperti yang ditunjukkan @nmpeterson, Anda dapat memasukkan klausa sql ke dalam panggilan kursor untuk mengurutkan berdasarkan bidang:
info berasal dari bantuan ESRI: http://resources.arcgis.com/en/help/main/10.2/index.html#//018w00000014000000
sumber
Ini mungkin hanya relevan untuk referensi di masa mendatang, tetapi menurut ArcGis bantuan online saat menggunakan arcpy.UpdateCursor bukan arcpy.da.UpdateCursor ada opsi penyortiran yang tersedia.
cursor = arcpy.UpdateCursor (fc, sort_fields = " YOURFIELDNAME ")
sumber