1)定义tiff转csv的函数
from osgeo import gdal import pandas as pd import numpy as np gdal.AllRegister() def tifftocsv(path): filePath = path dataset = gdal.Open(filePath) adfGeoTransform = dataset.GetGeoTransform() nXSize = dataset.RasterXSize nYSize = dataset.RasterYSize im_data = dataset.ReadAsArray(0,0,nXSize,nYSize) index = [] columns = [] for j in range(nYSize): lat = adfGeoTransform[3] + j * adfGeoTransform[5] index.append(lat) for i in range(nXSize): lon = adfGeoTransform[0] + i * adfGeoTransform[1] columns.append(lon) data = pd.DataFrame(im_data, index=index, columns=columns) data_np=np.array(data) data_np=data_np.reshape(5254,1) data=pd.DataFrame(data_np) return data
2)计算得到一个DataFrame(作为后续合并的基础文件)
aod_ab_num=6 for i in range(1,aod_ab_num+1): AODpath='D:\\research\\5_AOD\\results\\AODresults\\nmf'+str(aod_ab_num)+'\\Abundance'+str(i)+'.tif' AOD=tifftocsv(AODpath) AOD.columns=['AOD'+str(i)] if(i==1): result=AOD else: frames=[result,AOD] result = pd.concat(frames,axis=1)
3)批量计算其余所有的变量
VARlist=['NDVI','VOC','SO2','Precipitation','PM2.5','OC','NOX','LST','EVI','BC'] ab_num=6 for i in range(0,len(VARlist)): var=str(VARlist[i]) print(var) for j in range(1,ab_num+1): VARpath='D:\\research\\5_AOD\\results\\'+var+'results\\nmf'+str(ab_num)+'\\Abundance'+str(j)+'.tif' VAR=tifftocsv(VARpath) VAR.columns=[var+str(j)] frame=[result,VAR] result=pd.concat(frame,axis=1) result=result.fillna(0)