今天我们来分享一个简单的问题,如何实现AcrGIS属性表中的顺序编号,比如 1,2,3,4····,对于ArcGIS的老司机来说这太简单,直接ID值赋值过去就好,即使说ID值不连续也可以通过导出数据让ID连续,或者用到排序工具可以实现更加多样化的排序

ArcGIS字段计算器Python连接字段 arcgis字段计算器python脚本_字段

    但是,有时候我就是想通过代码实现怎么办呢?

 

一、字段计算器的Python代码实现

 

    那也是简单的,即使你没有编程基础,一百度就出来,你可以照抄下来,运行一下就好。

    比如下图,一个矢量数据中,有一个字段“编号”,你想顺序自增,1,2,3,4····,打开字段计算器把百度出来网络流传的最广的代码复制就去就可以。

    

ArcGIS字段计算器Python连接字段 arcgis字段计算器python脚本_arcgis_02

ArcGIS字段计算器Python连接字段 arcgis字段计算器python脚本_python_03

你又说 复制起来麻烦,那我只好把这个保存为cal文件,后面你直接加载调用就好了。都会分享给大家,文后有获取方法。

ArcGIS字段计算器Python连接字段 arcgis字段计算器python脚本_python_04

那下面贴一下代码,网络流传版:

rec=0
def autoIncrement():
 global rec
 pStart = 1     #起始编号,可以更改
 pInterval = 1    #增量间隔,可以更改
 if (rec == 0): 
  rec = pStart 
 else: 
  rec = rec + pInterval 
 return rec

二、ArcPY创建脚本工具实现

这个,我们就要利用ArcPy的游标Cursor来实现,ArcPy的游标有三种查询、更新、插入游标,我们这里就利用更新游标来实现。创建游标后,利用for循环迭代,利用row.setValue()函数去更新每行的值。学过我们


对游标应该比较熟悉了。

这里我不多做解释,我直接贴代码,比较简单,下文我们也会附上解说视频,大家直接看视频介绍,我就码字了 ,好累。

 

import arcpy
lyr=arcpy.GetParameterAsText(0)
iStart=arcpy.GetParameterAsText(1)
iIncrease=arcpy.GetParameterAsText(2)
arcpy.AddField_management(lyr,"sortID","SHORT",'','','50')
i=int(iStart)
cursor=arcpy.UpdateCursor(lyr)
for row in cursor:
     row.setValue("sortID",i)
     cursor.updateRow(row)
     i=i+int(iIncrease)

创建的工具界面如下,操作很简单输入图层,输入起始编号,输入增量,直接运行,就可以在图层添加一个字段且实现按需求自增号。

ArcGIS字段计算器Python连接字段 arcgis字段计算器python脚本_自增_05

 

三、视频解说


GIS思维技术分享:ArcGIS(ArcPy)创建自增编号脚本工具(20200830)