1、问题描述
我有10个文件夹,每一个文件夹有18个shp文件(温度数据),需要提取每个shp文件的温度数据,即下图属性表中RASTERVALU列。
2、上代码
#coding:utf-8
import arcpy
from arcpy import env
import pandas as pd
#文件名list
file_name_list = ["avr_mon.shp","avr_year.shp",
"max_mon.shp","max_year.shp",
"min_mon.shp","min_year.shp",
"c_avr.shp","c_max.shp","c_min.shp",
"x_avr.shp","x_max.shp","x_min.shp",
"q_avr.shp","q_max.shp","q_min.shp",
"d_avr.shp","d_max.shp","d_min.shp",]#18个shp文件
#循环大环境路径(10个文件夹)
for num in range(1,11):
print(num)
env.workspace= "D:\\data\\"+str(num)#路径根据需求自行修改
#循环文件名
for file in file_name_list:
print(file)
cur=arcpy.da.SearchCursor(file,"RASTERVALU")#提取RASTERVALU列数据
#search属性表数据
t_list = []
for row in cur:#cursor是按照一行一行顺序读取数据
t = row[0]#上面cursor只寻找一列数据,因此是第0列
t_list.append(t)
#list转df
df = pd.DataFrame(t_list)
#导出df为csv格式
df.to_csv(env.workspace+"\\"+file.split(".")[0]+".csv")
3、结果
撒花~~