Python与GIS之arcpy基础代码详解(二)


处理空间数据

1.使用游标访问数据

游标:用于访问表格中的每一行记录或者向表中插入新的记录(遍历属性表中的没一行数据)
游标有三种形式:搜索、插入和更新

  • 搜索游标可用于检索行
  • 插入游标可用于向表或者要素类中插入行
  • 更新游标可用于根据位置更新和删除行

游标函数位于arcpy.da模块(数据访问模块中),语法如下:

  • 搜索游标:arcpy.da.SearchCursor( in_table , field_name , { where_clause},{ spatial_reference },{ explore_to_point } )
# coding=utf-8
import sys
import arcpy
reload(sys)
sys.setdefaultencoding('utf8')
arcpy.env.workspace = r"E:\gis class\data0408"
fc = "现状道路.shp"
with arcpy.da.SearchCursor(fc, ["Layer"]) as cursor:     # 返回记录字段值的列表
    for row in cursor:                      # 用来遍历所有搜索得到的记录并输出指定的字段
        print "Layer:{0} ".format(row[0])

返回结果:

Layer:0乡道 
Layer:0村道 
Layer:0省道 
Layer:0县道 
  • 插入游标:arcpy.da.InsertCursor( in_table , field_name )
import sys
import arcpy
reload(sys)
sys.setdefaultencoding('utf8')
arcpy.env.workspace = r"E:\gis class\data0408"
fc = "现状道路.shp"
cursor = arcpy.da.InsertCursor(fc, ["Layer"])            # 使用InsertCursor函数创建一个游标对象
cursor.insertRow(["高速公路"])          # 在属性表新的一行中插入数据

返回结果:属性表中多了一行记录
在这里插入图片描述

  • 更新和删除游标 : arcpy.da.UpdateCursor ( in_table , field_name , { where_clause},{ spatial_reference },{ explore_to_point } )
    删除字段
# coding=utf-8
import sys
import arcpy
reload(sys)
sys.setdefaultencoding('utf8')
arcpy.env.workspace = r"E:\gis class\data0408"
fc = "现状道路.shp"
cursor = arcpy.da.UpdateCursor(fc, ["Layer"])            # 使用UpdateCursor函数创建一个游标对象
for row in cursor:
    if row[0] == "小路":
        cursor.deleteRow()
del row
del cursor

转载自:https://blog.csdn.net/weixin_42164004/article/details/86739204

You may also like...