python for arcgis_arcgis for python arcpy 入门 (三)

上一篇讲到如何添加一条数据

这篇将介绍 如何进行 编辑和查询

在10.1里面 arcpy 新增加了一个数据访问模块arcpy.da

帮助里面说 会比原来的游标性能快很多

但是在我的使用中发现 arcpy.da.updateCursor存在问题,截止到发这篇文章的时候还没有得到esri工作人员的答复

而且da模块下面的方法与原来的方法 参数上也有一些差异

比如arcpy.da.SearchCursor和arcpy.SearchCursor的对比如下

首先引入环境和设置数据库

02152740-b81a2b24e69a4ca4a1ca6fdec6a7b265.png

02152740-588f38f06ed2408392d63ac3b0341e04.png

然后通过新的da模块进行查询

02152741-b054e301438b4cfeb78e6b29b7ada368.png

这里可以发现 fields 参数 里面“oid@” 就是特指OBJECTID字段的一个令牌

整个fields 是一个string类型的数组

并且取值的时候row是可以使用索引的

但是在where条件的时候 还是需要真正字段名称的

02152742-8ea4c254f65d42bc89967d630a282d98.png

注意:每次使用后记得删除变量,如果where值是string 记得加“”

02152742-a52bba1f4e854967b2cd10828c543ce3.png

下面是通过原始模块进行查询

02152743-2cad7717d4804b338cafd6d5ff59a6d1.png

可以发现 第一原始模块无法使用with这种 语法

第二 原始模块的可选参数 fields是一个string 型的字符串 并且没有特殊令牌

第三 row没有索引可以用,要通过getValue方法

下面是使用原始模块查询的方法

02152743-f7d33b504c4f494b94e82b7584bdfd76.png

基本上差异不大

要说明的是 我这里都没有进入edit.startedit这种方法 所以不管sde是不是注册了版本 都会在默认版本上进行修改

更新的方式和查询的方式一样

但是arcpy.da.UpdateCursor 这个方法 无论我是否打开编辑模式 都无法进行update操作不知道为什么

所幸 使用原来的UpdateCursor 是可以

新的da模块错误如下:

02152744-f290cb65327d4d1483d535ec3b45e5dd.png

02152745-5bf4a157dee149f08c0c0b5fbf7ce32f.png

最后 da.updatecursor 已经可以试用了 如下代码

from arcpy import *

ws = r'Database Connections\Connection to 192.168.220.165.sde'

edit = da.Editor(ws)

edit.startEditing(False, True)

edit.startOperation()

with da.UpdateCursor("SDE.mutlPolygons",'TEST') as cur:

for row in cur:

row[0] = '1'

cur.updateRow(row)

edit.stopOperation ()

edit.stopEditing(True)

其中 如果启用了版本控制 需要startoperation 和stopOperation

如果没有启用版本 则不能试用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值