查看原文
其他

ArcPy创建自增编号脚本工具

GIS思维 GIS思维 2023-01-11

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

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


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


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

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

    

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

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

rec=0def 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()函数去更新每行的值。学过我们

ArcPy结合数据驱动模块的批量制图
对游标应该比较熟悉了。
这里我不多做解释,我直接贴代码,比较简单,下文我们也会附上解说视频,大家直接看视频介绍,我就码字了 ,好累。
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系列免费技术分享,之后看目录哦。


如下有视频解说和直接cal计算语句和脚本工具的下载




电脑网页端地址:

https://ke.qq.com/course/147406?taid=4244389761269710&tuin=ec7fa12


加小编微信邀请你加入GIS思维微信技术交流群哦!


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存