zoukankan      html  css  js  c++  java
  • 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

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

  • 相关阅读:
    ue4同c#通信时的中文乱码问题
    ue4 fstring 和std::string互转
    LinqToExcel 简洁与优美开源库
    虚幻UE4的后处理特效介绍 http://www.52vr.com/thread-31215-1-1.html
    为什么你应该使用OpenGL而不是DirectX?
    会写代码是你创业路上的包袱
    (转载)怎样解决SQL Server内存不断增加问题
    UE4 Pak 相关知识总结
    淘宝运营实战操作大纲
    淘宝运营
  • 原文地址:https://www.cnblogs.com/aoldman/p/3054729.html
Copyright © 2011-2022 走看看