【问题标题】:Convert NETCDF to CSV list将 NETCDF 转换为 CSV 列表
【发布时间】:2019-12-17 18:08:38
【问题描述】:

我想将 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)

结果是我的变量的二维数组,列在纬度,行作为经度。但我希望有 LAT、LON、VAR 的三列。

【问题讨论】:

    标签: python netcdf


    【解决方案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
    # ==============================================
    

    如果没有数据,我无法保证它可以正常工作,但万一您知道如何做到这一点。

    【讨论】:

    • 谢谢,我试过用这个。这个概念很好,但是数据似乎是错误的,我的意思是 dataout 变量似乎是错误的。我在应该获取数据的位置得到 0。
    • 你能分享一些数据吗?很可能列和行已经交换了位置。
    • 嗨,这是我正在使用的数据的较小版本。这是链接:dropbox.com/s/faf7zkoqn8mljw5/…
    猜你喜欢
    • 2014-05-20
    • 1970-01-01
    • 2019-09-20
    • 1970-01-01
    • 2022-07-29
    • 2015-05-19
    • 2019-10-11
    • 2018-05-10
    • 2015-04-01
    相关资源
    最近更新 更多