在处理nc文件时,可以使用多种编程语言进行操作。最近我尝试使用python来读取nc文件,经过一番努力和资料查询,终于成功了。
-
安装Anaconda
1)首先,需要下载并安装Anaconda。你可以搜索“Anaconda”,然后进入其官方网站下载。我的电脑上安装的是Python 3.7版本,因此选择了对应的Anaconda版本。

2)双击下载的Anaconda3-5.3.0-Windows-x86_64.exe文件进行安装。安装过程中,记得在“Advanced Options”选项中勾选“Register Anaconda as my default Python 3.7”,然后点击“Finish”完成安装。
立即学习“Python免费学习笔记(深入)”;
3)安装完成后,按下Windows徽标键,在所有程序中找到Anaconda3,点击Anaconda Navigator进行启动。首次启动时会进行初始化,完成后界面如下所示。由于我们需要使用Spyder编写Python代码来读取nc文件,因此需要安装Spyder。如果已经安装,界面上的按钮会显示为“Launch”;如果未安装,则显示“Install”,点击后即可安装。


-
安装所需模块
1)在安装模块之前,需要更换Anaconda的镜像源。
-
通过conda config命令生成配置文件。首先进入cmd命令行,输入以下命令:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
-
然后输入:
conda config --set show_channel_urls yes
-
在C:\Users目录下会生成配置文件.condarc,内容如下:

-
修改上述配置文件,删除第三行并保存,最终版本如下:

-
通过命令
conda info
查看当前配置信息,确认修改是否生效,关注channel URLs字段内容:
-
conda install scrapy

2)完成上述更改后,可以开始安装所需模块。首先在Anaconda Prompt中输入命令进行更新:
conda update --all
然后安装读取nc文件所需的netCDF4模块:
conda install netCDF4
这样就完成了netCDF4模块的安装。
-
以下是用于读取nc数据的Python代码:
# -*- coding: utf-8 -*- """Spyder Editor This is a temporary script file.""" import netCDF4 from netCDF4 import Datasetnc_obj = Dataset('e:\P_CLDAS_RE01_EA16_PRE_HOUR_2015010101.nc')
查看nc文件内容
print(nc_obj) print('---------------------------------------')
查看nc文件中的变量
print(nc_obj.variables.keys()) for i in nc_obj.variables.keys(): print(i) print('---------------------------------------')
查看每个变量的信息
print(nc_obj.variables['LAT']) print(nc_obj.variables['LON']) print(nc_obj.variables['PRCP']) print('---------------------------------------')
查看每个变量的属性
print(nc_obj.variables['LAT'].ncattrs()) print(nc_obj.variables['LON'].ncattrs()) print(nc_obj.variables['PRCP'].ncattrs()) print(nc_obj.variables['LAT'].units) print(nc_obj.variables['LON'].units) print(nc_obj.variables['PRCP']._FillValue) print('---------------------------------------')
读取数据值
lat = nc_obj.variables['LAT'][:] lon = nc_obj.variables['LON'][:] prcp = nc_obj.variables['PRCP'][:]
print(lat) print(lon) print('---------------**-------------------') print(prcp)











