ArcPY系列之一(游标)

数据访问模块 (arcpy.da) 是一个用于处理数据的 Python 模块,是新增的一个模块,与原先的游标什么的相比,这个据说更高效。

本篇主要介绍:InsertCursor/UpdateCursor/SearchCursor!

InsertCursor

可以在要素类或者表上添加新行/要素。

例子

数据准备

首先,新建了一个图层如下图所示:

插入数据

import arcpy
import random
#初始化几个变量,分别是图层、字段、字段值
data = ur'D:\geoData\空库.gdb\data\test'
fileds = ['id','accode','SHAPE@XY']
accode = '330101'
#初始化一个游标,插入数据
with arcpy.da.InsertCursor(data,fileds) as cursor:
    for i in range(1,11):
    #插入id与code,并且采用随机数为要素添加随机xy
    cursor.insertRow((i,accode,arcpy.Point(120+random.random(),30+random.random())))

结果数据

SearchCursor

按照需要将数据中的值拿出来

例子

数据

用上面的数据

检索数据

#检索所有数据
with arcpy.da.SearchCursor(data,fileds) as cursor:
    for row in cursor:
        print(u'id:%s;accode:%s;xy:%s'%(row[0],row[1],row[2]))

上面的例子是一次检索出所有的数据,但有时候,往往只需要少量数据,这时就可以使用where子句

#使用whereclause参数,限制一下
with arcpy.da.SearchCursor(data,fileds,where_clause='id <= 5') as cursor:
    for row in cursor:
        print(u'id:%s;accode:%s;xy:%s'%(row[0],row[1],row[2]))

UpdateCursor

更新数据

例子

数据

还是上面的数据

更新数据

with arcpy.da.UpdateCursor(data, fileds) as cursor:
    for row in cursor:
        if row[0]%2 == 0:
            row[1] =  '330100'
        else:
            row[1] = 'others'
        cursor.updateRow(row)更新操作同样支持where子句

结果数据

总结

对于初学者来说,最好的学习资料就是小案例+官方文档。我将结合自己的一些经验,来写一些数据处理方面的小案例。通过这些小的案例,让各位读者了解一些地理数据处理的小技巧,如果想要了解的更深入,可以自己研究官方文档。

others

最近投在公众号上的时间有点多了,接下来将停更一波(除了学习打卡,不会再有其他内容)。待以后碰上合适的题材,我再接着分享!

本文分享自微信公众号 - 数据处理与分析(Qing_master)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-08-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券