arcgis for python arcpy 入门 (三)
上一篇讲到如何添加一条数据
这篇将介绍 如何进行 编辑和查询
在10.1里面 arcpy 新增加了一个数据访问模块arcpy.da
帮助里面说 会比原来的游标性能快很多
但是在我的使用中发现 arcpy.da.updateCursor存在问题,截止到发这篇文章的时候还没有得到esri工作人员的答复
而且da模块下面的方法与原来的方法 参数上也有一些差异
比如arcpy.da.SearchCursor和arcpy.SearchCursor的对比如下
首先引入环境和设置数据库
然后通过新的da模块进行查询
这里可以发现 fields 参数 里面“oid@” 就是特指OBJECTID字段的一个令牌
整个fields 是一个string类型的数组
并且取值的时候row是可以使用索引的
但是在where条件的时候 还是需要真正字段名称的
注意:每次使用后记得删除变量,如果where值是string 记得加“”
下面是通过原始模块进行查询
可以发现 第一原始模块无法使用with这种 语法
第二 原始模块的可选参数 fields是一个string 型的字符串 并且没有特殊令牌
第三 row没有索引可以用,要通过getValue方法
下面是使用原始模块查询的方法
基本上差异不大
要说明的是 我这里都没有进入edit.startedit这种方法 所以不管sde是不是注册了版本 都会在默认版本上进行修改
更新的方式和查询的方式一样
但是arcpy.da.UpdateCursor 这个方法 无论我是否打开编辑模式 都无法进行update操作不知道为什么
所幸 使用原来的UpdateCursor 是可以
新的da模块错误如下:
最后 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
如果没有启用版本 则不能试用
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探