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

如果沒有啟用版本 則不能試用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM