更新shapefile使用的是arcpy.da.UpdateCursor函数,UpdateCursor 能够对游标所访问的数据进行读写,其定义如下:
UpdateCursor(in_table, field_names, {where_clause}, {spatial_reference}, {explode_to_points}, {sql_clause})
参数的意义与arcpy.da.SearchCursor相同。
UpdateCursor具有四个方法:deleteRow():删除当前要素next():用于迭代时获取下一行数据reset():将游标重置到第一行updateRow(row):更新当前行数据
接下来来看一段代码:
shp_file_path = ur'../data/ReadData/Point.shp'fields_array = ['SHAPE@', 'Id']# 定义WGS84坐标系spatial_reference = arcpy.SpatialReference(4326)with arcpy.da.UpdateCursor(shp_file_path, fields_array, spatial_reference=spatial_reference) as cursor:row_index = 0for row in cursor:if row_index == 0:new_id = random.randint(1, 100)row[1] = new_idelse:new_y = random.randint(-90, 90)old_pt = row[0].firstPointrow[0] = arcpy.Point(old_pt.X, new_y)row_index += 1cursor.updateRow(row)
这段代码是更新了一个“Point.shp”文件。开始,我们定义了需要搜索的字段为[‘SHAPE@’, ‘Id’],当row_index == 0时,更改了属性中的第2个字段——Id——为一个随机整数;当row_index == 1时,更改了属性中的第1个字段——几何信息,此处为点——的y坐标为一个在[-90,90]之间的随机整数。
