利用arcpy和GP构建批量提取字段名的工具


在测绘的工作中,必然会接触到大量的shp文件,而属性信息存在于shp的属性表中,每个属性表都有相应的字段,有时工作中需要获取字段的某些属性信息,用于检查或者分析。

这时就可以利用arcpy和GP构建工具,已达到批量提取、并且输出到excel表格中,这样可以直观的查阅。查阅ArcGIS帮助,看到字段有如下属性:这里写图片描述

下面以批量提取shp的字段名称(name)为例:

首先,自然是构建工具:这里FCs要设置多行

代码:导入模块、定义变量

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

You may also like...