利用arcpy和GP构建批量提取字段名的工具
在测绘的工作中,必然会接触到大量的shp文件,而属性信息存在于shp的属性表中,每个属性表都有相应的字段,有时工作中需要获取字段的某些属性信息,用于检查或者分析。
这时就可以利用arcpy和GP构建工具,已达到批量提取、并且输出到excel表格中,这样可以直观的查阅。查阅ArcGIS帮助,看到字段有如下属性:
下面以批量提取shp的字段名称(name)为例:
首先,自然是构建工具:
代码:导入模块、定义变量
import arcpy
import os,string,xlwt
FCs = string.split(arcpy.GetParameterAsText(0),";")
saveFolder = arcpy.GetParameterAsText(1)
savename = arcpy.GetParameterAsText(2)
saveexcel = xlwt.Workbook(encoding = 'utf-8')
table = saveexcel.add_sheet("FieldName",cell_overwrite_ok = True)
filepath = os.path.join(saveFolder,savename+".xls")
saveexcel.save(filepath)
这里新建了一个excel,并将sheet的名称设为FieldName。
i=0
for FC in FCs:
FC_name = arcpy.Describe(FC).baseName
fieldlist = arcpy.ListFields(FC,"","")
fieldlist.insert(0,FC_name)
column = len(fieldlist)
for field in fieldlist:
table.write(i,0,fieldlist[0])
for j in range(1,column):
table.write(i,j,fieldlist[j].name)
i+=1
saveexcel.save(filepath)
这里的想法是excel中第一列为shp文件的名称,第二列开始往后是字段名字。对于每一个FC,获取了.ListFields,这是个列表,然后将文件名称加到列表的第一个。然后先用fieldlist[0]写文件名,再用.name属性循环写字段名就好了。这里i很重要,代表了写到第几行。
结果:
当然,想做的精致一些,可以写上表头,也可以把其他属性信息提取出来,这里只获取了名称,可以横着写的,如果连同其他属性想一同写出,似乎竖着写更为合适,每一行都是一个字段的属性。这需要确定具体的需求。
转载自:https://blog.csdn.net/mmll0927/article/details/77649497