气象nc文件转为csv格式

#需要安装netCDF4安装包
from netCDF4 import Dataset
import numpy as np
import os
from pandas import Series
import netCDF4 
import csv


#navigating to folder location. You may have to change this.
#base_dir = os.path.abspath(os.path.dirname())

#for file in os.listdir(base_dir):
 #   if file.endswith("sst.mnmean.nc"):
        #dataset = netCDF4.Dataset(base_dir+"/"+file)
dataset = Dataset(r'air.mon.mean.nc',mode='r',format="NETCDF4")
#提供所知道的nc文件变量,必须得先知道变量名称
lat = dataset.variables['lat'][:]
lon = dataset.variables['lon'][:]
time = dataset.variables['time']
#time_bnds = dataset.variables['time_bnds']
air = dataset.variables['air']
       
#原例子        
#
#         Ice data
#         If you print the variable ice, you'll find: 
#           int16 ice(time, zlev, lat, lon)
#           ...
#           current shape = (1, 1, 720, 1440)
#         Thus, we insert time[0], zlev[0], lat[i] and lon[j] into our csv with the corresponding labels
#with open('ice_data.csv', mode='w') as ice_file:
#            ice_writer = csv.writer(ice_file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
#            ice_writer.writerow(['time', 'zlev', 'lat', 'lon', 'ice'])
#
#            for i in range(0,720):
#                print("row " , i+1, " of 720")
#                for j in range(0,1440):
#                    # print(time_var[0] , '\t', zlev[0], '\t', lat[600], '\t', lon[i],'\t', ice[0,0,600,i] )
#                    ice_writer.writerow([time_var[0], zlev[0], lat[i], lon[j], ice[0,0,i,j]])
#            ice_writer.close()



with open('air.csv', mode='w') as ice_file:
    ice_writer = csv.writer(ice_file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
    ice_writer.writerow(['time', 'lat', 'lon', 'surface'])
#输入经纬度的维数
    for i in range(0,360):
        print("row " , i+1, " of 360")
        for j in range(0,720):
                    # print(time_var[0] , '\t', zlev[0], '\t', lat[600], '\t', lon[i],'\t', ice[0,0,600,i] )
                ice_writer.writerow([time[859],lat[i], lon[j], air[859,i,j]])
#    ice_writer.close()


#转换csv格式之前需要编写以下代码获取nc文件的信息
#dst=Dataset(r'sst.mnmean.nc',mode='r',format="NETCDF4")
#for attr in dst.ncattrs():
#得到.nc文件的信息
#    print('%s: %s' % (attr,dst.getncattr(attr)))
#获取nc文件的变量,也就是表头的变量,如经纬度、温度等
#for var in dst.variables:
#   print(var,end=':\n')
#   for attr in dst[var].ncattrs():
#       print('%s: %s' % (attr,dst[var].getncattr(attr)))
#   print()
#获取变量的长度,用于读取这些变量     
#dims=['lat','lon','time','air']  
#for dim in dims:
#   print('%s:%s' %(dim,dst.dimensions[dim].size))

1.最后附上用panoply的下载链接,这是一个简便的可视化nc文件,好像得下载java才能用(https://www.giss.nasa.gov/tools/panoply/download/)
2.这个是下载气象数据的网站,包含温度、降雨等(https://www.esrl.noaa.gov/psd/data/gridded/data.ghcncams.html)

  • 9
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值