arcgis for python arcpy 入门 (三)

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

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

 

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

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

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

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

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

 

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

image

image

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

image

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

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

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

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

image

 

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

image

 

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

image

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

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

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

 

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

image

基本上差异不大

 

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

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

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

所幸 使用原来的UpdateCursor 是可以

新的da模块错误如下:

image

image

 

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

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

posted @   ZN大叔  阅读(8566)  评论(5编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
点击右上角即可分享
微信分享提示