其他
ArcPy创建自增编号脚本工具
今天我们来分享一个简单的问题,如何实现AcrGIS属性表中的顺序编号,比如 1,2,3,4····,对于ArcGIS的老司机来说这太简单,直接ID值赋值过去就好,即使说ID值不连续也可以通过导出数据让ID连续,或者用到排序工具可以实现更加多样化的排序
但是,有时候我就是想通过代码实现怎么办呢?
一、字段计算器的Python代码实现
那也是简单的,即使你没有编程基础,一百度就出来,你可以照抄下来,运行一下就好。
比如下图,一个矢量数据中,有一个字段“编号”,你想顺序自增,1,2,3,4····,打开字段计算器把百度出来网络流传的最广的代码复制就去就可以。
你又说 复制起来麻烦,那我只好把这个保存为cal文件,后面你直接加载调用就好了。都会分享给大家,文后有获取方法。
那下面贴一下代码,网络流传版:
rec=0
def autoIncrement():
global rec
pStart = 1 #起始编号,可以更改
pInterval = 1 #增量间隔,可以更改
if (rec == 0):
rec = pStart
else:
rec = rec + pInterval
return rec
这个,我们就要利用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系列免费技术分享,之后看目录哦。
如下有视频解说和直接cal计算语句和脚本工具的下载
电脑网页端地址:
https://ke.qq.com/course/147406?taid=4244389761269710&tuin=ec7fa12
加小编微信邀请你加入GIS思维微信技术交流群哦!