在之前的文章中介绍了使用aycpy批量修改图层唯一值符号的标注,但是之前的代码写的不够好,主要是在运行代码之前还要在符号系统界面对项目按值进行排序。
这次直接使用字典,将对应的DLBM和DLMC做成一对键值,这样根据DLBM给标注赋值DLMC时便不受排序的影响。
代码如下
import arcpy
p = arcpy.mp.ArcGISProject('CURRENT')
m = p.listMaps('地图')[0]
l = m.listLayers('DLTB')[0]
sym = l.symbology
cursor = arcpy.SearchCursor(l)
uniqueDict={
}
uniqueDLBM = []
for row in cursor:
key = row.getValue('DLBM')
value=row.getValue('DLMC')
if key not in uniqueDLBM:
uniqueDLBM.append(key)
uniqueDict[key] = value
for grp in sym.renderer.groups:
for itm in grp.items:
v=itm.values[0][0]
itm.label = uniqueDict[v]
print(v+"---"+itm.label)
l.symbology = sym