在ArcMap中可以制作Python加载项来添加一些功能实用的小工具。
学习Python加载项可以参考:

使用python制作ArcGIS插件(1)工具介绍
使用python制作ArcGIS插件(2)代码编写
使用python制作ArcGIS插件(3)ArcPy的使用说明
使用python制作ArcGIS插件(4)界面交互
使用python制作ArcGIS插件(5)其他技巧
使用python制作ArcGIS插件(6)案例分析

下图的小班编号工具就是Python加载项

点击启用工具,在下拉列表中选好要编号的图层和字段,输入起始编号后回车就可以点击编号工具开始编号了
起始编号值默认为1,每点击一个小班会把编号值计算到选好的字段中,然后编号值会加1

下面是小班编号工具Python加载项中config.xml的代码:

<ESRI.Configuration xmlns="http://schemas.esri.com/Desktop/AddIns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><Name>xiaobanbianhao</Name><AddInID>{5eb1c9bf-e5bb-4c0e-98ff-4e6abcb61f42}</AddInID><Description>xiaobanbianhaogongjv</Description><Version>0.1</Version><Image>Images\58e54c7f1eb7c7f6.png</Image><Author>ZX</Author><Company>GIS</Company><Date>12/13/2021</Date><Targets><Target name="Desktop" version="10.1" /></Targets><AddIn language="PYTHON" library="xiaobanbianhao_addin.py" namespace="xiaobanbianhao_addin"><ArcMap><Commands><Button caption="启用" category="xiaobanbianhao" class="ButtonClass1" id="xiaobanbianhao_addin.button1" image="Images\2021-12-15_102733.png" message="启用小班编号工具" tip="启用工具"><Help heading="启用工具">启用小班编号工具</Help></Button><ComboBox caption="图层" category="xiaobanbianhao" class="ComboBoxClass1" id="xiaobanbianhao_addin.combobox1" itemSizeString="WWWWWW" message="选择要编号的图层" rows="4" sizeString="WWWWWW" tip="选择图层"><Help heading="选择图层">选择要编号的图层</Help></ComboBox><ComboBox caption="字段" category="xiaobanbianhao" class="ComboBoxClass2" id="xiaobanbianhao_addin.combobox2" itemSizeString="WWWWWW" message="选择要编号的字段" rows="4" sizeString="WWWWWW" tip="选择字段"><Help heading="选择字段">选择要编号的字段</Help></ComboBox><ComboBox caption="起始编号" category="xiaobanbianhao" class="ComboBoxClass3" id="xiaobanbianhao_addin.combobox3" itemSizeString="WWWWWW" message="在框中输入编号起始值,默认值为1" rows="4" sizeString="WWWWWW" tip="输入起始编号"><Help heading="输入起始编号">在框中输入编号起始值,默认值为1</Help></ComboBox><Tool caption="编号工具" category="xiaobanbianhao" class="ToolClass5" id="xiaobanbianhao_addin.tool1" image="Images\2021-12-13_153614_16.png" message="从起始编号开始,点击小班依次编号" tip="点击小班编号"><Help heading="点击小班编号">从起始编号开始,点击小班依次编号</Help></Tool></Commands><Extensions></Extensions><Toolbars><Toolbar caption="小班编号" category="xiaobanbianhao" id="xiaobanbianhao_addin.toolbar" showInitially="true"><Items><Button refID="xiaobanbianhao_addin.button1" /><ComboBox refID="xiaobanbianhao_addin.combobox1" /><ComboBox refID="xiaobanbianhao_addin.combobox2" /><ComboBox refID="xiaobanbianhao_addin.combobox3" /><Tool refID="xiaobanbianhao_addin.tool1" /></Items></Toolbar></Toolbars><Menus></Menus></ArcMap></AddIn></ESRI.Configuration>

下面是小班编号工具Python加载项中『Install』文件夹下xiaobanbianhao_addin.py的代码:

import arcpy
import pythonaddinsclass ZX:tucengming=""    #图层名ziduanming=""    #字段名class ButtonClass1(object):    #启用工具按钮def __init__(self):self.enabled = Trueself.checked = False    #按钮初始状态没有被选中def onClick(self):    #点击按钮启用图层组合框并为图层组合框下拉列表赋值list1=[]mxd = arcpy.mapping.MapDocument("CURRENT")    #获取当前工程for lyr in arcpy.mapping.ListLayers(mxd):    #获取当前工程所有图层list1.append(lyr.name)    #把图层名(图层对象lyr的name属性)追加到列表list1combobox1.enabled = True    #启用图层组合框(图层组合框的变量名为combobox1,与config.xml中id="xiaobanbianhao_addin.combobox1"中的combobox1相同)combobox1.items = list1    #为图层组合框下拉列表赋值combobox1.refresh()    #刷新图层组合框arcpy.RefreshActiveView()class ComboBoxClass1(object):    #图层组合框def __init__(self):self.items = []    #初始状态时组合框下拉列表self.editable = Trueself.enabled = False    #图层组合框初始状态没有启用self.dropdownWidth = 'ZZZZZ'    #几个相同的字符表示组合框下拉列表的长度为几self.width = 'XXXXXXXXX'    #几个相同的字符表示组合框的宽度为几self.value="ZX"    #初始状态时组合框内显示的字符def onSelChange(self, selection):    #点击组合框下拉列表选项时触发self.value=selection    #组合框内显示的内容赋值为下拉列表选中内容self.refresh()    #刷新list2=[]ZX.tucengming = selection    #ZX类tucengming属性赋值为下拉列表选中内容mxd = arcpy.mapping.MapDocument("CURRENT")    #获取当前工程lyr=arcpy.mapping.ListLayers(mxd,ZX.tucengming)[0]    #获取当前工程图层名为ZX.tucengming属性值的图层if lyr.supports("DATASOURCE") and lyr.supports("DESCRIPTION"):    #测试lyr图层是否支持图层的完整路径和描述两种属性lyr_dataSource=lyr.dataSource    #获取图层的完整路径lyr.description="1"    #图层的描述属性赋值为1,这个属性是可读写属性,相当于全局变量,用来记录小班号fields = arcpy.ListFields(lyr_dataSource)    #获取lyr图层要素的所有字段for field in fields:    #遍历lyr图层要素的每一个字段list2.append(field.name)    #将字段名追加到列表list2combobox2.enabled = True    #启用字段组合框(字段组合框的变量名为combobox2,与config.xml中id="xiaobanbianhao_addin.combobox2"中的combobox2相同)combobox2.items = list2    #为字段组合框下拉列表赋值combobox2.refresh()    #刷新字段组合框tool1.enabled = False    #禁用编号工具(限制必须选好图层选好字段才开始编号)combobox3.enabled = False    #禁用起始编号组合框def onEditChange(self, text):passdef onFocus(self, focused):passdef onEnter(self):passdef refresh(self):passclass ComboBoxClass2(object):    #字段组合框def __init__(self):self.items = []    #初始状态时组合框下拉列表self.editable = Trueself.enabled = False    #字段组合框初始状态没有启用self.dropdownWidth = 'ZZZZZ'    #几个相同的字符表示组合框下拉列表的长度为几self.width = 'XXXXXXX'    #几个相同的字符表示组合框的宽度为几self.value="ZX"    #初始状态时组合框内显示的字符def onSelChange(self, selection):    #点击组合框下拉列表选项时触发self.value=selection    #组合框内显示的内容赋值为下拉列表选中内容self.refresh()    #刷新ZX.ziduanming = selection    #ZX类ziduanming属性赋值为下拉列表选中内容tool1.enabled = True    #启用编号工具(编号工具的变量名为tool1,与config.xml中id="xiaobanbianhao_addin.tool1"中的tool1相同)combobox3.enabled = True    #启用起始编号组合框(起始编号组合框的变量名为combobox3,与config.xml中id="xiaobanbianhao_addin.combobox3"中的combobox3相同)combobox3.refresh()    #刷新起始编号组合框def onEditChange(self, text):passdef onFocus(self, focused):passdef onEnter(self):passdef refresh(self):passclass ComboBoxClass3(object):    #起始编号组合框def __init__(self):self.items = []    #初始状态时组合框下拉列表,这个组合框采用输入起始编号后回车触发,下拉列表会一直为空self.editable = Trueself.enabled = False    #起始编号组合框初始状态没有启用self.dropdownWidth = 'ZZZZZ'    #几个相同的字符表示组合框下拉列表的长度为几self.width = 'XXXXX'    #几个相同的字符表示组合框的宽度为几self.value = "1"    #初始状态时组合框内显示的字符def onSelChange(self, selection):passdef onEditChange(self, text):passdef onFocus(self, focused):passdef onEnter(self):    #在组合框中输入起始编号后回车触发self.refresh()    #刷新mxd = arcpy.mapping.MapDocument("CURRENT")    #获取当前工程lyr=arcpy.mapping.ListLayers(mxd,ZX.tucengming)[0]    #获取当前工程图层名为ZX.tucengming属性值的图层lyr.description=self.value    #图层的描述属性赋值为输入的起始编号arcpy.RefreshActiveView()    #刷新当前工程def refresh(self):passclass ToolClass5(object):    #编号工具def __init__(self):self.enabled = False    #编号工具初始状态没有启用self.shape = "NONE"    #编号工具通过点击获取地图x,y坐标与小班交互,不需要画出形状def onMouseDown(self, x, y, button, shift):passdef onMouseDownMap(self, x, y, button, shift):    #捕捉并返回鼠标按下时所在的地图x,y坐标mxd = arcpy.mapping.MapDocument("CURRENT")    #获取当前工程lyr=arcpy.mapping.ListLayers(mxd,ZX.tucengming)[0]    #获取当前工程图层名为ZX.tucengming属性值的图层bianhao=lyr.description    #变量bianhao赋值为lyr图层的描述属性值pointGeom = arcpy.PointGeometry(arcpy.Point(x, y), mxd.activeDataFrame.spatialReference)    #根据返回的x,y坐标新建点几何对象arcpy.SelectLayerByLocation_management(lyr, "INTERSECT", pointGeom)    #按位置选择图层,选出与新建点几何对象相交的lyr图层小班arcpy.CalculateField_management(lyr, ZX.ziduanming,bianhao, "VB")    #对lyr图层计算字段,为选出的字段赋值小班编号bianhao_shuzi=int(bianhao)    #把小班编号字符转数字bianhao_shuzi+=1    #小班编号加1xinbianhao=str(bianhao_shuzi)    #把小班编号数字转字符lyr.description=xinbianhao    #将lyr图层的描述属性值赋值为加1后小班编号arcpy.SelectLayerByAttribute_management(lyr, "CLEAR_SELECTION")    #清除lyr图层选择arcpy.RefreshActiveView()    #刷新当前工程def onMouseUp(self, x, y, button, shift):passdef onMouseUpMap(self, x, y, button, shift):passdef onMouseMove(self, x, y, button, shift):passdef onMouseMoveMap(self, x, y, button, shift):passdef onDblClick(self):passdef onKeyDown(self, keycode, shift):passdef onKeyUp(self, keycode, shift):passdef deactivate(self):passdef onCircle(self, circle_geometry):passdef onLine(self, line_geometry):passdef onRectangle(self, rectangle_geometry):pass

代码中使用图层可读写的description(描述)属性保存小班编号,这个属性的作用相当于全局变量
图层可读写属性包括:

brightness——亮度——整型
contrast——对比度——整型
credits——版权信息——字符型
definitionQuery——定义查询——字符型
description——描述——字符型
labelClasses——标注类——标注类型
maxScale——最大(显示)比例——双精度型
minScale——最小(显示)比例——双精度型
name——图层名——字符型
showLabels——显示标注——布尔型
transparency——透明度——整型
visible——图层可见——布尔型

具体可以参考帮助文档
不是所有的图层都支持这些属性,可以使用supports方法预先进行测试

小班编号工具在ArcMap10.8中可以运行,其他版本没有测试
下载地址如下:

小班编号工具

在ArcMap中制作Python加载项点击小班依次编号相关推荐

  1. 在ArcMap中制作Python加载项线连接工具

    学习Python加载项可以参考: 使用python制作ArcGIS插件(1)工具介绍 使用python制作ArcGIS插件(2)代码编写 使用python制作ArcGIS插件(3)ArcPy的使用说明 ...

  2. python加载项向导_什么是 Python 加载项?

    加载项是一种自定义项,它可以插入到 ArcGIS for Desktop 应用程序(即 ArcMap.ArcCatalog.ArcGlobe 和 ArcScene)中以便提供补充功能以完成自定义任务, ...

  3. word文档中添加mathtype加载项

    教您在word文档中添加mathtype加载项 发布时间:2019/08/12 mathtype安装完成后,正常情况下会在word文档中的菜单中自动添加mathtype加载项,但有时也会出现小意外,m ...

  4. ie11加载项启用不了 java,IE11或IE10中的管理加载项按钮是灰色的不能用怎么办

    有时候我们在使用IE11或者是IE10会遇到IE游览器卡死或者是崩溃的情况,一般我们是时候Internet选项中的"管理加载项"来排除时候问题是否是加载项引起的.可当我们要进入管理 ...

  5. PowerPoint 中缺少think-cell 加载项丨解决方案丨使用教程

    若在 PowerPoint 中无法找到 think-cell,存在多种可能的原因.请循序尝试以下解决方案: 检查 think-cell 是否已在运行中 若 PowerPoint 功能区的插入选项卡中显 ...

  6. Word中没有EndNote加载项

    站内的EndNote安装方法: http://t.csdn.cn/tIa5l http://t.csdn.cn/xmkCo https://blog.csdn.net/subtitle_/articl ...

  7. 关于在MicroSoftWord中添加MathType加载项

    关于在MicroSoftWord中添加MathType加载项 两种模式(建议选1): 1.第一种方式打开word自启动: 1)文件-选项-信任中心-信任中心设置-StartUp文件夹路径,有了该路径之 ...

  8. python加载项向导_使用Python的win32com加载Excel加载项

    我从这里的各种问题中看到,如果使用以下方法从 Python打开Excel实例: xl = win32com.client.gencache.EnsureDispatch('Excel.Applicat ...

  9. 如何在word文档中添加mathtype加载项

    MathType是强大的数学公式编辑器,通常与office一起使用,mathtype安装完成后,正常情况下会在word文档中的菜单中自动添加mathtype加载项,但有时也会出现小意外,mathtyp ...

  10. 小技巧-取消新版outlook中应用商店加载项

    升级OUTLOOK2016后发现在首页多了一个红色的应用商店选项,很多纠结性用户总是在想方设法删除该加载项显示,一直无果,今日文章内容虽然不多,但是做为小技巧已然够用. 原显示: 方法: 鼠标放置在应 ...

最新文章

  1. 万级K8s集群背后etcd稳定性及性能优化实践
  2. FPGA(5)--VHDL--10十进制计数器及7段显示译码器
  3. vue样式绑定与事件处理器的基本使用
  4. 955 加班少的公司名单!
  5. java 各组件单击总数_java 获取面板上有多少个组件
  6. 【CCCC】L2-006 树的遍历 (25分),根据后序与中序遍历建立二叉树(我讨厌树,系列1)
  7. EMNLP'21 | 基于证据检索和图神经验证网络的表格事实验证模型
  8. python捕获特定类型异常的保留字_python异常处理结构中用来捕获特定类型异常的保留字是_以下选项中Python用于异常处理结构中用来捕获特定类型的异常的保留字是......
  9. html range样式修改,自定义(滑动条)input[type=range]样式
  10. 暗黑2魔电西格玛攻略_听说你想刷爆怪物的狗头?或许可以试试《暗黑破坏神》类单机手游...
  11. 川大scu显示无法连接认证服务器,win10锐捷客户端无法认证服务器怎么办?-处理win10锐捷客户端认证失败的方法 - 河东软件园...
  12. NVIDIA史上最大显卡质量事故,我正在用Vostro 1400
  13. Windows 桌面运维 快捷键 基本配置
  14. HTML基础知识笔记
  15. c语言表达ch是大写英文字母,如何用C语言输出26个英文字母和其ascii码的对照表...
  16. 中国多接收器电感耦合等离子体质谱仪市场行业产销需求与投资预测分析报告2022-2028年
  17. Spring包下Pageable的使用 2
  18. iOS 中 XML 数据交换格式
  19. 《道德经》新解(上篇)
  20. 小区人脸识别门禁系统云平台需求分析文档

热门文章

  1. 7.计算机网络的发展 计算机网络发展背景 原因 阿帕网与计算机网络 通信方式 电路 报文 分组 包 交换 卡恩 瑟夫 网络控制协议 NCP TCP ip诞生发展 tcp 协议族 应用编程接口
  2. 软考系统集成项目管理工程师全真模拟题
  3. rvz03支持服务器主板,占地面积超小的一款ITX机箱、银欣RVZ03小乌鸦3机箱 评测
  4. 服务器系统盘是否需要阵列,服务器硬盘必须设置阵列吗
  5. [ActionScript 3] 【开源】D5Power RPG网页游戏开发套件
  6. python3 输出 26个大小写英文字母
  7. 共享自习室创业项目分析
  8. 斑马Zebra 110Xi4 打印机驱动
  9. RS232转RS485的接口原理图(附图)
  10. 【对比Java学Kotlin】类型别名