metdig

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


通用计算tools

<p>[TOC]</p> <h1>差分计算</h1> <p>地理空间差分(地理空间梯度),使用xarray的geospatial_gradient方法,代码示例如下:</p> <pre><code class="language-python">geospatial_gradient(stda, dx=None, dy=None)</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;">stda</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;">任意stda数据</td> </tr> <tr> <td style="text-align: left;">dx</td> <td style="text-align: left;">否</td> <td style="text-align: left;">np.array, optional</td> <td style="text-align: left;">指定`stda中网格经度方向点之间间距的数组或标量序列(必须带units为长度单位)`,默认按经纬度坐标计算球面间距。 Defaults to None</td> </tr> <tr> <td style="text-align: left;">dy</td> <td style="text-align: left;">否</td> <td style="text-align: left;">np.array, optional</td> <td style="text-align: left;">指定`stda中网格纬度方向点之间间距的数组或标量序列(必须带units为长度单位)`,默认按经纬度坐标计算球面间距。 Defaults to None</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;">df/dx</td> <td style="text-align: left;">对纬度轴的差分结果</td> </tr> <tr> <td style="text-align: left;">df/dy</td> <td style="text-align: left;">对经度轴的差分结果</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">init_time = datetime(2023,5,4,8) tmp = 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=[24], extent = [70,140,10,60], levels=[500]) dfdx, dfdy = metdig.cal.tools.geospatial_gradient(tmp) print(dfdx) print(dfdy)</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;tmp&amp;#039; (member: 1, level: 1, time: 1, dtime: 1, lat: 251, lon: 351)&amp;gt; array([[[[[[-4.994038e-06, ..., -1.747913e-05], ..., [ 9.836338e-06, ..., 9.133742e-06]]]]]], 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: cmadaas level_type: high var_name: df/dx var_cn_name: var_units: kelvin / meter valid_time: 0 &amp;lt;xarray.DataArray &amp;#039;tmp&amp;#039; (member: 1, level: 1, time: 1, dtime: 1, lat: 251, lon: 351)&amp;gt; array([[[[[[ 6.674656e-06, ..., 1.510580e-05], ..., [-9.133740e-06, ..., 7.728549e-06]]]]]], dtype=float32) Coordinates: ... var_name: df/dy var_cn_name: var_units: kelvin / meter valid_time: 0</code></pre> <h1>积分计算</h1> <p>给定维度上的积分计算,使用xarray的integrate方法,基于梯形法则,代码示例如下:</p> <pre><code class="language-python">integrate(stda, axes)</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;">stda</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;">任意stda数据</td> </tr> <tr> <td style="text-align: left;">axes</td> <td style="text-align: left;">&lt;font color=&quot;red&quot;&gt;是&lt;/font&gt;</td> <td style="text-align: left;">str</td> <td style="text-align: left;">stda 维度名称 e.g. &#039;member&#039;, &#039;level&#039;, &#039;time&#039;, &#039;dtime&#039;, &#039;lat&#039;, &#039;lon&#039;</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;">int</td> <td style="text-align: left;">积分结果</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">init_time = datetime(2023,5,4,8) tmp = 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=[24], extent = [70,140,10,60], levels=[200,500,600]) _tmp = metdig.cal.tools.integrate(tmp, axes=&amp;#039;level&amp;#039;) print(_tmp)</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;tmp&amp;#039; (member: 1, level: 1, time: 1, dtime: 1, lat: 251, lon: 351)&amp;gt; array([[[[[[ 8405.44204712, 8408.95767212, 8410.91079712, ..., 8143.33267212, 8168.72329712, 8228.87954712], [ 8366.37954712, 8377.31704712, 8401.14517212, ..., 8155.05142212, 8161.69204712, 8203.87954712], [ 8337.86392212, 8340.59829712, 8371.06704712, ..., 8148.80142212, 8174.58267212, 8220.28579712], ..., [14190.60134888, 14216.77322388, 14228.49197388, ..., 14072.24197388, 14061.69509888, 14046.46072388], [14049.58572388, 14099.19509888, 14143.72634888, ..., 14098.80447388, 14075.75759888, 14054.66384888], [13900.36697388, 13940.21072388, 13994.89822388, ..., 14087.47634888, 14057.78884888, 14040.60134888]]]]]]) Coordinates: * level (level) int64 0 * 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</code></pre>

页面列表

ITEM_HTML