- 积分
- 64
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2014-8-15
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2015-3-10 09:08:25
|
显示全部楼层
谢谢王老师,昨天用王老师MeteoInfo软件将fnl的grib数据转换成arl数据,脚本见附件。生成了120101和120102两天的数据。用TrajStat计算轨迹,同样出现了上次的状况,文本内容都是空白。请问王老师哪里出现了问题。谢谢!
脚本:
#--------------------------------------------------------
# Author: Yaqiang Wang
# Date: 2014-10-24
# Purpose: Convert GRIB data to ARL data
# Note: Sample
#-----------------------------------------------------------
from org.meteoinfo.data.meteodata import MeteoDataInfo
from org.meteoinfo.data.meteodata.arl import ARLDataInfo
from org.meteoinfo.data.meteodata.arl import DataLabel
import os
#---- Set directories
dataDir = "G:/CO2/MeteoInfo_Java_1.2R3_Files/fnl"
#---- Set output data file
outFile = os.path.join(dataDir, 'arl\\fnl12010200.arl')
#---- Read a GRIB data file
mydata = MeteoDataInfo()
infile = os.path.join(dataDir, 'grib\\fnl_120102_00_00')
print infile
mydata.openNetCDFData(infile)
print 'GRIB file has been opened...'
#---- Set output ARL data info
arlDI = ARLDataInfo()
#---- Set variable and level list
gvars = ['Pressure_surface','Temperature_height_above_ground',\
'u-component_of_wind_height_above_ground','v-component_of_wind_height_above_ground',\
'Geopotential_height_isobaric','Temperature_isobaric',\
'u-component_of_wind_isobaric','v-component_of_wind_isobaric','Vertical_velocity_pressure_isobaric',\
'Relative_humidity_isobaric']
avars = ['PRSS','T02M','U10M','V10M','HGTS','TEMP','UWND','VWND','WWND','RELH']
#levels = [0,200,300,400,500,600,700,800,\
# 850,900,925,950,975,1000]
levels = [0,10,20,30,50,70,100,150,200,250,300,350,400,450,500,550,600,650,700,750,800,\
850,900,925,950,975,1000]
#levels = [0,1000,975,950,925,900,850,800,750,700,650,600,550,500,450,400,350,300,250,200,150,100,70,50,30,20,10]
for l in levels:
arlDI.levels.add(l)
if l == 0:
arlDI.LevelVarList.add(['PRSS','T02M','U10M','V10M'])
else:
arlDI.LevelVarList.add(['HGTS','TEMP','UWND','VWND','WWND','RELH'])
#---- Write ARL data file
dataInfo = mydata.getDataInfo()
arlDI.createDataFile(outFile)
arlDI.X = dataInfo.getXDimension().getValues()
arlDI.Y = dataInfo.getYDimension().getValues()
variables = dataInfo.getVariables()
tNum = dataInfo.getTimeNum()
for t in range(0, tNum):
mydata.setTimeIndex(t)
atime = dataInfo.getTimes().get(t)
aDH = arlDI.getDataHead(mydata.getProjectionInfo(), 'FNL1', 2)
arlDI.writeIndexRecord(atime, aDH)
lidx = 0
for l in arlDI.levels:
print l
for v in arlDI.LevelVarList[lidx]:
vName = gvars[avars.index(v)]
print vName
if lidx == 0:
mydata.setLevelIndex(lidx)
else:
variable = dataInfo.getVariable(vName)
nlidx = variable.getZDimension().getDimValue().indexOf(l*100.0)
mydata.setLevelIndex(nlidx)
gData = mydata.getGridData(vName)
if v == 'PRSS' or v == 'WWND':
gData = gData.div(100)
aDL = DataLabel(atime)
aDL.setLevel(lidx)
aDL.setVarName(v)
aDL.setGrid(99)
aDL.setForecast(0)
arlDI.writeGridData(aDL, gData)
lidx += 1
arlDI.closeDataFile()
print 'Finished!'
|
|