爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 9289|回复: 17

露点、温度和相对湿度

[复制链接]

新浪微博达人勋

发表于 2015-1-20 10:41:23 | 显示全部楼层 |阅读模式

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

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

x
MICAPS第1类数据中有温度和露点,但没有相对湿度,需要计算获得。我不是学气象的,在网上查了一些资料,对这三者的关系有了简单的认识。在MeteoInfo类库的org.meteoinfo.data.analysis包中增加了一个MeteoMath类,希望能将气象相关算法陆续加入进去,目前实现了计算饱和水汽压(cal_Es(double tc)方法)、计算相对湿度(cal_RH(double t, double tdc)方法)、计算露点(cal_Tdc(double t, double rh)方法)。主要参考了“西风江南”提供的算法(http://bbs.06climate.com/forum.php?mod=viewthread&tid=15263&highlight=%C2%B6%B5%E3%2B%CF%E0%B6%D4%CA%AA%B6%C8),另外此网页有更简洁的算法(http://www.gorhamschaffler.com/humidity_formulas.htm),如果能有高手对这些算法进行一些讲解就更好了。和在线计算器的结果(http://go.vaisala.com/humiditycalculator/vaisala_humidity_calculator.html)进行了对比,结果很接近。需要用到最新的MeteoInfo Java 1.1.9R4版(http://www.meteothinker.com/Downloads.html)。

这是一个示例脚本:
  1. from org.meteoinfo.data.analysis import MeteoMath

  2. t = 20
  3. #dt = 10
  4. rh = 50
  5. #rh = MeteoMath.cal_RH(t, dt)
  6. dt = MeteoMath.cal_Tdc(t, rh)
  7. print 'RH: ' + str(rh)
  8. print 'Dewpoint: ' + str(dt)

Image00784.png

从MICAPS第1类数据中提取温度和露点,然后计算相对湿度的脚本:
  1. #--------------------------------------------------------        
  2. # Author: Yaqiang Wang                                          
  3. # Date: 2015-1-14                                               
  4. # Purpose: Extract station data from micaps1 data and calculate
  5. #          relative humidity from temperature and dewpoint
  6. # Note: Sample                                                   
  7. #-----------------------------------------------------------
  8. from org.meteoinfo.data.meteodata import MeteoDataInfo
  9. from org.meteoinfo.table import DataTable, DataTypes
  10. from org.meteoinfo.data.analysis import MeteoMath
  11. import os
  12. import datetime

  13. #---- Set data directories
  14. print 'Start script...'
  15. mdir = 'U:/data/micaps/2014/plot'
  16. outdir = 'D:/Temp/test'

  17. #---- Set stations
  18. stations = ['54511', '58362']

  19. #---- Set variables
  20. # Avialable variables in MICAPS 1 data:
  21. #  "Altitude", "Grade", "CloudCover", "WindDirection", "WindSpeed", "Pressure",
  22. #  "PressVar3h", "WeatherPast1", "WeatherPast2", "Precipitation6h", "LowCloudShape",
  23. #  "LowCloudAmount", "LowCloudHeight", "DewPoint", "Visibility", "WeatherNow",
  24. #  "Temperature", "MiddleCloudShape", "HighCloudShape"
  25. variables = ['Temperature','DewPoint']

  26. #---- Set start/end times
  27. stime = datetime.datetime.now()
  28. sdate = datetime.datetime(2014, 10, 1, 2)
  29. edate = datetime.datetime(2014, 10, 2, 3)
  30. #edate = datetime.datetime(2014, 12, 31, 24)

  31. #---- Extract data
  32. mdi = MeteoDataInfo()
  33. rTable = DataTable()
  34. n = 0
  35. while sdate < edate:
  36.     mfn = os.path.join(mdir, sdate.strftime('%y%m%d%H') + '.000')
  37.     if os.path.exists(mfn):
  38.         print mfn
  39.         mdi.openMICAPSData(mfn)
  40.         stdata = mdi.getStationInfoData()
  41.         t = mdi.getDataInfo().getTime(0)
  42.         result = stdata.extractStationData(stations, variables, t)
  43.         result.addColumn('RH', DataTypes.String)
  44.         for row in result.getRows():
  45.             temp = float(row.getValue('Temperature'))
  46.             dp = float(row.getValue('DewPoint'))
  47.             rh = MeteoMath.cal_RH(temp, dp)
  48.             row.setValue('RH', '%.2f'%rh)
  49.         print result.toString()
  50.         if n == 0:
  51.             rTable = result
  52.         else:
  53.             for row in result.getRows():
  54.                 rTable.appendRow(row)
  55.         n += 1

  56.     sdate = sdate + datetime.timedelta(hours=3)

  57. #---- Output result
  58. print '**********************************'
  59. #print rTable.toString()
  60. #outfn = os.path.join(outdir, 'stdata_test.csv')
  61. #rTable.saveAsCSVFile(outfn)
  62. #outfn = os.path.join(outdir, 'stdata_test.txt')
  63. #rTable.saveAsASCIIFile(outfn)

  64. print 'Run time: %s'%(datetime.datetime.now() - stime)
  65. print 'Finished!'

评分

参与人数 1金钱 +10 贡献 +5 收起 理由
二爷名声在外 + 10 + 5 很给力!

查看全部评分

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

新浪微博达人勋

 成长值: 32430
发表于 2015-1-20 10:47:03 | 显示全部楼层
王老师太给力了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-1-20 11:01:53 | 显示全部楼层
功能越来越强大了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-1-20 11:33:45 | 显示全部楼层
这个给力,我用SQL、C#和MacthCAD也写过
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-1-20 11:33:48 | 显示全部楼层
这个给力,我用SQL、C#和MacthCAD也写过
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-1-26 17:14:07 | 显示全部楼层
大神们在前面各种给力,渣渣们表示各种福利哇。。。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-1-27 00:11:05 | 显示全部楼层
先收藏一下。。以后慢慢看
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-6-17 14:41:21 | 显示全部楼层
先收藏le ...
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2015-10-21 17:43:06 | 显示全部楼层
王老师,温度和露点来求相对湿度的思路是啥啊?能否告知一下
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-10-21 20:00:27 | 显示全部楼层
梦纯 发表于 2015-10-21 17:43
王老师,温度和露点来求相对湿度的思路是啥啊?能否告知一下

记不住了,自己找相关资料看吧
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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