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

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
楼主: MeteoInfo

可以计算一整年Trajectory的脚本

[复制链接]

新浪微博达人勋

 楼主| 发表于 2016-7-18 00:20:30 | 显示全部楼层
dtlyr 发表于 2016-7-17 21:34
如果中途要终止程序应该如何操作?
计算一年大概需要多久?运行了20多分钟都没有结果呢?
感觉code对于 ...

你可以先试试只算一个月的,然后再依次增加
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-7-18 09:38:54 | 显示全部楼层
MeteoInfo 发表于 2016-7-18 00:20
你可以先试试只算一个月的,然后再依次增加

好的,已成功。谢谢王老师。
还是想知道为什么软件没有停止程序的按钮?或者快捷键是什么?
另外求问在PSCF分析的时候,是否要考虑时差的问题?
比如北京时间8:00am对应UTC 0:00am,那将数据add to trajectory 之间是否需要先把时间转成UTC time?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-7-18 10:32:03 | 显示全部楼层
dtlyr 发表于 2016-7-18 09:38
好的,已成功。谢谢王老师。
还是想知道为什么软件没有停止程序的按钮?或者快捷键是什么?
另外求问在 ...

需要停止的时候关闭软件就可以了。

添加观测数据的时候需要考虑时差,add to trajectory界面里已经有相关设置了。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-7-18 11:08:50 | 显示全部楼层
MeteoInfo 发表于 2016-7-18 10:32
需要停止的时候关闭软件就可以了。

添加观测数据的时候需要考虑时差,add to trajectory界面里已经有 ...

好的,感谢王老师的耐心解答
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 0
发表于 2016-7-21 09:54:24 | 显示全部楼层
好东西!学习了!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-8-2 08:31:43 | 显示全部楼层
多谢分享。。。
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2020-2-3 13:13:52 | 显示全部楼层
王老师新年好,@MeteoInfo  请问一下,为什么在使用这段代码的时候,只计算1月的tgs,并且计算出来的都是106字节的空文件。麻烦王老师指导一下。
结果如下:
  1. >>> run script...
  2. Set paramters...
  3. Trajectory calculation...
  4. Month: 1
  5. Convert trajectory endpoint files to tgs files...
  6. Join tgs files...
  7. Convert tgs file to shape file...
  8. Traceback (most recent call last):
  9.   File "C:\Users\1988y\Desktop\codes\one_year_trajectories.py", line 108, in <module>
  10.     TrajUtil.convertToShapeFile(tgsfn, shpfn)
  11.         at trajstat.trajectory.TrajUtil.convertToShapeFile(TrajUtil.java:423)

  12.         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

  13.         at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

  14.         at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

  15.         at java.lang.reflect.Method.invoke(Unknown Source)

  16. java.lang.NoClassDefFoundError: java.lang.NoClassDefFoundError: org/meteoinfo/data/DataTypes
复制代码
代码如下:
  1. #-----------------------------------------------------
  2. # Author: Yaqiang Wang
  3. # Date: 2014-7-11
  4. # Purpose: Run TrajStat - calculate trajectories
  5. # Note: Sample
  6. #-----------------------------------------------------
  7. import sys
  8. sys.path.append('D:/meteoinfo/MeteoInfo_1.4.7R10/MeteoInfo/plugins/TrajStat_Plugin_1.4.4R8/TrajStat/TrajStat.jar')
  9. import os
  10. import time
  11. from datetime import datetime
  12. from datetime import timedelta
  13. from calendar import monthrange
  14. from trajstat.trajectory import TrajUtil
  15. from trajstat.trajectory import TrajConfig

  16. # Set working directory
  17. metDir = 'D:/gdas1/201420152016'
  18. outDir = 'D:/try'

  19. # Get month abstract string
  20. def getmonthstr(m):  
  21.   mmm = 'jan'
  22.   if m == 1:
  23.     mmm = 'jan'
  24.   elif m == 2:
  25.     mmm = 'feb'
  26.   elif m == 3:
  27.     mmm = 'mar'
  28.   elif m == 4:
  29.     mmm = 'apr'
  30.   elif m == 5:
  31.     mmm = 'may'
  32.   elif m == 6:
  33.     mmm = 'jun'
  34.   elif m == 7:
  35.     mmm = 'jul'
  36.   elif m == 8:
  37.     mmm = 'aug'
  38.   elif m == 9:
  39.     mmm = 'sep'
  40.   elif m == 10:
  41.     mmm = 'oct'
  42.   elif m == 11:
  43.     mmm = 'nov'
  44.   elif m == 12:
  45.     mmm = 'dec'

  46.   return mmm

  47. # Get GDAS1 meteorological data files by time
  48. def getmeteofiles(y, m):
  49.   ystr = str(y)[2:]
  50.   mmm = getmonthstr(m)
  51.   fns = []
  52.   # The meteo files of this month
  53.   cdir = os.path.join(metDir, str(y))
  54.   for i in range(1,6):
  55.     fn = os.path.join(cdir, 'gdas1.' + mmm + ystr + '.w' + str(i))
  56.     if os.path.exists(fn):
  57.       fns.append(fn)

  58.   # The last two meteo files of last month  
  59.   m = m - 1
  60.   if m == 0:
  61.     m = 12
  62.     y = y - 1
  63.     ystr = str(y)[2:]
  64.     cdir = os.path.join(metDir, str(y))
  65.   mmm = getmonthstr(m)
  66.   fn = os.path.join(cdir, 'gdas1.' + mmm + ystr + '.w4')
  67.   fns.append(fn)
  68.   fn = os.path.join(cdir, 'gdas1.' + mmm + ystr + '.w5')
  69.   if not os.path.exists(fn):
  70.     fn = os.path.join(cdir, 'gdas1.' + mmm + ystr + '.w3')
  71.   fns.append(fn)

  72.   return fns

  73. # Set parameters
  74. print 'Set paramters...'
  75. year = 2015
  76. tc = TrajConfig()
  77. tc.setStartDay(1)
  78. tc.setStartHours('00')
  79. tc.setLocation('28 100 500.00')
  80. tc.setRunHours(-24)
  81. tc.setTopOfModel(10000.0)
  82. tc.setVertical(0)
  83. tc.setOutPath(outDir)

  84. # Loop - one year calculation
  85. print 'Trajectory calculation...'
  86. for month in range(1, 13):
  87.   print 'Month: ' + str(month)  
  88.   eday = monthrange(year, month)[1]
  89.   tc.setEndDay(eday)
  90.   tc.initStartTime(year, month)
  91.   fns = getmeteofiles(year, month)
  92.   tc.setMeteoFiles(fns)
  93.   TrajUtil.trajCal(tc)
  94.   print 'Convert trajectory endpoint files to tgs files...'
  95.   TrajUtil.trajToTGS(tc)
  96.   print 'Join tgs files...'
  97.   tgsfn = TrajUtil.joinTGSFiles(tc)
  98.   print 'Convert tgs file to shape file...'
  99.   shpfn = tgsfn.replace('.tgs','.shp')
  100.   TrajUtil.convertToShapeFile(tgsfn, shpfn)
  101.   print 'Remove trajectory files...'
  102.   TrajUtil.removeTrajFiles(tc)

  103. print 'Finish !'
复制代码




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

使用道具 举报

新浪微博达人勋

发表于 2020-2-11 22:04:05 | 显示全部楼层
yinxiufeng 发表于 2020-2-3 13:13
王老师新年好,@MeteoInfo  请问一下,为什么在使用这段代码的时候,只计算1月的tgs,并且计算出来的都是10 ...

已解决,参考这里的代码
http://meteothink.org/examples/m ... ctory/traj_cal.html
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-2-13 11:34:34 | 显示全部楼层
yinxiufeng 发表于 2020-2-11 22:04
已解决,参考这里的代码
http://meteothink.org/examples/meteoinfolab/trajectory/traj_cal.html

老师您好,我遇到同样的问题,并且困扰了一段时间。请问您是怎么解决的,能否把你的代码发一下,谢谢啦
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2022-3-1 10:42:16 | 显示全部楼层
本帖最后由 xiaoxiangzi94 于 2022-3-1 10:44 编辑

王老师您好@MeteoInfo,使用MeteoInfo_3.3.0自带的Trajstat,运行以下三行代码后报错,能麻烦您指导一下吗?
import sys
sys.path.append('E:/MeteoInfo_3.3.0/MeteoInfo/plugins/TrajStat/TrajStat.jar')
from trajstat.trajectory import TrajUtil

报错内容:Traceback (most recent call last):
  File "<string>", line 3, in <module>
ImportError: No module named trajstat
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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