arcpy实现重排地块号
import arcpy
import os
mydoc =arcpy.mapping.MapDocument("current")
lyrlist = arcpy.GetParameterAsText(0)
str_DKXH = arcpy.GetParameterAsText(1)
str_CBFBM = arcpy.GetParameterAsText(2)
str_how = arcpy.GetParameterAsText(3)
str_begin = arcpy.GetParameterAsText(4)
fields = [str_CBFBM,str_DKXH]
if str_how==u'全重排':
with arcpy.da.UpdateCursor(lyrlist,fields,sql_clause=(None, 'ORDER BY '+str_CBFBM+','+str_DKXH+' ASC')) as crow:
x = int(str_begin)-1
for row in crow:
x= x+1
y = "%05d" % x
row[1] = y
crow.updateRow(row)
arcpy.AddMessage("完成全重排!")
elif str_how ==u'最大号续编':
with arcpy.da.UpdateCursor(lyrlist,fields,sql_clause=(None, 'ORDER BY '+str_CBFBM+','+str_DKXH+' ASC')) as crow:
n_max = ""
scrow = arcpy.da.UpdateCursor(lyrlist,fields,sql_clause=(None, 'ORDER BY '+str_DKXH+' ASC'))
for row in scrow:
arcpy.AddMessage(row[1])
if len(row[1].strip())>0:
n_max = row[1].strip()
if n_max.isdigit()==True and len(n_max)<=5:
x = int(n_max)
for row in crow:
if(len(row[1].strip())==0):
x= x+1
y = "%05d" % x
row[1] = y
crow.updateRow(row)
arcpy.AddMessage("完成最大号续编!")
else:
arcpy.AddMessage("最后一个地块序号不合规!")
else:
arcpy.AddMessage("什么都没做!")
arcpy.AddMessage("------------------------------")
arcpy.AddMessage("结束!")
arcpy.AddMessage("------------------------------")
arcpy.RefreshActiveView()
转载自:https://blog.csdn.net/yongyinli/article/details/53736380