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