metdig

智能网格预报可视化诊断分析及权重推荐系统


热力诊断分析计算thermal

<p>[TOC]</p> <h1>位温计算</h1> <p>利用压强和温度计算位温,代码示例如下:</p> <pre><code class="language-python">potential_temperature(pres, tmp)</code></pre> <p>&lt;font size=&quot;4&quot;&gt;&lt;b&gt;参数说明&lt;/b&gt;&lt;/font&gt;</p> <table> <thead> <tr> <th style="text-align: left;">参数</th> <th style="text-align: left;">必选</th> <th style="text-align: left;">类型</th> <th style="text-align: left;">说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">pres</td> <td style="text-align: left;">&lt;font color=&quot;red&quot;&gt;是&lt;/font&gt;</td> <td style="text-align: left;">stda</td> <td style="text-align: left;">total atmospheric pressure</td> </tr> <tr> <td style="text-align: left;">tmp</td> <td style="text-align: left;">&lt;font color=&quot;red&quot;&gt;是&lt;/font&gt;</td> <td style="text-align: left;">stda</td> <td style="text-align: left;">air temperature</td> </tr> </tbody> </table> <table> <thead> <tr> <th style="text-align: left;">返回值</th> <th style="text-align: left;">说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">stda</td> <td style="text-align: left;">STDA标准格式的位温数据</td> </tr> </tbody> </table> <p>&lt;font size=&quot;4&quot;&gt;&lt;b&gt;调用示例&lt;/b&gt;&lt;/font&gt;</p> <pre><code class="language-python">import datetime from metdig.io.cassandra import get_model_grid from metdig.utl import utl_stda_grid from metdig.cal import thermal init_time = datetime.datetime(2020, 7, 25, 8) fhour = 0 tmp = get_model_grid(init_time=init_time, fhour=fhour, model_name=&amp;#039;ecmwf&amp;#039;, var_name=&amp;#039;tmp&amp;#039;, level=500) pres = utl_stda_grid.gridstda_full_like(tmp, 500, var_name=&amp;#039;pres&amp;#039;) thta = thermal.potential_temperature(pres, tmp) print(thta)</code></pre> <p>&lt;font size=&quot;4&quot;&gt;&lt;b&gt;输出信息&lt;/b&gt;&lt;/font&gt;</p> <pre><code class="language-python">&amp;lt;xarray.DataArray (member: 1, level: 1, time: 1, dtime: 1, lat: 451, lon: 901)&amp;gt; array([[[[[[52.90152 , 52.939606, 52.95865 , ..., 52.5968 , 52.634888, 52.615845], [53.03485 , 53.03485 , 53.03485 , ..., 52.539642, 52.57773 , 52.5968 ], [53.168182, 53.111023, 53.072937, ..., 52.5968 , 52.692017, 52.730103], ..., [40.21692 , 40.197845, 40.197845, ..., 31.20813 , 31.151001, 31.093872], [40.178802, 40.15976 , 40.15976 , ..., 30.808167, 30.789124, 30.77008 ], [40.083588, 40.10263 , 40.10263 , ..., 30.503448, 30.44629 , 30.370117]]]]]], dtype=float32) Coordinates: * member (member) int32 0 * level (level) int32 500 * time (time) datetime64[ns] 2020-07-25T08:00:00 * dtime (dtime) int32 0 * lat (lat) float64 -10.0 -9.8 -9.6 -9.4 -9.2 ... 79.4 79.6 79.8 80.0 * lon (lon) float64 0.0 0.2 0.4 0.6 0.8 ... 179.2 179.4 179.6 179.8 180.0 Attributes: var_name: thta var_cn_name: 位温 var_units: degC valid_time: 0 data_source: data_type: model_name: </code></pre> <h1>相当位温计算</h1> <p>利用压强、温度和露点温度计算相当位温,代码示例如下:</p> <pre><code class="language-python">equivalent_potential_temperature(pres, tmp, td)</code></pre> <p>&lt;font size=&quot;4&quot;&gt;&lt;b&gt;参数说明&lt;/b&gt;&lt;/font&gt;</p> <table> <thead> <tr> <th style="text-align: left;">参数</th> <th style="text-align: left;">必选</th> <th style="text-align: left;">类型</th> <th style="text-align: left;">说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">pres</td> <td style="text-align: left;">&lt;font color=&quot;red&quot;&gt;是&lt;/font&gt;</td> <td style="text-align: left;">stda</td> <td style="text-align: left;">total atmospheric pressure</td> </tr> <tr> <td style="text-align: left;">tmp</td> <td style="text-align: left;">&lt;font color=&quot;red&quot;&gt;是&lt;/font&gt;</td> <td style="text-align: left;">stda</td> <td style="text-align: left;">temperature of parcel</td> </tr> <tr> <td style="text-align: left;">td</td> <td style="text-align: left;">&lt;font color=&quot;red&quot;&gt;是&lt;/font&gt;</td> <td style="text-align: left;">stda</td> <td style="text-align: left;">dewpoint of parcel</td> </tr> </tbody> </table> <table> <thead> <tr> <th style="text-align: left;">返回值</th> <th style="text-align: left;">说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">stda</td> <td style="text-align: left;">STDA标准格式的相当位温数据</td> </tr> </tbody> </table> <p>&lt;font size=&quot;4&quot;&gt;&lt;b&gt;调用示例&lt;/b&gt;&lt;/font&gt;</p> <pre><code class="language-python">import datetime from metdig.io.cassandra import get_model_grid from metdig.utl import utl_stda_grid from metdig.cal import thermal from metdig.cal import moisture init_time = datetime.datetime(2020, 7, 25, 8) fhour = 0 tmp = get_model_grid(init_time=init_time, fhour=fhour, model_name=&amp;#039;ecmwf&amp;#039;, var_name=&amp;#039;tmp&amp;#039;, level=500) rh = get_model_grid(init_time=init_time, fhour=fhour, model_name=&amp;#039;ecmwf&amp;#039;, var_name=&amp;#039;rh&amp;#039;, level=500) pres = utl_stda_grid.gridstda_full_like(tmp, 500, var_name=&amp;#039;pres&amp;#039;) td = moisture.dewpoint_from_relative_humidity(tmp, rh) thetae = thermal.equivalent_potential_temperature(pres, tmp, td) print(thetae)</code></pre> <p>&lt;font size=&quot;4&quot;&gt;&lt;b&gt;输出信息&lt;/b&gt;&lt;/font&gt;</p> <pre><code class="language-python">&amp;lt;xarray.DataArray (member: 1, level: 1, time: 1, dtime: 1, lat: 451, lon: 901)&amp;gt; array([[[[[[326.93408, 326.97437, 326.99448, ..., 331.08023, 331.29755, 331.4378 ], [327.07486, 327.07486, 327.07486, ..., 330.33978, 330.38907, 330.58075], [327.21567, 327.15536, 327.11508, ..., 329.7424 , 329.86166, 330.0792 ], ..., [317.81677, 317.79193, 317.86267, ..., 307.48883, 307.4553 , 307.38504], [317.69632, 317.74222, 317.74222, ..., 306.92703, 306.90387, 306.91632], [317.50223, 317.52686, 317.52686, ..., 306.8708 , 306.90405, 306.9126 ]]]]]], dtype=float32) Coordinates: * member (member) int32 0 * level (level) int32 500 * time (time) datetime64[ns] 2020-07-25T08:00:00 * dtime (dtime) int32 0 * lat (lat) float64 -10.0 -9.8 -9.6 -9.4 -9.2 ... 79.4 79.6 79.8 80.0 * lon (lon) float64 0.0 0.2 0.4 0.6 0.8 ... 179.2 179.4 179.6 179.8 180.0 Attributes: var_name: thetae var_cn_name: 相当位温 var_units: K valid_time: 0 data_source: data_type: model_name: </code></pre> <h1>体感温度计算</h1> <p>利用温度、风速和水汽压计算体感温度,代码示例如下:</p> <pre><code class="language-python">apparent_temperature(tmp, wsp, p_vapor)</code></pre> <p>&lt;font size=&quot;4&quot;&gt;&lt;b&gt;参数说明&lt;/b&gt;&lt;/font&gt;</p> <table> <thead> <tr> <th style="text-align: left;">参数</th> <th style="text-align: left;">必选</th> <th style="text-align: left;">类型</th> <th style="text-align: left;">说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">tmp</td> <td style="text-align: left;">&lt;font color=&quot;red&quot;&gt;是&lt;/font&gt;</td> <td style="text-align: left;">stda</td> <td style="text-align: left;">temperature</td> </tr> <tr> <td style="text-align: left;">wsp</td> <td style="text-align: left;">&lt;font color=&quot;red&quot;&gt;是&lt;/font&gt;</td> <td style="text-align: left;">stda</td> <td style="text-align: left;">wind speed</td> </tr> <tr> <td style="text-align: left;">p_vapor</td> <td style="text-align: left;">&lt;font color=&quot;red&quot;&gt;是&lt;/font&gt;</td> <td style="text-align: left;">stda</td> <td style="text-align: left;">水汽压</td> </tr> </tbody> </table> <table> <thead> <tr> <th style="text-align: left;">返回值</th> <th style="text-align: left;">说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">stda</td> <td style="text-align: left;">STDA标准格式的体感温度数据</td> </tr> </tbody> </table> <p>&lt;font size=&quot;4&quot;&gt;&lt;b&gt;调用示例&lt;/b&gt;&lt;/font&gt;</p> <pre><code class="language-python">import datetime from metdig.io.cassandra import get_model_grid from metdig.utl import utl_stda_grid from metdig.cal import thermal from metdig.cal import moisture from metdig.cal import other init_time = datetime.datetime(2020, 7, 25, 8) fhour = 0 tmp = get_model_grid(init_time=init_time, fhour=fhour, model_name=&amp;#039;ecmwf&amp;#039;, var_name=&amp;#039;tmp&amp;#039;, level=500) rh = get_model_grid(init_time=init_time, fhour=fhour, model_name=&amp;#039;ecmwf&amp;#039;, var_name=&amp;#039;rh&amp;#039;, level=500) u = get_model_grid(init_time=init_time, fhour=fhour, model_name=&amp;#039;ecmwf&amp;#039;, var_name=&amp;#039;u&amp;#039;, level=850) v = get_model_grid(init_time=init_time, fhour=fhour, model_name=&amp;#039;ecmwf&amp;#039;, var_name=&amp;#039;v&amp;#039;, level=850) p_vapor = moisture.cal_p_vapor(tmp, rh) wsp = other.wind_speed(u, v) at = thermal.apparent_temperature(tmp, wsp, p_vapor) print(at)</code></pre> <p>&lt;font size=&quot;4&quot;&gt;&lt;b&gt;输出信息&lt;/b&gt;&lt;/font&gt;</p> <pre><code class="language-python">&amp;lt;xarray.DataArray (member: 1, level: 1, time: 1, dtime: 1, lat: 451, lon: 901)&amp;gt; array([[[[[[-10.699457, -10.787619, -10.929387, ..., -16.126759, -16.103258, -16.150576], [-10.773366, -10.919338, -11.126129, ..., -16.245356, -16.248705, -16.283503], [-10.85458 , -11.04358 , -11.243871, ..., -16.20225 , -16.238228, -16.318213], ..., [-20.131031, -20.21096 , -20.289492, ..., -28.619764, -28.68613 , -28.815514], [-19.930542, -20.036661, -20.166481, ..., -29.087196, -29.197119, -29.319246], [-20.466015, -20.504986, -20.569614, ..., -30.18594 , -30.32087 , -30.474678]]]]]], dtype=float32) Coordinates: * member (member) int32 0 * level (level) int32 500 * time (time) datetime64[ns] 2020-07-25T08:00:00 * dtime (dtime) int32 0 * lat (lat) float64 -10.0 -9.8 -9.6 -9.4 -9.2 ... 79.4 79.6 79.8 80.0 * lon (lon) float64 0.0 0.2 0.4 0.6 0.8 ... 179.2 179.4 179.6 179.8 180.0 Attributes: var_name: at var_cn_name: 体感温度 var_units: valid_time: 0 data_source: data_type: model_name: </code></pre> <h1>饱和相当位温计算</h1> <p>利用压强和温度计算饱和相当位温,代码示例如下:</p> <pre><code class="language-python">saturation_equivalent_potential_temperature(pres, tmp)</code></pre> <p>&lt;font size=&quot;4&quot;&gt;&lt;b&gt;参数说明&lt;/b&gt;&lt;/font&gt;</p> <table> <thead> <tr> <th style="text-align: left;">参数</th> <th style="text-align: left;">必选</th> <th style="text-align: left;">类型</th> <th style="text-align: left;">说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">pres</td> <td style="text-align: left;">&lt;font color=&quot;red&quot;&gt;是&lt;/font&gt;</td> <td style="text-align: left;">stda</td> <td style="text-align: left;">total atmospheric pressure</td> </tr> <tr> <td style="text-align: left;">tmp</td> <td style="text-align: left;">&lt;font color=&quot;red&quot;&gt;是&lt;/font&gt;</td> <td style="text-align: left;">stda</td> <td style="text-align: left;">air temperature</td> </tr> </tbody> </table> <table> <thead> <tr> <th style="text-align: left;">返回值</th> <th style="text-align: left;">说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">stda</td> <td style="text-align: left;">STDA标准格式的位温数据</td> </tr> </tbody> </table> <p>&lt;font size=&quot;4&quot;&gt;&lt;b&gt;调用示例&lt;/b&gt;&lt;/font&gt;</p> <pre><code class="language-python">import metdig from datetime import datetime import metdig.utl.utl_stda_grid as utl_stda_grid from metdig.cal.thermal import saturation_equivalent_potential_temperature tmp=metdig.io.get_model_grids(init_time=datetime(2022,1,7,8),fhours=[12,18],     data_source=&amp;#039;cassandra&amp;#039;,data_name=&amp;#039;ecmwf&amp;#039;,var_name=&amp;#039;tmp&amp;#039;,level=500) pressure = utl_stda_grid.gridstda_full_like_by_levels(tmp, tmp.level.values.tolist()) thetaes=saturation_equivalent_potential_temperature(pressure,tmp) print(thetaes)</code></pre> <p>&lt;font size=&quot;4&quot;&gt;&lt;b&gt;输出信息&lt;/b&gt;&lt;/font&gt;</p> <pre><code class="language-python"></code></pre> <h1>干静力能计算</h1> <p>代码示例如下:</p> <pre><code class="language-python">dry_static_energy(hgt,tmp)</code></pre> <p>&lt;font size=&quot;4&quot;&gt;&lt;b&gt;参数说明&lt;/b&gt;&lt;/font&gt;</p> <table> <thead> <tr> <th style="text-align: left;">参数</th> <th style="text-align: left;">必选</th> <th style="text-align: left;">类型</th> <th style="text-align: left;">说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">hgt</td> <td style="text-align: left;">&lt;font color=&quot;red&quot;&gt;是&lt;/font&gt;</td> <td style="text-align: left;">stda</td> <td style="text-align: left;">Atmospheric height</td> </tr> <tr> <td style="text-align: left;">tmp</td> <td style="text-align: left;">&lt;font color=&quot;red&quot;&gt;是&lt;/font&gt;</td> <td style="text-align: left;">stda</td> <td style="text-align: left;">air temperature</td> </tr> </tbody> </table> <table> <thead> <tr> <th style="text-align: left;">返回值</th> <th style="text-align: left;">说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">stda</td> <td style="text-align: left;">STDA标准格式的干静力能数据</td> </tr> </tbody> </table> <p>&lt;font size=&quot;4&quot;&gt;&lt;b&gt;调用示例&lt;/b&gt;&lt;/font&gt;</p> <pre><code class="language-python">import metdig from datetime import datetime,timedelta # 起报时间 init_time = datetime(2023,5,4,8) # 预报时效 fhours = [24] # 层次 levels = [500] hgt = metdig_io.cmadaas.get_model_3D_grids(data_name=&amp;#039;ecmwf_hr&amp;#039;,var_name=&amp;#039;hgt&amp;#039;,                                 init_time=init_time,fhours=fhours, extent = [70,140,10,60], levels=levels) tmp = metdig_io.cmadaas.get_model_3D_grids(data_name=&amp;#039;ecmwf_hr&amp;#039;,var_name=&amp;#039;tmp&amp;#039;,                                 init_time=init_time,fhours=fhours, extent = [70,140,10,60], levels=levels) dse = metdig.cal.thermal.dry_static_energy(hgt, tmp) print(dse)</code></pre> <p>&lt;font size=&quot;4&quot;&gt;&lt;b&gt;输出信息&lt;/b&gt;&lt;/font&gt;</p> <pre><code class="language-python">&amp;lt;xarray.DataArray &amp;#039;drsteg&amp;#039; (member: 1, level: 1, time: 1, dtime: 1, lat: 251, lon: 351)&amp;gt; array([[[[[[328.51773, 328.39215, 328.2352 , ..., 327.99664, 327.9604 , 327.6935 ], [328.62274, 328.51285, 328.29303, ..., 328.05457, 328.08594, 327.9506 ], [328.65414, 328.6384 , 328.42944, ..., 328.07025, 328.12323, 328.0663 ], ..., [308.3468 , 308.26242, 308.22025, ..., 302.75452, 302.93213, 303.1617 ], [308.41357, 308.33997, 308.235 , ..., 302.84872, 303.042 , 303.24017], [308.2556 , 308.3233 , 308.2968 , ..., 303.0685 , 303.24606, 303.38147]]]]]], dtype=float32) Coordinates: * level (level) int64 500 * dtime (dtime) int32 24 * time (time) datetime64[ns] 2023-05-04T08:00:00 * member (member) object &amp;#039;ecmwf_hr&amp;#039; * lat (lat) float64 10.0 10.2 10.4 10.6 10.8 ... 59.2 59.4 59.6 59.8 60.0 * lon (lon) float64 70.0 70.2 70.4 70.6 70.8 ... 139.4 139.6 139.8 140.0 Attributes: data_source: level_type: ... var_cn_name: 干静力能 var_units: kJ/kg valid_time: 0</code></pre> <h1>湿静力能计算</h1> <p>代码示例如下:</p> <pre><code class="language-python">moist_static_energy(hgt,tmp, spfh)</code></pre> <p>&lt;font size=&quot;4&quot;&gt;&lt;b&gt;参数说明&lt;/b&gt;&lt;/font&gt;</p> <table> <thead> <tr> <th style="text-align: left;">参数</th> <th style="text-align: left;">必选</th> <th style="text-align: left;">类型</th> <th style="text-align: left;">说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">hgt</td> <td style="text-align: left;">&lt;font color=&quot;red&quot;&gt;是&lt;/font&gt;</td> <td style="text-align: left;">stda</td> <td style="text-align: left;">Atmospheric height</td> </tr> <tr> <td style="text-align: left;">tmp</td> <td style="text-align: left;">&lt;font color=&quot;red&quot;&gt;是&lt;/font&gt;</td> <td style="text-align: left;">stda</td> <td style="text-align: left;">air temperature</td> </tr> <tr> <td style="text-align: left;">spfh</td> <td style="text-align: left;">&lt;font color=&quot;red&quot;&gt;是&lt;/font&gt;</td> <td style="text-align: left;">stda</td> <td style="text-align: left;">specific_humidity</td> </tr> </tbody> </table> <table> <thead> <tr> <th style="text-align: left;">返回值</th> <th style="text-align: left;">说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">stda</td> <td style="text-align: left;">STDA标准格式的湿静力能数据</td> </tr> </tbody> </table> <p>&lt;font size=&quot;4&quot;&gt;&lt;b&gt;调用示例&lt;/b&gt;&lt;/font&gt;</p> <pre><code class="language-python">import metdig from datetime import datetime,timedelta # 起报时间 init_time = datetime(2023,5,4,8) # 预报时效 fhours = [24] # 层次 levels = [500] hgt = metdig_io.cmadaas.get_model_3D_grids(data_name=&amp;#039;ecmwf_hr&amp;#039;,var_name=&amp;#039;hgt&amp;#039;,                                 init_time=init_time,fhours=fhours, extent = [70,140,10,60], levels=levels) tmp = metdig_io.cmadaas.get_model_3D_grids(data_name=&amp;#039;ecmwf_hr&amp;#039;,var_name=&amp;#039;tmp&amp;#039;,                                 init_time=init_time,fhours=fhours, extent = [70,140,10,60], levels=levels) rh = metdig_io.cmadaas.get_model_3D_grids(data_name=&amp;#039;ecmwf_hr&amp;#039;,var_name=&amp;#039;rh&amp;#039;,                                 init_time=init_time,fhours=fhours, extent = [70,140,10,60], levels=levels) td = metdig.cal.dewpoint_from_relative_humidity(tmp, rh) pres = metdig.utl.gridstda_full_like_by_levels(tmp, tmp[&amp;#039;level&amp;#039;].values) spfh = metdig.cal.specific_humidity_from_dewpoint(pres, td) mse = metdig.cal.thermal.moist_static_energy(hgt, tmp, spfh) print(mse)</code></pre> <p>&lt;font size=&quot;4&quot;&gt;&lt;b&gt;输出信息&lt;/b&gt;&lt;/font&gt;</p> <pre><code class="language-python">&amp;lt;xarray.DataArray &amp;#039;mosteg&amp;#039; (member: 1, level: 1, time: 1, dtime: 1, lat: 251, lon: 351)&amp;gt; array([[[[[[329.34653, 329.43677, 329.8569 , ..., 337.9237 , 337.7213 , 338.59152], [329.3825 , 329.41684, 329.70032, ..., 337.59686, 337.36243, 337.49734], [329.26373, 329.47495, 329.62726, ..., 337.04797, 337.28775, 336.69434], ..., [310.54642, 310.44412, 310.39304, ..., 303.0698 , 303.15903, 303.3795 ], [310.76086, 310.54858, 310.37054, ..., 303.07404, 303.25766, 303.48685], [310.8465 , 310.78748, 310.6138 , ..., 303.27127, 303.4794 , 303.6867 ]]]]]], dtype=float32) Coordinates: * level (level) int64 500 * dtime (dtime) int32 24 * time (time) datetime64[ns] 2023-05-04T08:00:00 * member (member) object &amp;#039;ecmwf_hr&amp;#039; * lat (lat) float64 10.0 10.2 10.4 10.6 10.8 ... 59.2 59.4 59.6 59.8 60.0 * lon (lon) float64 70.0 70.2 70.4 70.6 70.8 ... 139.4 139.6 139.8 140.0 Attributes: data_source: ... var_cn_name: 湿静力能 var_units: kJ/kg valid_time: 0</code></pre>

页面列表

ITEM_HTML