在 ArcGIS 字段计算器中对字段重复内容自动编号,可通过 ‌Python 脚本结合字典计数‌ 实现。以下是推荐的通用方法,适用于 ArcMap 和 ArcGIS Pro(部分界面略有差异)。


‌核心思路‌

  • 使用全局字典记录每个字段值的出现次数。
  • 每次遇到相同值时,计数加1,并返回当前序号。
  • 支持多字段组合判重、编号补零等扩展需求。

‌操作步骤‌

  1. ‌打开属性表‌
    右键图层 → “打开属性表”。

  2. ‌添加编号字段‌
    点击表头“添加字段”,建议命名为 SerialNum(类型:短整型或长整型)。

  3. ‌启动字段计算器‌
    右键新字段 → “字段计算器”。

  4. ‌设置 Python 解析器‌
    勾选 ‌“Python”‌,并勾选 ‌“显示代码块”‌(ArcGIS Pro 中可能默认显示)。

  5. ‌输入脚本代码‌
    在 ‌“预逻辑脚本代码”‌ 区域粘贴以下任一方案:

    • ‌基础重复编号(首次为1,第二次为2,依此类推)‌

      pythonCopy Code
       
      unique_dict = {}
      def auto_number(value):
       global unique_dict
       unique_dict[value] = unique_dict.get(value, 0) + 1
       return unique_dict[value]
       
      • 从00001开始编码的情况

      unique_dict = {}
      def auto_number(field_value):
      global unique_dict
      unique_dict[field_value] = unique_dict.get(field_value, 0) + 1
      return "{:05d}".format(unique_dict[field_value])

       

    • ‌若需从0开始编号(适用于某些逻辑场景)‌

      pythonCopy Code
       
      unique_dict = {}
      def auto_number(value):
       global unique_dict
       unique_dict[value] = unique_dict.get(value, -1) + 1
       return unique_dict[value]
  6. ‌设置表达式‌
    在下方表达式框输入(假设判重字段为 TBBH):

    pythonCopy Code
     
    auto_number(!TBBH!)

    ⚠️ 将 TBBH 替换为你实际使用的字段名。

  7. ‌执行计算‌
    点击“确定”,等待完成。


    验证结果‌

    计算完成后,检查新字段是否按预期对重复值生成递增序号。例如:

    TBBHSerialNum
    A 1
    B 1
    A 2
    C 1
    B 2

     

posted on 2026-03-09 17:48  迎风流泪的攻城狮,苦逼健忘的程序猿  阅读(52)  评论(0)    收藏  举报