爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 10899|回复: 9

[求助] 求助读取nc文件

[复制链接]

新浪微博达人勋

发表于 2019-1-20 06:27:49 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
如题,小白,求问下,我有merra2的一些数据,都是nc的,要可视化,自己在学习,在读取文件的时候浏览了论坛里无数贴子,还是找不到答案。
下面是我读取我的一个nc文件的代码,但是读不出来,我想请教下到底是哪里出了问题
import netCDF4 as nc
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
import numpy as np
obj=nc.Dataset('f:\\MERRA2_400.inst3_3d_asm_Np.20120101.SUB.nc')
print(obj.variables.keys())昨天时候本来在网上找到一段代码读取的,但是不小心给删除了,怎么都找不到了,我把读出来的内容放到这里来,大能们看看我读出来的东西就明白我想干嘛了。是个TXT文件。然后我再上传一个merra2的nc文件,如果有好心人的能教下怎么读并且可视化的话感激不尽


数据分析结果.txt

2.64 KB, 下载次数: 0, 下载积分: 金钱 -5

nc文件读取结果

MERRA2_400.inst3_3d_asm_Np.20120101.SUB.nc

331 Bytes, 下载次数: 4, 下载积分: 金钱 -5

nc文件

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2019-1-20 20:03:03 | 显示全部楼层

回帖奖励 +1 金钱

obj=nc.Dataset('f:\\MERRA2_400.inst3_3d_asm_Np.20120101.SUB.nc')
这句其实就相当于打开文件了,文件的信息全部存储在obj这个变量中了
这时候用
a=obj.variables[ ‘文件中的变量名’ ]
就可以将文件中该变量的数据提取出来

你2楼给的文件信息其实是print(obj)显示的
variables(dimensions): float32 O3(time,lev,lat,lon), float64 lat(lat), float64 lev(lev), float64 lon(lon), float64 time(time)
一般变量的信息都是在最后一行,以【类型】 变量名(维1,维2,维3)
可以看到,你这个nc文件中存储的有4个变量,分别是
float32 O3(time,lev,lat,lon)
【变量: O3,32位浮点型存储,有4维:时间,层次,纬度,经度】
float64 lat(lat)
【纬度lat,64位浮点型存储,1维数组】
float64 lon(lon)
【经度lon,64位浮点型存储,1维数组】
float64 lev(lev)
【层次lev,64位浮点型存储,1维数组】
float64 time(time)
【时间time,64位浮点型存储,1维数组】

比如你现在要把臭氧O3的数组提取出来
直接可以
ooo=obj.variables[ ‘O3’ ][:,:,:,:]
后边4个冒号表示这个变量4个纬度全部提取,此时ooo是一个4维数组

同时也可以利用切片的办法进行提取
ooo=obj.variables[ ‘O3’ ][0,1,:,:]
此时ooo是一个2维数组,第1维是纬度,第2维是经度
变量存储的是O3变量第1个时次、第2层上的2D数组
密码修改失败请联系微信:mofangbao
回复 支持 2 反对 0

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-1-20 06:30:14 | 显示全部楼层
为什么数据上传了下载还要金钱。。。我只是想找人帮忙看看啊。。。粘贴到这里吧
F:\python\program\python.exe F:/python/project/mode_test_open_file.py
<class 'netCDF4._netCDF4.Dataset'>
root group (NETCDF4 data model, file format HDF5):
    CDI: Climate Data Interface version 1.6.9 (http://mpimet.mpg.de/cdi)
    history: Mon Oct 08 17:51:31 2018: cdo -s -L -f nc4 -remapbil,/tmpdata/regridder/services_14184/tmp.grid -select,name=O3,levidx=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42 /ftp/data/s4pa/MERRA2/M2I3NPASM.5.12.4/2012/01/MERRA2_400.inst3_3d_asm_Np.20120101.nc4 /tmpdata/regridder/services_14184/MERRA2_400.inst3_3d_asm_Np.20120101.SUB.nc4
    Conventions: CF-1
    History: Original file generated: Sun Jul 20 02:24:50 2014 GMT
    Comment: GMAO filename: d5124_m2_jan10.inst3_3d_asm_Np.20120101.nc4
    Filename: MERRA2_400.inst3_3d_asm_Np.20120101.nc4
    Institution: NASA Global Modeling and Assimilation Office
    References: http://gmao.gsfc.nasa.gov
    Format: NetCDF-4/HDF-5
    SpatialCoverage: global
    VersionID: 5.12.4
    TemporalRange: 1980-01-01 -> 2016-12-31
    identifier_product_doi_authority: http://dx.doi.org/
    ShortName: M2I3NPASM
    GranuleID: MERRA2_400.inst3_3d_asm_Np.20120101.nc4
    ProductionDateTime: Original file generated: Sun Jul 20 02:24:50 2014 GMT
    LongName: MERRA2 inst3_3d_asm_Np: 3d,3-Hourly,Instantaneous,Pressure-Level,Assimilation,Assimilated Meteorological Fields
    Title: MERRA2 inst3_3d_asm_Np: 3d,3-Hourly,Instantaneous,Pressure-Level,Assimilation,Assimilated Meteorological Fields
    SouthernmostLatitude: -90.0
    NorthernmostLatitude: 90.0
    WesternmostLongitude: -180.0
    EasternmostLongitude: 179.375
    LatitudeResolution: 0.5
    LongitudeResolution: 0.625
    DataResolution: 0.5 x 0.625 (42 pressure levels)
    Contact: http://gmao.gsfc.nasa.gov
    identifier_product_doi: 10.5067/QBZ6MG944HW0
    RangeBeginningDate: 2012-01-01
    RangeBeginningTime: 00:00:00.000000
    RangeEndingDate: 2012-01-01
    RangeEndingTime: 21:00:00.000000
    CDO: Climate Data Operators version 1.6.9 (http://mpimet.mpg.de/cdo)
    dimensions(sizes): time(8), lev(42), lat(144), lon(288)
    variables(dimensions): float32 O3(time,lev,lat,lon), float64 lat(lat), float64 lev(lev), float64 lon(lon), float64 time(time)
    groups:

---------------------------------------
odict_keys(['O3', 'lat', 'lev', 'lon', 'time'])
O3
lat纬度
lev高度
lon经度
time
---------------------------------------
Traceback (most recent call last):
  File "F:/python/project/mode_test_open_file.py", line 16, in <module>
    print(nc_obj.variables['LAT'])
KeyError: 'LAT'

Process finished with exit code 1
这就是我说的那个nc文件我之前读取完以后获得的信息。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2019-1-20 12:39:23 | 显示全部楼层

回帖奖励 +1 金钱

好心人都饿死了。。。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2019-1-21 16:52:49 | 显示全部楼层

回帖奖励 +1 金钱

不清楚楼主提的是神马问题
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2019-1-22 05:54:15 | 显示全部楼层

回帖奖励 +1 金钱

三楼是对的
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2019-1-22 16:06:26 | 显示全部楼层

回帖奖励 +1 金钱

三楼是对的~
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2019-1-24 22:46:16 | 显示全部楼层
三楼是对的~~
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2019-1-27 16:18:03 | 显示全部楼层
Masterpiece 发表于 2019-1-20 20:03
obj=nc.Dataset('f:\\MERRA2_400.inst3_3d_asm_Np.20120101.SUB.nc')
这句其实就相当于打开文件了,文件的 ...

非常感谢解答。谢谢你
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2019-1-27 16:18:08 | 显示全部楼层
Masterpiece 发表于 2019-1-20 20:03
obj=nc.Dataset('f:\\MERRA2_400.inst3_3d_asm_Np.20120101.SUB.nc')
这句其实就相当于打开文件了,文件的 ...

非常感谢解答。谢谢你
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表