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

2023年6月27日09:05:58

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)



  • 作者:菜鸡的自我拯救
  • 原文链接:https://blog.csdn.net/weixin_37659245/article/details/120030235
    更新时间:2023年6月27日09:05:58 ,共 1340 字。