SockSTap S O C K S T A P

Python:多个tiff转csv,并按照像元合并成一个csv

首页 / 新闻资讯 / 正文

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):        # print(var)         #print(j)         VARpath='D:\\research\\5_AOD\\results\\'+var+'results\\nmf'+str(ab_num)+'\\Abundance'+str(j)+'.tif'        # print(VARpath)         VAR=tifftocsv(VARpath)         VAR.columns=[var+str(j)]         frame=[result,VAR]         result=pd.concat(frame,axis=1)         result=result.fillna(0)