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

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

  • 相关阅读:
    Windows7安装SQL Server 2008图解
    【Android病毒分析报告】
    linux source命令学习
    SQL学习笔记——SQL初入门,Ubuntu下MySQL的安装
    挂断电话的实现(即类似于电话号码黑名单)
    35+雪花Logos设计灵感
    jdk8预览
    PL/SQL --> 动态SQL调用包中函数或过程
    VMware 彻底删除虚拟机操作系统的方法
    Ubuntu 16.04 LTS: apt-get update 失败处理 Aborted (core dumped)
  • 原文地址:https://www.cnblogs.com/aoldman/p/3054729.html
Copyright © 2011-2022 走看看