爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: jinm92

[程序设计] 读取nc文件提示内存不足

[复制链接]
 楼主| 发表于 2015-7-14 20:56:41 | 显示全部楼层
MeteoInfo 发表于 2015-7-14 20:36
你给出的信息有限,你看看其它数据变量的经度维和纬度维是什么,分别是多大?也许可以reshape LatData和L ...

所有相关的变量都是n×1的,用reshape不行,因为我需要转换成一个720×1440的数组,值不够
密码修改失败请联系微信:mofangbao
发表于 2015-7-14 21:08:52 | 显示全部楼层
jinm92 发表于 2015-7-14 20:56
所有相关的变量都是n×1的,用reshape不行,因为我需要转换成一个720×1440的数组,值不够

你把数据文件贴出来看看
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2015-7-14 21:15:52 | 显示全部楼层
MeteoInfo 发表于 2015-7-14 21:08
你把数据文件贴出来看看

示例数据http://pan.baidu.com/s/1hqfEB4o
密码修改失败请联系微信:mofangbao
发表于 2015-7-14 21:30:19 | 显示全部楼层
想办法分段读吧,直接读太大
密码修改失败请联系微信:mofangbao
发表于 2015-7-14 23:02:34 | 显示全部楼层
本帖最后由 MeteoInfo 于 2015-7-14 23:04 编辑

用MeteoInfoLab试了试,可以看出数据都分布在陆地上,这种数据没办法形成mesh(需要数据的位置聚集在一起),估计因此数据写成类似一维的结构。可以直接绘制散点图,不过点太多显示会很慢,显示效果也不好。因此考虑将散点数据格点化(插值形成矩形网格),脚本里用了最快速的插值方法“nearest”,每个格点如果有散点则格点值是该格点中所有散点的平均值,否则格点值赋为缺测值(NaN)。此外还有IDW等插值方法,但这么多点插值起来会很慢。

再次强调一下,下面是MeteoInfoLab的代码,不过我想MatLab处理起来也可以参考此思路。


脚本代码:
  1. f = addfile('D:/Temp/nc/GT_SSD-L2-SSM_I_LST_2-20030101_051200-CEST-0.25X0.25-V1.0.nc')
  2. lon = f['lon'][:,:]
  3. lat = f['lat'][:,:]
  4. lst = f['LST'][:,:]
  5. #Interpolate to grid data
  6. lon_g = arange(0, 360, 1)
  7. lat_g = arange(-90, 90, 1)
  8. glst, lon_g, lat_g = griddata((lon, lat), lst, xi=(lon_g,lat_g), method='neareast')
  9. #Plot
  10. axesm()
  11. mlayer = shaperead('D:/Temp/map/country1.shp')
  12. geoshow(mlayer)
  13. #layer = scatterm(lon, lat, lst, edge=False)
  14. levs = arange(240, 300, 5)
  15. layer = imshowm(lon_g, lat_g, glst, levs)
  16. colorbar(layer)
  17. title('Land Surface Temperature')
  18. axism([-180, 180, -90, 90])


Image00157.png


密码修改失败请联系微信:mofangbao
发表于 2015-7-14 23:26:30 | 显示全部楼层
最好的办法是分开读,读出来再拼起来
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2015-7-15 10:21:34 | 显示全部楼层
MeteoInfo 发表于 2015-7-14 23:02
用MeteoInfoLab试了试,可以看出数据都分布在陆地上,这种数据没办法形成mesh(需要数据的位置聚集在一起 ...

谢谢,我尝试一下
密码修改失败请联系微信:mofangbao
发表于 2015-7-15 17:04:40 | 显示全部楼层
只能分片读取 然后计算完后释放内存~
密码修改失败请联系微信:mofangbao
发表于 2015-7-17 15:10:49 | 显示全部楼层
分块运算
OR
服务器集群里面RUN
密码修改失败请联系微信:mofangbao
发表于 2019-5-22 19:46:17 | 显示全部楼层
yanliang21516 发表于 2015-7-14 23:26
最好的办法是分开读,读出来再拼起来

您好,冒昧的问一下前辈要怎么分开读取数据呢?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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