2 回答

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超10個(gè)贊
如果您只是為了填充字段而寫入,而不是讀取和寫入 - 您可以在循環(huán)之外創(chuàng)建一個(gè)狀態(tài)變量來跟蹤索引。
with arcpy.da.UpdateCursor("Hydrants.shp", ["FACILITYID", "SYSTEM"]) as cursor:
chaparral_index = 0
Suncity_index = 0
for row in cursor:
if (row[0] == '<Null>' and row[1] == 'Chaparral'):
row [0] = 'CH-HY{}'.format(chaparral_index)
chaparral_index += 1
elif (row[0] == '<Null>' and row[1] == 'SunCity'):
row [0] = 'SC-HY{}'.format(Suncity_index)
Suncity_index += 1
cursor.updateRow(row)
如果您打算從預(yù)先存在的數(shù)據(jù)中讀取,您可能需要引入正則表達(dá)式來解析“FACILITYID”并找到最高索引。

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超8個(gè)贊
為了檢索現(xiàn)有的最后一個(gè) ID,我使用 Search.Cursor 像這樣用于 Chaparral 系統(tǒng):
CHvalues = [row[0] for row in arcpy.da.SearchCursor("Hydrants.shp", "FACILITYID", "SYSTEM = 'Chaparral'")]
CHuniqueValues = max(CHvalues)
CHintLastVal = int(CHuniqueValues[-4:])
這是我如何將它實(shí)現(xiàn)到循環(huán)中:
with arcpy.da.UpdateCursor("Hydrants.shp", ["FACILITYID", "SYSTEM"]) as cursor:
for row in cursor:
if ((row[0] == None or row[0] == '<Null>' or row[0] == '') and row[1] == 'Chaparral'):
CHintLastVal = CHintLastVal + 1
CHstr099 = str(CHintLastVal)
print('CH-HY{}'.format(CHstr099))
row [0] = 'CH-HY{}'.format(CHstr099)
我將不得不研究 re.search,因?yàn)楫?dāng)整數(shù)達(dá)到 9,999 并且 int[-4] 需要更改為 [-5] 以容納 10,000 時(shí),我可以看到這種方法會(huì)導(dǎo)致問題。
謝謝你們的反饋!
添加回答
舉報(bào)