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

You may also like...