气象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(rair.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, youll 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] , , zlev[0], , lat[600], , lon[i], , 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] , , zlev[0], , lat[600], , lon[i], , 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(rsst.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=:
)
# 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)
