meteva

提供气象产品检验相关python程序


图像矩

<pre><code class="language-python">import numpy as np import pandas as pd import math import meteva.base as meb import meteva.method as mem import pprint</code></pre> <h1>图形矩检验</h1> <p>&lt;font face=&quot;黑体&quot; color=Blue size=4&gt;<strong>imomenter_matrix(look_merge)</strong>&lt;/font&gt; </p> <p>计算一个目标的体积、质心位置、方向角和二阶矩等属性。(Hu,1962年)。<br /> 参考文献: Hu M K .Visual Pattern Recognition by Moment Invariants[J].Information Theory, IRE Transactions on, 1962, 8(2):179-187.DOI:10.1109/TIT.1962.1057692.</p> <table> <thead> <tr> <th style="text-align: left;">参数</th> <th style="text-align: center;">说明</th> <th style="text-align: left;">备注</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Blue size=5&gt;look&lt;/font&gt;</strong></td> <td style="text-align: center;">merge_force函数的返回结果</td> <td style="text-align: left;">字典</td> </tr> </tbody> </table> <p><strong>————————————————————————————————————————————————————————————————————————————————————————————————————————————</strong> &lt;font face=&quot;黑体&quot; color=Green size=4&gt;<strong>imomenter_matrix函数返回结果内容说明</strong>&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> <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;"><strong>&lt;font face=&quot;黑体&quot; color=Green size=3&gt;time&lt;/font&gt;</strong></td> <td style="text-align: left;"></td> <td style="text-align: left;">预报场的起报时间</td> <td style="text-align: left;">字符串</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Green size=3&gt;dtime&lt;/font&gt;</strong></td> <td style="text-align: left;"></td> <td style="text-align: left;">预报场的预报时效</td> <td style="text-align: left;">整数</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Green size=3&gt;match_count&lt;/font&gt;</strong></td> <td style="text-align: left;"></td> <td style="text-align: left;">匹配的目标对数</td> <td style="text-align: left;">整数</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Green size=3&gt;feature_table&lt;/font&gt;</strong></td> <td style="text-align: left;"></td> <td style="text-align: left;">feature_table函数的返回结果</td> <td style="text-align: left;">字典</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Green size=3&gt;interester&lt;/font&gt;</strong></td> <td style="text-align: left;"></td> <td style="text-align: left;">相似度结果</td> <td style="text-align: left;">当return_all_info为True时,&lt;br&gt;其内容如interester函数返回结果;&lt;br&gt;&lt;br&gt;为False时返回size= match_count的一维数组,&lt;br&gt;其中记录了成功匹配的目标对直接的相似度</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Green size=3&gt;1&lt;/font&gt;</strong></td> <td style="text-align: left;"></td> <td style="text-align: left;">编号为1的观测和预报目标的属性及检验结果</td> <td style="text-align: left;">字典</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Green size=3&gt;imomenter_matrix&lt;/font&gt;</strong></td> <td style="text-align: left;"></td> <td style="text-align: left;">编号为1的观测和预报目标的轴属性</td> <td style="text-align: left;">字典</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Green size=3&gt;ob&lt;/font&gt;</strong></td> <td style="text-align: left;"></td> <td style="text-align: left;">编号为1的观测目标的属性</td> <td style="text-align: left;"></td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Green size=3&gt;volume&lt;/font&gt;</strong></td> <td style="text-align: left;"></td> <td style="text-align: left;">编号为1的观测目标的体积,对【格点面积×降水量】进行积分</td> <td style="text-align: left;">单位:mm × ° ×°</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Green size=3&gt;centroid&lt;/font&gt;</strong></td> <td style="text-align: left;"></td> <td style="text-align: left;">目标质心的位置,以每个格点的降水量作为权重,计算目标的质心位置</td> <td style="text-align: left;">字典</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Green size=3&gt;x&lt;/font&gt;</strong></td> <td style="text-align: left;">目标质心的位置经度坐标</td> <td style="text-align: left;">单位: ×°</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Green size=3&gt;y&lt;/font&gt;</strong></td> <td style="text-align: left;">目标质心的位置纬度坐标</td> <td style="text-align: left;">单位: ×°</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Green size=3&gt;OrientationAngle&lt;/font&gt;</strong></td> <td style="text-align: left;">以格点降水量作为权重计算得到的目标倾角,0-180°</td> <td style="text-align: left;">字典</td> </tr> <tr> <td style="text-align: left;">&lt;font face=&quot;黑体&quot; color=Green size=3&gt;<strong>cov</strong>&lt;/font&gt;</td> <td style="text-align: left;">二阶矩</td> <td style="text-align: left;">字典</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Green size=3&gt;cov_xx&lt;/font&gt;</strong></td> <td style="text-align: left;">对【(格点经度-质心经度)的平方×格点降水量×格点面积/volume】 进行积分</td> <td style="text-align: left;">实数</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Green size=3&gt;cov_yy&lt;/font&gt;</strong></td> <td style="text-align: left;">对【(格点纬度-质心纬度)的平方×格点降水量×格点面积/volume】 进行积分</td> <td style="text-align: left;">实数</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Green size=3&gt;cov_xy&lt;/font&gt;</strong></td> <td style="text-align: left;">对【(格点纬度-质心纬度)×(格点经度-质心经度)×格点降水量×格点面积/volume】 进行积分</td> <td style="text-align: left;">实数</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Green size=3&gt;fo&lt;/font&gt;</strong></td> <td style="text-align: left;"></td> <td style="text-align: left;">编号为1的预报目标的轴属性,形式和ob相同</td> <td style="text-align: left;">字典</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Green size=3&gt;...&lt;/font&gt;</strong></td> <td style="text-align: left;">其它编号的观测和预报属性,形式如同1</td> </tr> </tbody> </table> <p><strong>调用示例</strong></p> <pre><code class="language-python"># 读取观测和预报数据 grid1 = meb.grid([100, 120, 0.05], [24, 40, 0.05]) path_ob = r'H:\test_data\input\mem\mode\ob\rain03\20072611.000.nc' path_fo_03 = r'H:\test_data\input\mem\mode\ec\rain03\20072608.003.nc' path_fo_27 = r'H:\test_data\input\mem\mode\ec\rain03\20072508.027.nc' grd_ob = meb.read_griddata_from_nc(path_ob, grid=grid1, time=&amp;quot;2020072611&amp;quot;, dtime=0, data_name=&amp;quot;OBS&amp;quot;) grd_fo_03 = meb.read_griddata_from_nc(path_fo_03, grid=grid1, time=&amp;quot;2020072608&amp;quot;, dtime=3, data_name=&amp;quot;ECMWF&amp;quot;) grd_fo_27 = meb.read_griddata_from_nc(path_fo_27, grid=grid1, time=&amp;quot;2020072508&amp;quot;, dtime=27, data_name=&amp;quot;ECMWF&amp;quot;) look_ff = mem.mode.feature_finder(grd_ob, grd_fo_03, smooth=5, threshold=5, minsize=5) print(&amp;quot;*** 目标识别完成 ***\n&amp;quot;) look_match = mem.mode.centmatch(look_ff) look_merge = mem.mode.merge_force(look_match) mem.mode.plot_value_and_label(look_merge)</code></pre> <pre><code>*** 目标识别完成 ***</code></pre> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=8447df2f87ac9bd66a992bb94dc482e7&amp;amp;file=file.png" alt="" /></p> <pre><code class="language-python">result = mem.image_moments.imomenter_matrix(look_merge) pprint.pprint(result) </code></pre> <pre><code>{1: {'imomenter_matrix': {'fo': {'OrientationAngle': 0.4343390746601114, 'centroid': {'x': 107.08620670630734, 'y': 29.57289432014575}, 'cov': {'cov_xx': 7.453508867813763, 'cov_xy': 3.207802864165347, 'cov_yy': 2.0264467730568185}, 'volume': 190.13112520000004}, 'ob': {'OrientationAngle': 0.4079402761185016, 'centroid': {'x': 108.07048017184957, 'y': 29.48064243681245}, 'cov': {'cov_xx': 10.746954291434704, 'cov_xy': 4.3134368786080275, 'cov_yy': 2.630611893772771}, 'volume': 251.43260920000003}}}, 2: {'imomenter_matrix': {'fo': {'OrientationAngle': 0.536880733219785, 'centroid': {'x': 115.34693577641487, 'y': 33.94236960269696}, 'cov': {'cov_xx': 0.6643036367643437, 'cov_xy': 0.28894460380579406, 'cov_yy': 0.35082264880908043}, 'volume': 26.923833300000013}, 'ob': {'OrientationAngle': 0.6986057080783061, 'centroid': {'x': 115.5497600163589, 'y': 33.65706564738658}, 'cov': {'cov_xx': 0.3459030648223052, 'cov_xy': 0.2021815754048839, 'cov_yy': 0.2749981261118228}, 'volume': 21.589721600000015}}}, 3: {'imomenter_matrix': {'fo': {'OrientationAngle': -0.08866110200817028, 'centroid': {'x': 117.78317230753282, 'y': 31.075482099732277}, 'cov': {'cov_xx': 0.043658347717791916, 'cov_xy': -0.0031170263757121577, 'cov_yy': 0.008870961889997489}, 'volume': 1.8385562999999998}, 'ob': {'OrientationAngle': -0.07028834582273102, 'centroid': {'x': 118.79078255350404, 'y': 30.07165674894282}, 'cov': {'cov_xx': 0.3200925895888941, 'cov_xy': -0.014475807398721372, 'cov_yy': 0.1155021225250448}, 'volume': 20.541087500000017}}}, 4: {'feature_axis': {'fo': {'OrientationAngle': 0.0163575323548104, 'centroid': {'x': 117.69301200731284, 'y': 25.28954118895637}, 'cov': {'cov_xx': 0.010078661605948584, 'cov_xy': 7.960547965467414e-05, 'cov_yy': 0.005213803265976652}, 'volume': 0.645439999999999}}, 'imomenter_matrix': {'ob': {'OrientationAngle': -1.3522207593307836, 'centroid': {'x': 118.55664379860443, 'y': 25.47775071405532}, 'cov': {'cov_xx': 0.013236046850870481, 'cov_xy': -0.0022188112938238192, 'cov_yy': 0.02273225053138134}, 'volume': 2.372610300000001}}}, 5: {'imomenter_matrix': {'ob': {'OrientationAngle': -0.7095160979553476, 'centroid': {'x': 118.55175371690272, 'y': 34.9445539961194}, 'cov': {'cov_xx': 0.0039545349931722745, 'cov_xy': -0.0017027424946354588, 'cov_yy': 0.003433699682791485}, 'volume': 0.2658867000000011}}}, 'dtime': 3, 'label_list_matched': [1, 2, 3], 'match_count': 3, 'member': 'ECMWF', 'time': '20200726080000', 'unmatched': {'fo': [4], 'ob': [4, 5]}}</code></pre> <pre><code class="language-python"></code></pre>

页面列表

ITEM_HTML