ArcPy 游标

  ArcPy 游标位于数据访问模块 (arcpy.da)中,包括用于查询的 SearchCursor ,插入数据的 InsertCursor ,更新和删除的 UpdateCursor 。

  SearchCursor 和 UpdateCursor 都支持 SQL WHERE 子句,用于限制所返回的记录的可选表达式。在使用 SQL WHERE 子句时可以用 AddFieldDelimiters 函数返回字段分隔符,因为所查询数据的格式不同,字段分隔符不同,如,文件地理数据库和 shapefile 使用双引号 (" "),个人地理数据库使用方括号 ([ ]),而 ArcSDE 地理数据库不使用字段分隔符。

  使用游标会锁定处理的数据,使用完后需要释放,可以使用 Python 的 with 语句,这会自动释放锁。

SearchCursor

# -*- coding: utf-8 -*-

import arcpy
from arcpy import env

env.workspace = r'E:\EsriPress\Python\Data\Exercise07'
fc = 'airports.shp'
delimitedField = arcpy.AddFieldDelimiters(fc, 'COUNTY')
with arcpy.da.SearchCursor(fc, ('NAME', 'FIPS'), delimitedField + ' = \'Anchorage Borough\'') as cursor:
    for row in sorted(cursor):
        print("name:{0},county:{1}".format(row[0], row[1]))

InsertCursor

# -*- coding: utf-8 -*-

import arcpy
from arcpy import env

env.workspace = r'E:\EsriPress\Python\Data\Exercise07'
fc = 'Results/airports_anchorage.shp'
with arcpy.da.InsertCursor(fc, ('SHAPE@XY', 'Name')) as cursor:
    cursor.insertRow(((-149.771939, 61.100004), 'New Airport'))

UpdateCursor

# -*- coding: utf-8 -*-


import arcpy
from arcpy import env

env.workspace = r'E:\EsriPress\Python\Data\Exercise07'
fc = 'Results/airports_anchorage.shp'
delimfield = arcpy.AddFieldDelimiters(fc, 'STATE')
with arcpy.da.UpdateCursor(fc, ('STATE', 'NAME'), delimfield + ' <> \'AK\'') as cursor:
    for row in cursor:
        row[0] = 'AK'
        cursor.updateRow(row)
        if row[1] == 'New Airport':
            cursor.deleteRow()

参考

面向ArcGIS的Python脚本编程

你可能感兴趣的:(ArcPy 游标)