Arcpy字段赋值(游标版)

Arcpy字段赋值(游标版)

需求

在Arcmap里用一个字段给另外一个字段进行赋值是十分简单的,但在Arcpy里,用一个字段给另外一个字段的赋值一般采用 字段计算器(CalculateField_management) 来完成,这个方法确实简单,但我在学习游标的时候在想能否使用游标完成这件事情,在网上检索了一段时间,大部分都是用游标来进行特定值的赋值,例如整个字段都赋值为某个数字等等,缺少用一个字段来对另外一个字段进行赋值的方法。因此就简单尝试了一下,方法是可行的,记录下来方便自己!

主要思想

这里赋值主要用到更新游标(UpdateCursor) 来完成,其次我们需要准备一个列表,存储我们需要赋的值。
1、当更新游标选中某一行的同时,设置变量i,让其可以同时遍历列表里的值
2、通过setValue函数将列表里的值一一赋给目标字段,实现字段赋值。

代码

我这里用新建了一个字段city2,并用数据里的city字段对city2进行赋值。

# -*- coding:utf-8 -*-
import arcpy
import sys,locale
reload(sys)
sys.setdefaultencoding("utf-8")

#设置目标数据
data = r"D:\New Desktop\2019全国行政区划\县域粤港澳大湾区.shp"

#添加字段city2
arcpy.AddField_management(data,'city2','TEXT',field_length = 50)

# 为数据设置好更新游标
Cursor_update = arcpy.UpdateCursor(data)

#为数据设置查询游标
Cursor_search = arcpy.SearchCursor(data)

#用一个列表存储city的值,方便给新字段赋值
list = []
for row in Cursor_search:
    list.append(row.getValue('city'))

#给city2字段赋值
i = 0
for row_u,row_s in zip(Cursor_update,Cursor_search):
    row_u.setValue('city2',list[i])
    i += 1
    Cursor_update.updateRow(row_u)

#打印出city2字段的值
for row in Cursor_search:
    print row.getValue('city2')

运行结果

最后也是成功弄出来了,还是比较简单的!
缺点:这个赋值的速度应该取决于数据量,具体的时间复杂度就不计算了
在这里插入图片描述

  • 10
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值