通过arcpy.SearchCursor函数获取shp文件属性表中的字段值。SearchCursor 用于建立从要素类或表中返回的记录的只读访问权限。将返回一组迭代元组。元组中值的顺序与 field_names 参数指定的字段顺序相符。SearchCursor函数的语法为:
SearchCursor (in_table, field_names, {where_clause}, {spatial_reference}, {explode_to_points}, {sql_clause})
参数 | 说明 | 数据类型 |
---|---|---|
in_table | 要素类、图层、表或表视图 | String |
field_names [field_names,…] | 字段名称列表(或组)。对于单个字段,可以使用一个字符串,而不使用字符串列表。 如果要访问输入表中的所有字段(栅格和 BLOB 字段除外),可以使用星号 (*) 代替字段列表。但是,为了获得较快的性能和可靠的字段顺序,建议您将字段列表限制在实际需要的字段。 不支持栅格字段。 | String |
where_clause | 用于限制所返回的记录的可选表达式。有关 WHERE 子句和 SQL 语句的详细信息,请参阅构建查询表达式。 (默认值为 None) | String |
spatial_reference | 要素类的空间参考。可以使用 SpatialReference 对象或等效字符串来指定。 (默认值为 None) | SpatialReference |
sql_clause | 以列表或组的形式列出的可选 SQL 前缀和后缀子句对。 SQL 前缀子句支持 None、DISTINCT 和 TOP。SQL 前缀子句支持 None、ORDER BY 和 GROUP BY。 SQL 前缀子句位于第一个位置,将被插入到 SELECT 关键字和 SELECT COLUMN LIST 之间。SQL 前缀子句最常用于 DISTINCT 或 ALL 等子句。 SQL 后缀子句位于第二个位置,将追加到 SELECT 语句的 where 子句之后。SQL 后缀子句最常用于 ORDER BY 等子句。 (默认值为 (None, None)) | tuple |
例如获取test.shp文件中的“FID”,“POINT_X”和“POINT_Y”三个字段的值并输出。
import arcpy
shppath = r"F:\\pythonpro\\test\\test.shp"
#提取shp文件中的'FID', 'POINT_X', 'POINT_Y'字段
shpfields = ['FID', 'POINT_X', 'POINT_Y']
shp_FID = []
shp_X = []
shp_Y = []
shprows = arcpy.SearchCursor(shppath, shpfields)
while True:
shprow = shprows.next()
if not shprow:
break
shp_FID.append(shprow.FID)
shp_X.append(shprow.POINT_X)
shp_Y.append(shprow.POINT_Y)
for i in range(0, len(shp_FID)):
print shp_FID[i], shp_X[i], shp_Y[i]
test.shp文件中的“FID”,“POINT_X”和“POINT_Y”三个字段的值:
输出的结果:
欢迎大家批评指正。