请选择 进入手机版 | 继续访问电脑版
爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 4111|回复: 10

meteoinfolab能一次读多个文件吗

[复制链接]

新浪微博达人勋

发表于 2019-7-15 10:46:29 | 显示全部楼层 |阅读模式

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

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

x
我下了一天的MOD04-3k数据,大概有十几个,想问下怎么一起读呢?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2019-7-15 11:28:20 | 显示全部楼层
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-7-15 13:38:09 | 显示全部楼层
王老师,我按照您的方法,报下面错误:
Traceback (most recent call last):
  File "<iostream>", line 17, in <module>
  File "/Users/wangyudong/Downloads/MeteoInfo/pylib/mipylib/dataset/midata.py", line 76, in addfiles
    return DimDataFiles(dfs)
  File "/Users/wangyudong/Downloads/MeteoInfo/pylib/mipylib/dataset/dimdatafile.py", line 604, in __init__
    ftimes.append(ds.gettime(0))
  File "/Users/wangyudong/Downloads/MeteoInfo/pylib/mipylib/dataset/dimdatafile.py", line 246, in gettime
    t = self.dataset.getDataInfo().getTimes().get(idx)     
        at org.meteoinfo.data.meteodata.DataInfo.getTimes(DataInfo.java:154)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
java.lang.NullPointerException: java.lang.NullPointerException
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-7-15 13:41:00 | 显示全部楼层
好像是取时间出现问题,我的一部分代码:
meteoDir='/Users/wangyudong/waming/data/modis/0627/'
fn1 =os.path.join(meteoDir, 'MOD04_3K.A2019178.0505.061.2019182201806.hdf')
fn2=os.path.join(meteoDir, 'MOD04_3K.A2019178.0145.061.2019178131128.hdf')
fn3=os.path.join(meteoDir,'MOD04_3K.A2019178.0150.061.2019178131117.hdf')
fn4=os.path.join(meteoDir,'MOD04_3K.A2019178.0155.061.2019182200406.hdf')
fn5=os.path.join(meteoDir,'MOD04_3K.A2019178.0320.061.2019182201614.hdf')
fn6=os.path.join(meteoDir,'MOD04_3K.A2019178.0325.061.2019182201554.hdf')

fns=[]
fns.append(fn1)
fns.append(fn2)
fns.append(fn3)
fns.append(fn4)
fns.append(fn5)
fns.append(fn6)

f = addfiles(fns)
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-7-15 14:06:19 | 显示全部楼层
wydyyh 发表于 2019-7-15 13:41
好像是取时间出现问题,我的一部分代码:
meteoDir='/Users/wangyudong/waming/data/modis/0627/'
fn1 =o ...

估计你的数据没有时间维,不适合用addfiles函数。可以考虑用循环来读多个文件。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-7-15 15:28:16 | 显示全部楼层
王老师,我用循环可以读了。现在问题是我的文件有十多个(以后可能会更多),要是这样列出来 也很麻烦,有没有高级点的方法?
附上我的代码

meteoDir='/Users/wangyudong/waming/data/modis/0627/'
fn1 =os.path.join(meteoDir, 'MOD04_3K.A2019178.0505.061.2019182201806.hdf')
fn2=os.path.join(meteoDir, 'MOD04_3K.A2019178.0145.061.2019178131128.hdf')
fn3=os.path.join(meteoDir,'MOD04_3K.A2019178.0150.061.2019178131117.hdf')
fn4=os.path.join(meteoDir,'MOD04_3K.A2019178.0155.061.2019182200406.hdf')
fn5=os.path.join(meteoDir,'MOD04_3K.A2019178.0320.061.2019182201614.hdf')
fn6=os.path.join(meteoDir,'MOD04_3K.A2019178.0325.061.2019182201554.hdf')

fns=[]
fns.append(fn1)
fns.append(fn2)
fns.append(fn3)
fns.append(fn4)
fns.append(fn5)
fns.append(fn6)

#Plot
axesm()
geoshow('cn_province')
#geoshow('country', edgecolor='k')
levs = arange(0, 2, 0.1)

for i in range(0,len(fns)):
    f = addfile(fns[i])
    lon = f['Longitude'][:,:]
    lat = f['Latitude'][:,:]
    aod = f['Optical_Depth_Land_And_Ocean'][:,:]
    aod[aod<0] = nan
    layer = pcolorm(lon, lat, aod, levs)
    colorbar(layer, orientation='horizontal', aspect=40)
    title('AOD')
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-7-15 16:20:39 | 显示全部楼层
本帖最后由 wydyyh 于 2019-7-15 16:29 编辑

已经按照王老师说的增大内存到5G,但是文件一多,还是报溢出
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-7-15 16:21:20 | 显示全部楼层
wydyyh 发表于 2019-7-15 15:28
王老师,我用循环可以读了。现在问题是我的文件有十多个(以后可能会更多),要是这样列出来 也很麻烦,有 ...

Python的语法,自己度娘搜搜吧。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-7-15 17:07:40 | 显示全部楼层
本帖最后由 wydyyh 于 2019-7-15 17:38 编辑

王老师,已改用python的方法读文件,现在的问题是 内存设为7G,还是报溢出,只能读6个文件:  java.lang.OutOfMemoryError: java.lang.OutOfMemoryError: GC overhead limit exceeded

设置内存的 语句:
@echo off
Rem cd "%~dp0"
if "%1" == "" (
  java -Xmx7G -Xms128m -splash:"%~dp0\splash_mil.png" -jar "%~dp0\MeteoInfoLab.jar") else (
  java -Xmx7G -Xms128m -jar "%~dp0\MeteoInfoLab.jar" %*)



代码如下
meteoDir = '/Users/wangyudong/waming/data/modis/0627/'
os.chdir(meteoDir)
file_chdir = os.getcwd()
fns = []
for root, dirs, files in os.walk(file_chdir):
    for file in files:
              if os.path.splitext(file)[1] == '.hdf':
                        fns.append(os.path.join(meteoDir,file))
                        
#Plot
axesm()
geoshow('cn_province')
#geoshow('country', edgecolor='k')
levs = arange(0, 2, 0.1)

for i in range(0,len(fns)):
    f = addfile(fns)
    lon = f['Longitude'][:,:]
    lat = f['Latitude'][:,:]
    aod = f['Optical_Depth_Land_And_Ocean'][:,:]
    aod[aod<0] = nan
    layer = pcolorm(lon, lat, aod, levs)
    colorbar(layer, orientation='horizontal', aspect=40)
    title('AOD')




密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-7-15 20:41:35 | 显示全部楼层
wydyyh 发表于 2019-7-15 17:07
王老师,已改用python的方法读文件,现在的问题是 内存设为7G,还是报溢出,只能读6个文件:  java.lang.Ou ...

你的目的是要做什么?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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