将NETCDF转换为CSV列表

时间:2019-08-10 05:25:25

标签: python netcdf

我想将NetCDF文件转换为CSV格式。我曾尝试在论坛上寻求帮助,但无法获得所需的信息。我有三个变量,一维纬度数组,一维经度数组和二维变量数组。是否可以获取包含LAT,LON,VAR等列的CSV格式文件?

我尝试使用pandas Dataframe。

    from netCDF import Dataset
    data = Dataset('popd.nc')

    latd=data.variables['latitude']
    longd=data.variables['longitude']
    popd = data.variables['PopD'][3] # 2D array

    popd2015 = pd.DataFrame(popd,index=latd,columns=longd)
    popd2015.to_csv('popd2015.csv',index=True,header=True)

结果是我的变量的2d数组,其中列位于纬度,行作为经度。但是我希望可以看到类似LAT,LON,VAR的三列。

1 个答案:

答案 0 :(得分:1)

您可以从以下位置找到一种解决方案:

How to match netCDF variables' values in an array in MATLAB

但这是其中的一部分:

# =============================================
def ncread(filename,varname):
    ncin=Dataset(filename);
    vardata = ncin.variables[varname][:];
    ncin.close()
    return vardata
# ---------------------------------------------
# Convert to text:
filein = 'popd.nc'
lonin=ncread(filein,'longitude'); # read longitude
latin=ncread(filein,'latitude'); # read latitude
popin=ncread(filein,'PoPD'); # read data
# ---------------------------------------------
latm,lonm = np.meshgrid(latin,lonin); 
# ---------------------------------------------
dataout=np.concatenate((lonm.flatten()[:,np.newaxis],latm.flatten()[:,np.newaxis],popin.flatten()[:,np.newaxis]),axis=1) # make one matrice from all the data
np.savetxt('test.txt',dataout); # save data
# ==============================================

没有数据,我不能保证它能正常工作,但万一您应该知道如何做到这一点。