arcgis for python arcpy 入门 (三)

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

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

 

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

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

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

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

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

 

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

image

image

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

arcgis for python arcpy 入门 (三)_第1张图片

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

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

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

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

arcgis for python arcpy 入门 (三)_第2张图片

 

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

image

 

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

arcgis for python arcpy 入门 (三)_第3张图片

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

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

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

 

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

arcgis for python arcpy 入门 (三)_第4张图片

基本上差异不大

 

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

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

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

所幸 使用原来的UpdateCursor 是可以

新的da模块错误如下:

arcgis for python arcpy 入门 (三)_第5张图片

arcgis for python arcpy 入门 (三)_第6张图片

 

最后 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

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

你可能感兴趣的:(python)