arcgis for python arcpy 入門 (三)

來源:互聯網
上載者:User

上一篇講到如何添加一條資料

這篇將介紹 如何進行 編輯和查詢

 

在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

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.