meteva

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


MODE目标检验

<p>[TOC]</p> <pre><code class="language-python">import meteva.base as meb import meteva.product as mpd import numpy as np import pandas as pd import meteva.method as mem import math import copy import datetime import xarray as xr import matplotlib.pyplot as plt import datetime</code></pre> <h1>MODE概述</h1> <hr /> <p>&lt;font face=&quot;黑体&quot; color=Black size=4&gt;&lt;br&gt; MODE方法是在定义并计算降水对象的不同属性的基础上,设定不同属性的权重系数,运用模糊逻辑算法计算预报性能的总收益函数从而判断预报的整体表现。&lt;br&gt; &lt;/font&gt;<br /> &lt;font face=&quot;黑体&quot; color=Black size=4&gt; &lt;br&gt; 计算流程如下:&lt;br&gt; &lt;/font&gt; </p> <ol> <li>观测场和预报场平滑、雨量阈值提取、选取关注的降雨面积最大最小值,提取目标。 </li> <li>通过目标质心距离、目标面积、最小边界距离等属性,将相似的观测场和预报场目标进行匹配。 </li> <li>观测场和预报场目标存在多对多的情况,将多对多的目标进行合并。 </li> <li>计算目标的多种属性,如凸包点坐标、面积、长短轴长度、方位角等。 </li> <li>通过观测场和预报场的目标属性,计算观测和预报的相似度矩阵。通常认为目标相似度达到0.7表示该模式对雨带的预报较为准确。 </li> </ol> <p>&lt;font face=&quot;黑体&quot; size=3&gt;本示例选用的是2020年7月26日11时的过去3小时累积雨量与预报雨量,格点分辨率为0.25°经度范围是70°E至140°E,纬度范围是15°N至55°N,覆盖中国范围。&lt;/font&gt;</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;)</code></pre> <h1>目标的识别</h1> <p>&lt;font face=&quot;黑体&quot; color=Blue size=3&gt;<strong>feature_finder(grd_ob, grd_fo, smooth, threshold,minsize,compare = &quot;&gt;=&quot;)</strong>&lt;/font&gt; </p> <p>根据输入的观测和预报网格数据, 识别其中的联通目标,并将这些联通目标依次标记上序号。识别步骤包括 </p> <ol> <li>选用一个半径为smooth的圆盘形卷积内核,将观测观测场和预报场进行卷积平滑; </li> <li>设定一个阈值threshold,将平滑后观测和预报格点场中的数值小于threshold的格点置为0; </li> <li>通过联通域提取算法识别出观测和预报场中的目标; </li> <li>设置minsize,将预报和观测场中目标的面积(格点数)小于minsize的删除; </li> <li>雨量阈值提取、选取关注的降雨面积最大最小值,提取目标。 </li> </ol> <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;grd_ob&lt;/font&gt;</strong></td> <td style="text-align: center;">网格观测数据</td> <td style="text-align: left;"><a href="https://www.showdoc.com.cn/meteva?page_id=3975600815874861">网格数据格式</a></td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Blue size=5&gt;grd_fo&lt;/font&gt;</strong></td> <td style="text-align: center;">网格预报数据</td> <td style="text-align: left;"><a href="https://www.showdoc.com.cn/meteva?page_id=3975600815874861">网格数据格式</a></td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Blue size=5&gt;smooth&lt;/font&gt;</strong></td> <td style="text-align: center;">平滑系数,采用圆盘形的卷积内核对网格数据进行平滑,smooth相当圆盘的半径</td> <td style="text-align: left;">可以为单个整数或列表形式,当其为单个整数时,观测和预报采用相同的参数,否则相应采用不同的参数,如smooth = [5, 4]。平滑系数为0时不做平滑</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Blue size=5&gt;threshold&lt;/font&gt;</strong></td> <td style="text-align: center;">雨量阈值,平滑后低于阈值的部分会被置0</td> <td style="text-align: left;">可以为单个实数或列表形式,当其为单个实数时,观测和预报采用相同的参数,否则相应采用不同的参数,,如threshold = [9,10]</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Blue size=5&gt;minsize&lt;/font&gt;</strong></td> <td style="text-align: center;">目标的最小面积,面积小于该阈值的目标将会被删除</td> <td style="text-align: left;">可以为单个整数或列表形式,当其为单个整数时,观测和预报采用相同的参数,否则相应采用不同的参数,&lt;br&gt;如minsize = [5, 4],此列表中的数值表示的是格点数。</td> </tr> <tr> <td style="text-align: left;"><strong>compare</strong></td> <td style="text-align: center;">比较方法,可选项包括&quot;&gt;=&quot;,&quot;&gt;&quot;,&quot;&lt;=&quot;,&quot;&lt;&quot;</td> <td style="text-align: left;">当关注目标是要素场大于阈值时,采用默认参数,如识别暴雨目标时选择参数&quot;&gt;=&quot;,若关注对象是要素值小于阈值时,则可选取&quot;&lt;=&quot;,如根据能见度场识别大雾目标</td> </tr> </tbody> </table> <p><strong>————————————————————————————————————————————————————————————————————————————————————————————————————————————</strong></p> <p>&lt;font face=&quot;黑体&quot; color=green size=4&gt;<strong>feature_finder函数返回结果内容说明</strong>&lt;/font&gt; </p> <table> <thead> <tr> <th style="text-align: left;">一级关键词</th> <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=green size=3&gt;grd_ob&lt;/font&gt;</strong></td> <td style="text-align: left;"></td> <td style="text-align: center;">原始观测场</td> <td style="text-align: left;"><a href="https://www.showdoc.com.cn/meteva?page_id=3975600815874861">网格数据格式</a></td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=green size=3&gt;grd_ob_label&lt;/font&gt;</strong></td> <td style="text-align: left;"></td> <td style="text-align: center;">观测场目标标记场</td> <td style="text-align: left;"><a href="https://www.showdoc.com.cn/meteva?page_id=3975600815874861">网格数据格式</a></td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=green size=3&gt;grd_ob_features&lt;/font&gt;</strong></td> <td style="text-align: left;"></td> <td style="text-align: center;">观测场被标记的目标以及属性</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;label_count&lt;/font&gt;</strong></td> <td style="text-align: left;">观测场中目标的个数</td> <td style="text-align: center;">整数</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=green size=3&gt;area&lt;/font&gt;</strong></td> <td style="text-align: left;">各目标的面积</td> <td style="text-align: center;">实数列表,长度=label_count, 其中一个目标的面积 = 目标格点数 <em> 径向格距 </em> 纬向格距</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;">观测场中1号目标的坐标</td> <td style="text-align: center;">numpy数组的位置索引,其中记录了1号目标每一个点的坐标,具体内容为np.where(grd_ob_labeled.values.squeeze()==1)返回结果</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=green size=3&gt;2&lt;/font&gt;</strong></td> <td style="text-align: left;">观测场中2号目标的坐标</td> <td style="text-align: center;">numpy数组的位置索引,tuple</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;">...</td> <td style="text-align: center;">...</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=green size=3&gt;grd_fo&lt;/font&gt;</strong></td> <td style="text-align: left;"></td> <td style="text-align: center;">原始预报场</td> <td style="text-align: left;"><a href="https://www.showdoc.com.cn/meteva?page_id=3975600815874861">网格数据格式</a></td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=green size=3&gt;grd_fo_label&lt;/font&gt;</strong></td> <td style="text-align: left;"></td> <td style="text-align: center;">预报场目标标记场</td> <td style="text-align: left;"><a href="https://www.showdoc.com.cn/meteva?page_id=3975600815874861">网格数据格式</a></td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=green size=3&gt;grd_fo_features&lt;/font&gt;</strong></td> <td style="text-align: left;"></td> <td style="text-align: center;">预报场被标记的目标以及属性</td> <td style="text-align: left;">形式和内容和grd_ob_feature类似</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=green size=3&gt;label_list_ob&lt;/font&gt;</strong></td> <td style="text-align: left;"></td> <td style="text-align: center;">观测目标编号的列表</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;label_list_fo&lt;/font&gt;</strong></td> <td style="text-align: left;"></td> <td style="text-align: center;">预报目标编号的列表</td> <td style="text-align: left;">整数列表</td> </tr> </tbody> </table> <p><strong>调用示例</strong></p> <pre><code class="language-python">#当smoothpar平滑次数较小时,thresh的值扩大的倍数小,小于1,如果平滑次数较大,则thresh阈值扩大了30倍左右 look_ff = mem.mode.feature_finder(grd_ob,grd_fo_03,smooth = 5,threshold = 5,minsize = 5) print(&amp;quot;*** 目标识别完成 ***\n&amp;quot;)</code></pre> <pre><code>*** 目标识别完成 ***</code></pre> <pre><code class="language-python">#打印1号目标中每个格点的坐标索引 print(look_ff[&amp;quot;grd_ob_features&amp;quot;][1])</code></pre> <pre><code>(array([23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 33, 33, 33, 33, 33, 33, 33, 33, 34, 34, 34, 34, 34, 34, 35, 35, 35], dtype=int64), array([369, 370, 371, 372, 367, 368, 369, 370, 371, 372, 373, 367, 368, 369, 370, 371, 372, 373, 374, 366, 367, 368, 369, 370, 371, 372, 373, 374, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 366, 367, 368, 369, 370, 371, 372, 373, 366, 367, 368, 369, 370, 371, 367, 368, 369], dtype=int64))</code></pre> <h1>识别结果绘制</h1> <h2>绘制要素场</h2> <p>&lt;font face=&quot;黑体&quot; color=Blue size=3&gt;<strong>plot_value(look, cmap =&quot;rain_24h&quot;,clevs = None,save_path,show = True)</strong>&lt;/font&gt; </p> <table> <thead> <tr> <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=Blue size=5&gt;look&lt;/font&gt;</strong></td> <td style="text-align: left;">目标识别,匹配或合并函数所得结果</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Blue size=5&gt;cmap&lt;/font&gt;</strong></td> <td style="text-align: left;">网格预报数据绘图colorbar的cmap参数,字符或者matplotlib 的cm对象。 缺省值”rainbow”对应彩虹色方案。 当cmap为字符时支持两种情况,一种是matplotlib 能够识别的字符串,例如”rainbow”,”bwr”等等,具体可以参考https://matplotlib.org/tutorials/colors/colormaps.html, 另外则是meteva定义的一些和预报检验有关的一些配色方案,具体可参考meb.def_cmap_clevs函数说明</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Blue size=5&gt;clevs&lt;/font&gt;</strong></td> <td style="text-align: left;">网格数据绘图colorbar的等级参数, 取值为列表或一维nump数值</td> </tr> <tr> <td style="text-align: left;"><strong>save_path</strong></td> <td style="text-align: left;">图片保存路径,缺省时不输出图片,而是以默认绘图窗口形式展示</td> </tr> <tr> <td style="text-align: left;"><strong>show</strong></td> <td style="text-align: left;">是否在屏幕显示图片,如果save_path 和save_dir 为都None时,程序内部会自动将show设置True</td> </tr> <tr> <td style="text-align: left;"><strong>dpi</strong></td> <td style="text-align: left;">图片的分辨率,效果同matplotlib的dpi参数</td> </tr> <tr> <td style="text-align: left;"><strong>sup_fontsize</strong></td> <td style="text-align: left;">图片标题的字体大小,其它字体将根据标题字体大小自动设置,其中坐标轴字体大小 = sup_fontsize <em> 0.9, 坐标刻度的字体大小 = sup_fontsize </em> 0.8</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Blue size=5&gt;result&lt;/font&gt;</strong></td> <td style="text-align: left;">无</td> </tr> </tbody> </table> <p><strong>调用示例</strong></p> <pre><code class="language-python">mem.mode.plot_value(look_ff) #cmap,clev缺省时用的是24小时降水的颜色标准绘制</code></pre> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=4da1e197e27945bd157db322c331edd7" alt="" /></p> <h2>绘制目标编号</h2> <p>&lt;font face=&quot;黑体&quot; color=Blue size=3&gt;<strong>plot_label(look,save_path = None,show = False)</strong>&lt;/font&gt; </p> <table> <thead> <tr> <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=Blue size=5&gt;look&lt;/font&gt;</strong></td> <td style="text-align: left;">目标识别,匹配或合并函数所得结果</td> </tr> <tr> <td style="text-align: left;"><strong>save_path</strong></td> <td style="text-align: left;">图片保存路径,缺省时不输出图片,而是以默认绘图窗口形式展示</td> </tr> <tr> <td style="text-align: left;"><strong>show</strong></td> <td style="text-align: left;">是否在屏幕显示图片,如果save_path 和save_dir 为都None时,程序内部会自动将show设置True</td> </tr> <tr> <td style="text-align: left;"><strong>dpi</strong></td> <td style="text-align: left;">图片的分辨率,效果同matplotlib的dpi参数</td> </tr> <tr> <td style="text-align: left;"><strong>sup_fontsize</strong></td> <td style="text-align: left;">图片标题的字体大小,其它字体将根据标题字体大小自动设置,其中坐标轴字体大小 = sup_fontsize <em> 0.9, 坐标刻度的字体大小 = sup_fontsize </em> 0.8</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Blue size=5&gt;result&lt;/font&gt;</strong></td> <td style="text-align: left;">无</td> </tr> </tbody> </table> <p><strong>调用示例</strong></p> <pre><code class="language-python">mem.mode.plot_label(look_ff) </code></pre> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=4ddc8566b852129365b2d4d537a6576a" alt="" /></p> <h2>绘制要素和编号</h2> <p>&lt;font face=&quot;黑体&quot; color=Blue size=3&gt;<strong>plot_value_and_label(look, cmap =&quot;rain_24h&quot;,clevs = None,save_path,show = True)</strong>&lt;/font&gt; </p> <table> <thead> <tr> <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=Blue size=5&gt;look&lt;/font&gt;</strong></td> <td style="text-align: left;">目标识别,匹配或合并函数所得结果</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Blue size=5&gt;cmap&lt;/font&gt;</strong></td> <td style="text-align: left;">网格预报数据绘图colorbar的cmap参数,字符或者matplotlib 的cm对象。 缺省值”rainbow”对应彩虹色方案。 当cmap为字符时支持两种情况,一种是matplotlib 能够识别的字符串,例如”rainbow”,”bwr”等等,具体可以参考https://matplotlib.org/tutorials/colors/colormaps.html, 另外则是meteva定义的一些和预报检验有关的一些配色方案,具体可参考meb.def_cmap_clevs函数说明</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Blue size=5&gt;clevs&lt;/font&gt;</strong></td> <td style="text-align: left;">网格数据绘图colorbar的等级参数, 取值为列表或一维nump数值</td> </tr> <tr> <td style="text-align: left;"><strong>save_path</strong></td> <td style="text-align: left;">图片保存路径,缺省时不输出图片,而是以默认绘图窗口形式展示</td> </tr> <tr> <td style="text-align: left;"><strong>show</strong></td> <td style="text-align: left;">是否在屏幕显示图片,如果save_path 和save_dir 为都None时,程序内部会自动将show设置True</td> </tr> <tr> <td style="text-align: left;"><strong>dpi</strong></td> <td style="text-align: left;">图片的分辨率,效果同matplotlib的dpi参数</td> </tr> <tr> <td style="text-align: left;"><strong>sup_fontsize</strong></td> <td style="text-align: left;">图片标题的字体大小,其它字体将根据标题字体大小自动设置,其中坐标轴字体大小 = sup_fontsize <em> 0.9, 坐标刻度的字体大小 = sup_fontsize </em> 0.8</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Blue size=5&gt;result&lt;/font&gt;</strong></td> <td style="text-align: left;">无</td> </tr> </tbody> </table> <p><strong>调用示例</strong></p> <pre><code class="language-python">mem.mode.plot_value_and_label(look_ff, cmap = &amp;quot;rain_3h&amp;quot;,clevs = np.arange(0,61,3)) </code></pre> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=aa16597c2d13727228e5a0703bdb2cc8" alt="" /></p> <h1>目标匹配</h1> <p>基于目标识别函数feature_finder中的结果,计算观测和预报场中目标两两之间的匹配关系。</p> <h2>目标匹配方法1(推荐)</h2> <p>&lt;font face=&quot;黑体&quot; color=Blue size=3&gt;<strong>centmatch(look_ff)</strong>&lt;/font&gt;<br /> 匹配方法:对于观测目标A,计算每个预报目标和它的质心距离。当某个预报目标B满足预报目标质心距离 &lt; (观测目标面积^0.5 + 预报目标面积^0.5),即记录(A,B)为一对匹配目标。该算法中,一个观测目标可以和多个预报目标配对,一个预报目标也可以和多个观测目标配对。</p> <h2>目标匹配方法2</h2> <p>&lt;font face=&quot;黑体&quot; color=Blue size=3&gt;<strong>deltamm(look_ff)</strong>&lt;/font&gt;<br /> 匹配方法:对于观测目标A,计算所有预报目标到其距离,找到距离观测目标最近的预报目标B,则记(A,B)为一对匹配目标。该算法中一个预报可以和多个观测目标匹配。</p> <h2>目标匹配方法3</h2> <p>&lt;font face=&quot;黑体&quot; color=Blue size=3&gt;<strong>minboundmatch(look_ff)</strong>&lt;/font&gt; </p> <p>匹配方法:设观测目标数为N,预报目标数为M,计算观测和预报两两之间的目标距离,得到N×M个距离,对距离从小到大排序,取其中排序靠前的M组距离,对应的观测和预报目标编号会被记为成功匹配。其中目标距离定义为最近距离,即两个目标内的点两两距离的最小值。该算法中,一个观测目标可以和多个预报目标配对,一个预报目标也可以和多个观测目标配对。</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_ff&lt;/font&gt;</strong></td> <td style="text-align: center;">feature_finder函数结果</td> <td style="text-align: left;">数据为dict格式</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Blue size=5&gt;result&lt;/font&gt;</strong></td> <td style="text-align: center;">匹配后的结果</td> <td style="text-align: left;">形式和内容同feature_finder的结果相似,具体见下文表格</td> </tr> </tbody> </table> <p><strong>————————————————————————————————————————————————————————————————————————————————————————————————————————————</strong> &lt;font face=&quot;黑体&quot; color=green size=4&gt;<strong>目标匹配函数返回结果内容说明</strong>&lt;/font&gt; </p> <p>结果中grd_ob,grd_fo,grd_ob_features,grd_fo_features,grd_ob_labeled,grd_fo_labeled是从look_ff参数中继承下来.</p> <table> <thead> <tr> <th style="text-align: left;">一级关键词</th> <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=green size=3&gt;grd_ob&lt;/font&gt;</strong></td> <td style="text-align: left;"></td> <td style="text-align: center;">原始观测场</td> <td style="text-align: left;"><a href="https://www.showdoc.com.cn/meteva?page_id=3975600815874861">网格数据格式</a></td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=green size=3&gt;grd_ob_label&lt;/font&gt;</strong></td> <td style="text-align: left;"></td> <td style="text-align: center;">观测场目标标记场</td> <td style="text-align: left;"><a href="https://www.showdoc.com.cn/meteva?page_id=3975600815874861">网格数据格式</a></td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=green size=3&gt;grd_ob_features&lt;/font&gt;</strong></td> <td style="text-align: left;"></td> <td style="text-align: center;">观测场被标记的目标以及属性</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;label_count&lt;/font&gt;</strong></td> <td style="text-align: left;">观测场中目标的个数</td> <td style="text-align: center;">整数</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=green size=3&gt;area&lt;/font&gt;</strong></td> <td style="text-align: left;">各目标的面积</td> <td style="text-align: center;">实数列表,长度=label_count, 其中一个目标的面积 = 目标格点数 <em> 径向格距 </em> 纬向格距</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;">观测场中1号目标的坐标</td> <td style="text-align: center;">numpy数组的位置索引,其中记录了1号目标每一个点的坐标,具体内容为np.where(grd_ob_labeled.values.squeeze()==1)返回结果</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=green size=3&gt;2&lt;/font&gt;</strong></td> <td style="text-align: left;">观测场中2号目标的坐标</td> <td style="text-align: center;">numpy数组的位置索引</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;">...</td> <td style="text-align: center;">...</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=green size=3&gt;grd_fo&lt;/font&gt;</strong></td> <td style="text-align: left;"></td> <td style="text-align: center;">原始预报场</td> <td style="text-align: left;"><a href="https://www.showdoc.com.cn/meteva?page_id=3975600815874861">网格数据格式</a></td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=green size=3&gt;grd_fo_label&lt;/font&gt;</strong></td> <td style="text-align: left;"></td> <td style="text-align: center;">预报场目标标记场</td> <td style="text-align: left;"><a href="https://www.showdoc.com.cn/meteva?page_id=3975600815874861">网格数据格式</a></td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=green size=3&gt;grd_fo_features&lt;/font&gt;</strong></td> <td style="text-align: left;"></td> <td style="text-align: center;">预报场被标记的目标以及属性</td> <td style="text-align: left;">形式和内容和grd_ob_feature类似</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=green size=3&gt;matches&lt;/font&gt;</strong></td> <td style="text-align: left;"></td> <td style="text-align: center;">预报和观测目标的匹配编号对应关系</td> <td style="text-align: left;">二维数组shape = (匹配对数,2),其中第2维的元素0为预报,元素1为观测</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=green size=3&gt;unmatched&lt;/font&gt;</strong></td> <td style="text-align: left;"></td> <td style="text-align: center;">预报和观测未实现匹配的目标编号</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: center;">字典</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: center;">字典</td> </tr> </tbody> </table> <p><strong>调用示例</strong></p> <pre><code class="language-python">look_match = mem.mode.centmatch(look_ff) print(&amp;quot;*** 目标匹配完毕 ***\n&amp;quot;) </code></pre> <pre><code>*** 目标匹配完毕 ***</code></pre> <pre><code class="language-python">look_match1= mem.mode.deltamm(look_ff) print(&amp;quot;*** 目标匹配完毕 ***\n&amp;quot;) </code></pre> <pre><code>*** 目标匹配完毕 ***</code></pre> <pre><code class="language-python">look_match2 = mem.mode.minboundmatch(look_ff) print(&amp;quot;*** 目标匹配完毕 ***\n&amp;quot;) </code></pre> <pre><code>*** 目标匹配完毕 ***</code></pre> <h1>匹配结果合并</h1> <p>&lt;font face=&quot;黑体&quot; color=Blue size=5&gt;<strong>merge_force(look_match)</strong>&lt;/font&gt; </p> <p>基于目标匹配函数的返回结果,将其中1个观测目标匹配的多个预报目标进行合并,同时将1个预报目标匹配的多个观测目标进行合并。<br /> 以上述例子中look_match2[&quot;matches&quot;] 结果为例。其中预报目标3和观测1、5匹配成功,因此观测的1和5会合并,同时预报目标6也和观测1、5匹配陈宫,因此预报的3和6也会合并。 </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_match&lt;/font&gt;</strong></td> <td style="text-align: center;">centmatch、deltamm或minboundmatch函数的结果</td> <td style="text-align: left;">数据为dict格式</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Blue size=5&gt;result&lt;/font&gt;</strong></td> <td style="text-align: center;">匹配后的结果</td> <td style="text-align: left;">形式和内容同feature_finder的结果相似</td> </tr> </tbody> </table> <p><strong>————————————————————————————————————————————————————————————————————————————————————————————————————————————</strong> &lt;font face=&quot;黑体&quot; color=green size=4&gt;<strong>merge_force函数返回结果内容说明</strong>&lt;/font&gt; </p> <p>merge_force的结果中grd_ob,grd_fo是从look_ff参数中继承下来,grd_ob_features,grd_fo_features,grd_ob_labeled,grd_fo_labeled在合并后内容会更新。 </p> <table> <thead> <tr> <th style="text-align: left;">一级关键词</th> <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=green size=3&gt;grd_ob&lt;/font&gt;</strong></td> <td style="text-align: left;"></td> <td style="text-align: center;">原始观测场</td> <td style="text-align: left;"><a href="https://www.showdoc.com.cn/meteva?page_id=3975600815874861">网格数据格式</a></td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=green size=3&gt;grd_ob_label&lt;/font&gt;</strong></td> <td style="text-align: left;"></td> <td style="text-align: center;">观测场目标标记场</td> <td style="text-align: left;"><a href="https://www.showdoc.com.cn/meteva?page_id=3975600815874861">网格数据格式</a></td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=green size=3&gt;grd_ob_features&lt;/font&gt;</strong></td> <td style="text-align: left;"></td> <td style="text-align: center;">观测场被标记的目标以及属性</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;label_count&lt;/font&gt;</strong></td> <td style="text-align: left;">观测场中目标的个数</td> <td style="text-align: center;">整数</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=green size=3&gt;area&lt;/font&gt;</strong></td> <td style="text-align: left;">各目标的面积</td> <td style="text-align: center;">实数列表,长度=label_count, 其中一个目标的面积 = 目标格点数 <em> 径向格距 </em> 纬向格距</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;">观测场中1号目标的坐标</td> <td style="text-align: center;">numpy数组的位置索引,其中记录了1号目标每一个点的坐标,具体内容为np.where(grd_ob_labeled.values.squeeze()==1)返回结果</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=green size=3&gt;2&lt;/font&gt;</strong></td> <td style="text-align: left;">观测场中2号目标的坐标</td> <td style="text-align: center;">numpy数组的位置索引</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;">...</td> <td style="text-align: center;">...</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=green size=3&gt;grd_fo&lt;/font&gt;</strong></td> <td style="text-align: left;"></td> <td style="text-align: center;">原始预报场</td> <td style="text-align: left;"><a href="https://www.showdoc.com.cn/meteva?page_id=3975600815874861">网格数据格式</a></td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=green size=3&gt;grd_fo_label&lt;/font&gt;</strong></td> <td style="text-align: left;"></td> <td style="text-align: center;">预报场目标标记场</td> <td style="text-align: left;"><a href="https://www.showdoc.com.cn/meteva?page_id=3975600815874861">网格数据格式</a></td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=green size=3&gt;grd_fo_features&lt;/font&gt;</strong></td> <td style="text-align: left;"></td> <td style="text-align: center;">预报场被标记的目标以及属性</td> <td style="text-align: left;">形式和内容和grd_ob_feature类似</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=green size=3&gt;label_list_ob&lt;/font&gt;</strong></td> <td style="text-align: left;"></td> <td style="text-align: center;">观测的目标编号</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;label_list_fo&lt;/font&gt;</strong></td> <td style="text-align: left;"></td> <td style="text-align: center;">预报的目标编号</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;label_list_matched&lt;/font&gt;</strong></td> <td style="text-align: left;"></td> <td style="text-align: center;">具有匹配关系的预报和观测的目标编号</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: center;">预报和观测实现了匹配的目标对数</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;unmatched&lt;/font&gt;</strong></td> <td style="text-align: left;"></td> <td style="text-align: center;">预报和观测未实现匹配的目标编号</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: center;">列表</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: center;">列表</td> </tr> </tbody> </table> <p><strong>调用示例</strong></p> <pre><code class="language-python">look_merge = mem.mode.merge_force(look_match) mem.mode.plot_label(look_merge) #对于匹配未匹配的目标以统一以灰色显示,匹配的目标则以彩色显示,左右两侧相同颜色的目标是一对匹配的目标</code></pre> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=28535564c1d9a2ef0872811061038a43" alt="" /></p> <pre><code class="language-python">look_merge1 = mem.mode.merge_force(look_match1) mem.mode.plot_label(look_merge1) #对于匹配未匹配的目标以统一以灰色显示,匹配的目标则以彩色显示,左右两侧相同颜色的目标是一对匹配的目标</code></pre> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=7ad30aa787e1fbddec853025fb2cd8ef" alt="" /></p> <pre><code class="language-python">look_merge2 = mem.mode.merge_force(look_match2) mem.mode.plot_label(look_merge2) #对于匹配未匹配的目标以统一以灰色显示,匹配的目标则以彩色显示,左右两侧相同颜色的目标是一对匹配的目标</code></pre> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=708b80a4ccccfc4d62a0ab7a226929bc" alt="" /></p> <h1>单个目标的轴属性计算</h1> <p>&lt;font face=&quot;黑体&quot; color=Blue size=4&gt;<strong>feature_axis(look, label, ob_or_fo)</strong>&lt;/font&gt; </p> <p>计算某一独立目标的轴属性,属性包括:在平面坐标系上长短轴起始点坐标、长短轴重点坐标、长短轴长度、长短轴之比、长短轴角度、凸包点坐标等。</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;">目标识别或匹配的结果,它可以是feature_finder 或者merge函数的返回结果</td> <td style="text-align: left;">字典</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Blue size=5&gt;label&lt;/font&gt;</strong></td> <td style="text-align: center;">待计算的目标编号</td> <td style="text-align: left;">整数</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Blue size=5&gt;ob_or_fo&lt;/font&gt;</strong></td> <td style="text-align: center;">该参数用于明确计算的是观测场中的目标,还是预报场中的目标</td> <td style="text-align: left;">字符型,包含&quot;ob&quot;和&quot;fo&quot;两个选项</td> </tr> </tbody> </table> <p><strong>————————————————————————————————————————————————————————————————————————————————————————————————————————————</strong> &lt;font face=&quot;黑体&quot; color=Green size=4&gt;<strong>feature_axis函数返回结果内容说明</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: center;">说明</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;point&lt;/font&gt;</strong></td> <td style="text-align: left;">目标的每个格点的坐标</td> <td style="text-align: left;">numpy实数数组,单位为经纬度</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Green size=3&gt;MajorAxis&lt;/font&gt;</strong></td> <td style="text-align: left;">&lt;font face=&quot;黑体&quot; color=Green size=3&gt;ends&lt;/font&gt;</td> <td style="text-align: left;">长轴的起始点坐标</td> <td style="text-align: center;">字典形式</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Green size=3&gt;x0&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;y0&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;x1&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;y1&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;MinorAxis&lt;/font&gt;</strong></td> <td style="text-align: left;">&lt;font face=&quot;黑体&quot; color=Green size=3&gt;ends&lt;/font&gt;</td> <td style="text-align: left;">短轴的起始点坐标,形式如图MajorAxis</td> <td style="text-align: center;">字典</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Green size=3&gt;MidPoint&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;x&lt;/font&gt;</strong></td> <td style="text-align: left;"></td> <td style="text-align: left;">长短轴的中点经度坐标</td> <td style="text-align: center;">实数</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> <td style="text-align: center;">实数</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Green size=3&gt;lengths&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;MajorAxis&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;MinorAxis&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;aspect_ratio&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;"><strong>&lt;font face=&quot;黑体&quot; color=Green size=3&gt;MajorAxis&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;MinorAxis&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;pts&lt;/font&gt;</strong></td> <td style="text-align: left;">存放凸包点坐标的二维数组</td> <td style="text-align: left;">numpy实数数组,单位为经纬度</td> </tr> <tr> <td style="text-align: left;">&lt;font face=&quot;黑体&quot; color=Green size=3&gt;<strong>window</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;x0&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;y0&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;x1&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;y1&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;sma_fit&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;coef&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;slope&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;intercept&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;r&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;predict&lt;/font&gt;</strong></td> <td style="text-align: left;">拟合函数的纬度坐标</td> <td style="text-align: left;">numpy数组</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Green size=3&gt;from&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;to&lt;/font&gt;</strong></td> <td style="text-align: left;">拟合函数的经度终点</td> <td style="text-align: left;">实数</td> </tr> </tbody> </table> <p><strong>调用示例</strong></p> <pre><code class="language-python">#feature_axis函数输入的是观测场或者预报场中单个的目标 f_axis = mem.mode.feature_axis(look_merge,label = 1,ob_or_fo = &amp;quot;ob&amp;quot;) print(f_axis)</code></pre> <pre><code>{'point': array([[100, 103], [100, 103], [100, 103], ..., [114, 107], [114, 107], [114, 107]], dtype=int64), 'pts': array([[114.45, 31.45], [114.35, 31.65], [112.75, 32.2 ], [111.65, 32.25], [111.35, 32.25], [109.65, 31.8 ], [109.2 , 31.65], [108.55, 31.4 ], [100.5 , 27.55], [100.35, 27.45], [100.25, 27.35], [100.2 , 27.25], [100.2 , 27. ], [100.35, 26.85], [101.1 , 26.45], [101.2 , 26.4 ], [101.35, 26.35], [101.6 , 26.3 ], [105.45, 26.2 ], [105.6 , 26.2 ], [106.45, 26.25], [106.6 , 26.3 ], [107. , 26.5 ], [113.9 , 30.55], [114.15, 30.7 ], [114.3 , 30.85], [114.45, 31.2 ]], dtype=float32), 'phi': 110.1190101642061, 'MajorAxis': {'ends': {'x0': 100.74832929646156, 'y0': 26.56545402038646, 'x1': 114.48911737308366, 'y1': 31.599038615113024}}, 'MinorAxis': {'ends': {'x0': 108.32888967064748, 'y0': 27.14361889691903, 'x1': 106.90855699889774, 'y1': 31.020873738580455}}, 'OrientationAngle': {'MajorAxis': 20.11901016420611, 'MinorAxis': 110.1190101642061}, 'aspect_ratio': 0.2769217466139796, 'MidPoint': {'x': 107.61872333477261, 'y': 29.082246317749743}, 'window': {'x0': 100.74832929646156, 'y0': 26.56545402038646, 'x1': 114.48911737308366, 'y1': 31.599038615113024}, 'lengths': {'MajorAxis': 14.911140441894531, 'MinorAxis': 4.129219055175781}, 'sma_fit': {'slope': 0.366324301536275, 'intercept': -10.341107340086452, 'from': 100.74832929646156, 'to': 114.48911737308366}}</code></pre> <h1>单个目标的面属性计算</h1> <p>&lt;font face=&quot;黑体&quot; color=Blue size=4&gt;<strong>feature_props(look, label, ob_or_fo)</strong>&lt;/font&gt; </p> <p>计算某一独立目标的轴属性,属性包括:在平面坐标系上长短轴起始点坐标、长短轴重点坐标、长短轴长度、长短轴之比、长短轴角度、凸包点坐标等。</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;">目标识别或匹配的结果,它可以是feature_finder 或者merge_force函数的返回结果</td> <td style="text-align: left;">字典</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Blue size=5&gt;label&lt;/font&gt;</strong></td> <td style="text-align: center;">待计算的目标编号</td> <td style="text-align: left;">整数</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Blue size=5&gt;ob_or_fo&lt;/font&gt;</strong></td> <td style="text-align: center;">该参数用于明确计算的是观测场中的目标,还是预报场中的目标</td> <td style="text-align: left;">字符型,包含&quot;ob&quot;和&quot;fo&quot;两个选项</td> </tr> </tbody> </table> <p><strong>————————————————————————————————————————————————————————————————————————————————————————————————————————————</strong> &lt;font face=&quot;黑体&quot; color=Green size=4&gt;<strong>feature_props函数返回结果内容说明</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> </tr> </thead> <tbody> <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;area&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;axis&lt;/font&gt;</strong></td> <td style="text-align: left;"></td> <td style="text-align: left;">目标的轴属性</td> <td style="text-align: left;">字典,它是feature_axis函数的返回结果,请参考本页面前面内容</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Green size=3&gt;intensity&lt;/font&gt;</strong></td> <td style="text-align: left;"></td> <td style="text-align: left;">强度</td> <td style="text-align: left;">最小值(0%),5%,10%,25,50%,75%,90%,95%分位值和最大值(100%)</td> </tr> </tbody> </table> <p><strong>调用示例</strong></p> <pre><code class="language-python">f_props = mem.mode.feature_props(look_merge,label = 1,ob_or_fo=&amp;quot;ob&amp;quot;) print(f_props)</code></pre> <pre><code>{'centroid': {'x': 107.88866195339094, 'y': 29.283929039015447}, 'area': 19.095000000000002, 'axis': {'point': array([[100, 103], [100, 103], [100, 103], ..., [114, 107], [114, 107], [114, 107]], dtype=int64), 'pts': array([[114.45, 31.45], [114.35, 31.65], [112.75, 32.2 ], [111.65, 32.25], [111.35, 32.25], [109.65, 31.8 ], [109.2 , 31.65], [108.55, 31.4 ], [100.5 , 27.55], [100.35, 27.45], [100.25, 27.35], [100.2 , 27.25], [100.2 , 27. ], [100.35, 26.85], [101.1 , 26.45], [101.2 , 26.4 ], [101.35, 26.35], [101.6 , 26.3 ], [105.45, 26.2 ], [105.6 , 26.2 ], [106.45, 26.25], [106.6 , 26.3 ], [107. , 26.5 ], [113.9 , 30.55], [114.15, 30.7 ], [114.3 , 30.85], [114.45, 31.2 ]], dtype=float32), 'phi': 110.1190101642061, 'MajorAxis': {'ends': {'x0': 100.74832929646156, 'y0': 26.56545402038646, 'x1': 114.48911737308366, 'y1': 31.599038615113024}}, 'MinorAxis': {'ends': {'x0': 391.6852576847248, 'y0': -746.368722014535, 'x1': -176.44781101517958, 'y1': 804.5332146500346}}, 'OrientationAngle': {'MajorAxis': 20.11901016420611, 'MinorAxis': 110.1190101642061}, 'aspect_ratio': 0.2769217466139796, 'MidPoint': {'x': 107.61872333477261, 'y': 29.082246317749743}, 'window': {'x0': 100.74832929646156, 'y0': 26.56545402038646, 'x1': 114.48911737308366, 'y1': 31.599038615113024}, 'lengths': {'MajorAxis': 14.911140441894531, 'MinorAxis': 4.129219055175781}, 'sma_fit': {'slope': 0.366324301536275, 'intercept': -10.341107340086452, 'from': 100.74832929646156, 'to': 114.48911737308366}}, 'intensity': array([ 0.541 , 4.630582, 5.3786 , 7.11403 , 10.85898 , 16.4565 , 24.577056, 30.776924, 64.567 ])}</code></pre> <pre><code class="language-python">f_props[&amp;quot;intensity&amp;quot;] # 依次是0%,5%,10%,25%,50%,75%,90%,95%,100%分位值</code></pre> <pre><code>array([ 0.541 , 4.630582, 5.3786 , 7.11403 , 10.85898 , 16.4565 , 24.577056, 30.776924, 64.567 ])</code></pre> <h1>单个目标属性对比</h1> <p>&lt;font face=&quot;黑体&quot; color=Blue size=4&gt;<strong>feature_comps(look,label_ob,label_fo)</strong>&lt;/font&gt; </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;">目标识别或匹配的结果,它可以是feature_finder 或者merge_force函数的返回结果</td> <td style="text-align: left;">字典</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Blue size=5&gt;label_ob&lt;/font&gt;</strong></td> <td style="text-align: center;">参与对比的观测目标编号</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Blue size=5&gt;label_fo&lt;/font&gt;</strong></td> <td style="text-align: center;">参与对比的预报目标编号</td> </tr> </tbody> </table> <p><strong>————————————————————————————————————————————————————————————————————————————————————————————————————————————</strong> &lt;font face=&quot;黑体&quot; color=Green size=4&gt;<strong>feature_comps函数返回结果内容说明</strong>&lt;/font&gt; </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=Green size=5&gt;cent_dist&lt;/font&gt;</strong></td> <td style="text-align: center;">质心距离</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Green size=5&gt;angle_diff&lt;/font&gt;</strong></td> <td style="text-align: center;">主轴角度差</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Green size=5&gt;area_ratio&lt;/font&gt;</strong></td> <td style="text-align: center;">面积比,观测和预报较小者/较大者</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Green size=5&gt;int_area&lt;/font&gt;</strong></td> <td style="text-align: center;">交叉面积</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Green size=5&gt;bearing&lt;/font&gt;</strong></td> <td style="text-align: center;">预报目标质心到观测目标质心的方位角,预报在观测正南记为0度,正东记为90度,正北记为180度,正西记为-90度</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Green size=5&gt;bdelta&lt;/font&gt;</strong></td> <td style="text-align: center;">两个目标间的bdelta距离,计算方法见下文</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Green size=5&gt;haus&lt;/font&gt;</strong></td> <td style="text-align: center;">两个目标间的haus距离,计算方法见下文</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Green size=5&gt;medMiss&lt;/font&gt;</strong></td> <td style="text-align: center;">(观测目标格点到预报目标的距离)的平均</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Green size=5&gt;medFalseAlarm&lt;/font&gt;</strong></td> <td style="text-align: center;">(预报目标格点到观测目标的距离)的平均</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Green size=5&gt;msdMiss&lt;/font&gt;</strong></td> <td style="text-align: center;">(观测目标格点到预报目标的距离^2)的平均</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Green size=5&gt;msdFalseAlarm&lt;/font&gt;</strong></td> <td style="text-align: center;">(预报目标格点到观测目标的距离^2)的平均</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Green size=5&gt;ph&lt;/font&gt;</strong></td> <td style="text-align: center;">两个目标间的ph距离,计算方法见下文</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Green size=5&gt;fom&lt;/font&gt;</strong></td> <td style="text-align: center;">(1/(观测目标格点到预报目标距离^2+1))的均值</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Green size=5&gt;minsep&lt;/font&gt;</strong></td> <td style="text-align: center;">(观测目标格点到预报目标的距离)的最小值</td> </tr> </tbody> </table> <p><strong>————————————————————————————————————————————————————————————————————————————————————————————————————————————</strong> &lt;font face=&quot;黑体&quot; color=Green size=4&gt;<strong>两个目标间的距离计算方法</strong>&lt;/font&gt;<br /> 该方法包含2个部分:<br /> 部分1: 点到面(多个点)的距离计算方法: </p> <ul> <li>步骤1. 计算点p到面中的点q的距离dis</li> <li>步骤2. 遍历面中所有格点,取dis的最小值。 (点在面内时,距离即为0)</li> </ul> <p>部分2:<br /> haus和delta面到面的距离计算方法 </p> <ul> <li>步骤1. 确定一个能够覆盖观测和预报目标的最小矩形网格,记其网格数为N </li> <li>步骤2. 采用部分1所述方法,计算所有格点到观测目标(面)的距离disArray_to_ob, 长度为N的1维矩阵 </li> <li>步骤3. 采用部分1所述方法,计算所有格点到预报目标(面)的距离disArray_to_fo, 长度为N的1维矩阵 </li> <li>步骤4. 计算每个格点的两种距离的差的绝对值 |disArray_to_ob - disArray_to_fo|,长度为N的1维矩阵 </li> <li>步骤5. 对于haus距离,取步骤4所得序列的最大值;对于delta: 去步骤4所得序列的均方根(序列值取平方,再取平均,再开根号) </li> </ul> <p>ph面到面的距离计算方法 </p> <ul> <li>步骤1. 采用部分1所述方法,计算所有观测目标上所有点到预报目标的距离 disArray_ob_to_fo, </li> <li>步骤2. 采用部分1所述方法,计算所有预报目标上所有点到观测目标的距离 disArray_fo_to_ob, </li> <li>步骤3. 取disArray_ob_to_fo最大值 和 disArray_fo_to_ob最大值 中的最大值 </li> </ul> <p><strong>调用示例</strong></p> <pre><code class="language-python">f_comps = mem.mode.feature_comps(look_merge,label_ob = 2,label_fo = 2) print(f_comps)</code></pre> <pre><code>{'cent_dist': 0.2842251175665399, 'angle_diff': 17.120981096132024, 'area_ratio': 0.6236210253082414, 'int_area': 0.4372501998401279, 'bearing': -161.47091154710455, 'bdelta': 5.654012277392105, 'haus': 15.264337522473747, 'medMiss': 1.5766859504678303, 'medFalseAlarm': 3.6701803712179886, 'msdMiss': 8.186264308012486, 'msdFalseAlarm': 28.142764438676185, 'ph': 15.264337522473747, 'fom': 0.49542635892850817, 'minsep': 0.0}</code></pre> <h1>匹配数评价表</h1> <p>&lt;font face=&quot;黑体&quot; color=Blue size=4&gt;<strong>feature_table(look)</strong>&lt;/font&gt; </p> <p>基于观测和预报场中匹配(命中)的目标数量,漏报的目标数量,空报的目标数量以及未报未出的目标数量等数据统计相关的<a href="https://www.showdoc.com.cn/meteva?page_id=3975610088390562">二分类检验指标</a>。</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;">目标匹配或者目标合并步骤所得的结果,如上文中的look_match,look_merge</td> </tr> </tbody> </table> <p>———————————————————————————————————————————————————————————————————————————————————————————————————————————— &lt;font face=&quot;黑体&quot; color=Green size=4&gt;<strong>feature_table函数返回结果内容说明</strong>&lt;/font&gt; </p> <table> <thead> <tr> <th style="text-align: left;">一级关键词</th> <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=green size=4&gt;contingency_table_yesorno&lt;/font&gt;</strong></td> <td style="text-align: left;"></td> <td style="text-align: center;">列联表</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;Hits&lt;/font&gt;</strong></td> <td style="text-align: left;">命中目标数</td> <td style="text-align: center;">非负整数</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=green size=3&gt;Misses&lt;/font&gt;</strong></td> <td style="text-align: left;">漏报目标数</td> <td style="text-align: center;">非负整数</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=green size=3&gt;Fales alarms&lt;/font&gt;</strong></td> <td style="text-align: left;">空报目标数</td> <td style="text-align: center;">非负整数</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=green size=3&gt;Correct negatives&lt;/font&gt;</strong></td> <td style="text-align: left;">未报未出</td> <td style="text-align: center;">非负整数</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=green size=4&gt;score&lt;/font&gt;</strong></td> <td style="text-align: left;"></td> <td style="text-align: center;">检验指数表</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;ets&lt;/font&gt;</strong></td> <td style="text-align: left;">GSS评分</td> <td style="text-align: center;">0-1实数</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=green size=3&gt;pod&lt;/font&gt;</strong></td> <td style="text-align: left;">POD评分</td> <td style="text-align: center;">0-1实数</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=green size=3&gt;pofd&lt;/font&gt;</strong></td> <td style="text-align: left;">POFD评分</td> <td style="text-align: center;">0-1实数</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=green size=3&gt;far&lt;/font&gt;</strong></td> <td style="text-align: left;">FAR评分</td> <td style="text-align: center;">0-1实数</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=green size=3&gt;hss&lt;/font&gt;</strong></td> <td style="text-align: left;">HSS评分</td> <td style="text-align: center;">0-1实数</td> </tr> </tbody> </table> <p><strong>调用示例</strong></p> <pre><code class="language-python">table = mem.mode.feature_table(look_merge) print(table)</code></pre> <pre><code>{'contingency_table_yesorno': {'Hits': 3, 'Misses': 2, 'False alarms': 1, 'Correct negatives': 11}, 'score': {'ets': 0.3780487804878049, 'pod': 0.6, 'pofd': 0.08333333333333333, 'far': 0.25, 'hss': 0.5486725663716814}}</code></pre> <h1>目标相似度</h1> <p>&lt;font face=&quot;黑体&quot; color=Blue size=4&gt;<strong>interester(look,properties= None, weights = None)</strong>&lt;/font&gt; </p> <p>对所有观测和预报中目标两两之间的相似度进行计算,计算方法包括单个对比指标的相似度计算和综合相似度计算两个部分. 其中单个指标的相似度计算是将feature_comps函数返回结果的取值范围转换成0 - 1的过程,它通常是一个单调函数,以cent.dist属性为例,它是中心点之间的距离,距离越近相似性越高,因此将cent.dist 转换成相似度的函数是一个单调递减的函数。<br /> 具体方法可以参考文献:<br /> Davis C A , Brown B G , Bullock R , et al. The Method for Object-Based Diagnostic Evaluation (MODE) applied to numerical forecasts from the 2005 NSSL/SPC spring program[J]. Weather and Forecasting, 2009, 24(5):1252-1267. 当中的附录A部分。</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;">目标匹配或者目标合并步骤所得的结果,如上文中的look_match,look_merge</td> <td style="text-align: left;">字典</td> </tr> <tr> <td style="text-align: left;"><strong>properties</strong></td> <td style="text-align: center;">待计算的相似度的属性列表</td> <td style="text-align: left;">列表,内容为feature_comps函数返回结果中的关键词,如&quot;cent.dist&quot;,&quot;angle.diff&quot;等,&lt;br&gt;缺省情况下程序会自动将其设置为[&quot;cent.dist&quot;, &quot;angle.diff&quot;, &quot;area.ratio&quot;, &quot;int.area&quot;,&quot;minsep&quot;]</td> </tr> <tr> <td style="text-align: left;"><strong>weights</strong></td> <td style="text-align: center;">总体相似度是各属性相似度的权重和,weights为每个属性所占的权重</td> <td style="text-align: left;">实数列表,长度和properties一致,&lt;br&gt;缺省情况下程序会自动将其设置为[0.24, 0.12, 0.17, 0.12, 0.35]</td> </tr> </tbody> </table> <p><strong>————————————————————————————————————————————————————————————————————————————————————————————————————————————</strong><br /> &lt;font face=&quot;黑体&quot; color=Green size=4&gt;<strong>interester函数返回结果内容说明</strong>&lt;/font&gt; </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=green size=4&gt;properties&lt;/font&gt;</strong></td> <td style="text-align: center;">参与相似度计算的属性列表</td> <td style="text-align: left;">列表</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=green size=4&gt;interest&lt;/font&gt;</strong></td> <td style="text-align: center;">属性相似度矩阵</td> <td style="text-align: left;">numpy数组,shape = (预报目标数,观测目标数,属性列表长度)</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=green size=4&gt;total_interest&lt;/font&gt;</strong></td> <td style="text-align: center;">综合相似度矩阵</td> <td style="text-align: left;">numpy数组,shape = (预报目标数,观测目标数)</td> </tr> </tbody> </table> <p><strong>调用示例</strong></p> <pre><code class="language-python">interest = mem.mode.interester(look_merge) print(&amp;quot;*** 相似度计算完毕 ***\n&amp;quot;) </code></pre> <h1>相似度结果显示</h1> <p>&lt;font face=&quot;黑体&quot; color=Blue size=3&gt;<strong>plot_interest(interest)</strong>&lt;/font&gt; </p> <table> <thead> <tr> <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=Blue size=5&gt;interest&lt;/font&gt;</strong></td> <td style="text-align: left;">interester函数的返回结果,字典形式</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Blue size=5&gt;result&lt;/font&gt;</strong></td> <td style="text-align: left;">无</td> </tr> </tbody> </table> <p><strong>调用示例</strong></p> <pre><code class="language-python">mem.mode.plot_interest(interest) </code></pre> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=5fbdb8bb8d43ef476695deb70ad77edc" alt="" /></p> <h1>属性综合检验</h1> <p>&lt;font face=&quot;黑体&quot; color=Blue size=4&gt;<strong>feature_merged_analyzer(look_merge,summary =True)</strong>&lt;/font&gt; </p> <p>基于合并后的目标结果,计算匹配目标的属性和相似性等检验指标 </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> <tr> <td style="text-align: left;"><strong>summary</strong></td> <td style="text-align: center;">当该参数为True时返回相对重要的目标属性,否则返回完整的目标属性</td> <td style="text-align: left;">字符串</td> </tr> </tbody> </table> <p><strong>————————————————————————————————————————————————————————————————————————————————————————————————————————————</strong> &lt;font face=&quot;黑体&quot; color=Green size=4&gt;<strong>feature_merged_analyzer函数返回结果内容说明</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;feature_axis&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;">当return_all_info为True时&lt;br&gt;其内容如feature_axis函数返回结果&lt;br&gt;&lt;br&gt;当为False时,仅保留了部分属性如下:</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Green size=3&gt;lengths&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;MajorAxis&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;MinorAxis&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;"><strong>&lt;font face=&quot;黑体&quot; color=Green size=3&gt;MajorAxis&lt;/font&gt;</strong></td> <td style="text-align: left;">长轴的角度</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>window</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;x0&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;y0&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;x1&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;y1&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;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;feature_props&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;">当return_all_info为True时,&lt;br&gt;其内容如feature_axis函数返回结果,&lt;br&gt;&lt;br&gt;当为False时,仅保留了部分属性如下:</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;area&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;intensity&lt;/font&gt;</strong></td> <td style="text-align: left;"></td> <td style="text-align: left;">强度</td> <td style="text-align: left;">50%,75%,90%,95%分位值和最大值</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;feature_comps&lt;/font&gt;</strong></td> <td style="text-align: left;"></td> <td style="text-align: left;">编号为1的观测和预报目标的属性对比结果</td> <td style="text-align: left;">参考上文当中feature_comps函数返回结果</td> </tr> <tr> <td style="text-align: left;">2</td> <td style="text-align: left;">编号为2的观测和预报属性,形式如同1</td> </tr> <tr> <td style="text-align: left;">...</td> <td style="text-align: left;">其它编号的观测和预报属性,形式如同1</td> </tr> </tbody> </table> <p><strong>调用示例</strong></p> <pre><code class="language-python">features = mem.mode.feature_merged_analyzer(look_merge) print(features)</code></pre> <pre><code>{'time': '20200726080000', 'dtime': 3, 'match_count': 3, 'feature_table': {'contingency_table_yesorno': {'Hits': 3, 'Misses': 2, 'False alarms': 1, 'Correct negatives': 11}, 'score': {'ets': 0.3780487804878049, 'pod': 0.6, 'pofd': 0.08333333333333333, 'far': 0.25, 'hss': 0.5486725663716814}}, 'interester': array([0.93977305, 0.86223488, 0.12578828]), 'label_list_matched': [1, 2, 3], 1: {'feature_axis': {'ob': {'OrientationAngle': {'MajorAxis': 20.11901016420611}, 'window': {'x0': 100.74832929646156, 'y0': 26.56545402038646, 'x1': 114.48911737308366, 'y1': 31.599038615113024}, 'lengths': {'MajorAxis': 14.911140441894531, 'MinorAxis': 4.129219055175781}}, 'fo': {'OrientationAngle': {'MajorAxis': 15.892156580575008}, 'window': {'x0': 99.82237827751341, 'y0': 27.24916123936784, 'x1': 114.32949485951625, 'y1': 31.379475112658856}, 'lengths': {'MajorAxis': 13.358673095703125, 'MinorAxis': 4.61189079284668}}}, 'feature_props': {'ob': {'centroid': {'x': 107.88866195339094, 'y': 29.283929039015447}, 'area': 19.095000000000002, 'intensity': array([ 0.541 , 4.630582, 5.3786 , 7.11403 , 10.85898 , 16.4565 , 24.577056, 30.776924, 64.567 ])}, 'fo': {'centroid': {'x': 107.04576409495549, 'y': 29.382477744807122}, 'area': 16.85, 'intensity': array([ 1.232 , 4.943352, 5.27852 , 6.25505 , 8.76362 , 14.46807 , 20.880472, 24.133796, 67.953 ])}}, 'feature_comps': {'cent_dist': 0.8486392915534146, 'angle_diff': 4.2268535836311, 'area_ratio': 0.8824299554857292, 'int_area': 0.44915843650020865, 'bearing': -97.43184836905593, 'bdelta': 12.008693360422289, 'haus': 37.48332962798263, 'medMiss': 6.897734710018313, 'medFalseAlarm': 4.299154804274933, 'msdMiss': 134.55826132495417, 'msdFalseAlarm': 53.89836795252226, 'ph': 37.20215047547655, 'fom': 0.5583842014735484, 'minsep': 0.0}}, 2: {'feature_axis': {'ob': {'OrientationAngle': {'MajorAxis': 35.35814369514687}, 'window': {'x0': 113.99966645838799, 'y0': 32.67928035976142, 'x1': 117.19654019799334, 'y1': 34.94766720058173}, 'lengths': {'MajorAxis': 3.7828826904296875, 'MinorAxis': 1.6495437622070312}}, 'fo': {'OrientationAngle': {'MajorAxis': 18.237162599014844}, 'window': {'x0': 113.38033998750261, 'y0': 33.15475128162418, 'x1': 117.83760234604989, 'y1': 34.62342880237613}, 'lengths': {'MajorAxis': 3.9517288208007812, 'MinorAxis': 2.29400634765625}}}, 'feature_props': {'ob': {'centroid': {'x': 115.47304890738815, 'y': 33.655254942767954}, 'area': 2.4025000000000003, 'intensity': array([ 2.247 , 4.53776, 4.95588, 5.8338 , 7.60692, 11.13892, 15.8404 , 17.8984 , 22.76 ])}, 'fo': {'centroid': {'x': 115.3669046073978, 'y': 33.91891628812459}, 'area': 3.852500000000001, 'intensity': array([ 3.7394 , 4.97616, 5.24 , 5.77 , 6.5776 , 7.71924, 9.334 , 10.87696, 13.329 ])}}, 'feature_comps': {'cent_dist': 0.2842251175665399, 'angle_diff': 17.120981096132024, 'area_ratio': 0.6236210253082414, 'int_area': 0.4372501998401279, 'bearing': -161.47091154710455, 'bdelta': 5.654012277392105, 'haus': 15.264337522473747, 'medMiss': 1.5766859504678303, 'medFalseAlarm': 3.6701803712179886, 'msdMiss': 8.186264308012486, 'msdFalseAlarm': 28.142764438676185, 'ph': 15.264337522473747, 'fom': 0.49542635892850817, 'minsep': 0.0}}, 3: {'feature_axis': {'ob': {'OrientationAngle': {'MajorAxis': 177.82832973422012}, 'window': {'x0': 130.22769422944828, 'y0': 29.723867968379885, 'x1': 108.22188809432862, 'y1': 30.558349207698733}, 'lengths': {'MajorAxis': 2.7056427001953125, 'MinorAxis': 1.64312744140625}}, 'fo': {'OrientationAngle': {'MajorAxis': 176.80821019221256}, 'window': {'x0': 119.33523016566336, 'y0': 30.93003606216854, 'x1': 115.97204731481283, 'y1': 31.11758374588436}, 'lengths': {'MajorAxis': 0.8071136474609375, 'MinorAxis': 0.36338043212890625}}}, 'feature_props': {'ob': {'centroid': {'x': 118.72362707535122, 'y': 30.050893997445723}, 'area': 1.9575000000000005, 'intensity': array([ 0. , 3.950936, 4.72136 , 6.5124 , 9.17468 , 13.11744 , 18.172944, 22.659332, 34.007 ])}, 'fo': {'centroid': {'x': 117.73831775700936, 'y': 31.027570093457943}, 'area': 0.2675, 'intensity': array([5.02208 , 5.217232, 5.401976, 5.8664 , 6.66584 , 7.66758 , 8.515904, 9.20494 , 9.954 ])}}, 'feature_comps': {'cent_dist': 1.3873466219128425, 'angle_diff': 1.0201195420075595, 'area_ratio': 0.1366538952745849, 'int_area': 0.0, 'bearing': -138.76141071255992, 'bdelta': 12.175923723890175, 'haus': 42.5440947723653, 'medMiss': 23.38267939724419, 'medFalseAlarm': 13.052073214207182, 'msdMiss': 617.1264367816092, 'msdFalseAlarm': 183.34579439252337, 'ph': 42.190046219457976, 'fom': 0.028489708244377614, 'minsep': 5.385164807134504}}}</code></pre> <h1>绘制检验概要</h1> <p>&lt;font face=&quot;黑体&quot; color=Blue size=3&gt;<strong>plot_feature(feature,save_path = None,show = False)</strong>&lt;/font&gt; </p> <p>根据输入的观测和预报网格数据, 完成目标识别、匹配、合并和检验的完整步骤。 </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;feature&lt;/font&gt;</strong></td> <td style="text-align: center;">feature_merged_analyzer函数返回的结果</td> <td style="text-align: left;">字典</td> </tr> <tr> <td style="text-align: left;"><strong>save_path</strong></td> <td style="text-align: center;">图片保存路径,缺省时不输出图片,而是以默认绘图窗口形式展示</td> </tr> <tr> <td style="text-align: left;"><strong>show</strong></td> <td style="text-align: center;">是否在屏幕显示图片,如果save_path 为None时,程序内部会自动将show设置True</td> </tr> <tr> <td style="text-align: left;"><strong>dpi</strong></td> <td style="text-align: center;">图片的分辨率,效果同matplotlib的dpi参数</td> </tr> <tr> <td style="text-align: left;"><strong>sup_fontsize</strong></td> <td style="text-align: center;">图片标题的字体大小,其它字体将根据标题字体大小自动设置,其中坐标轴字体大小 = sup_fontsize <em> 0.9, 坐标刻度的字体大小 = sup_fontsize </em> 0.8</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Blue size=5&gt;result&lt;/font&gt;</strong></td> <td style="text-align: center;">无</td> </tr> </tbody> </table> <p><strong>调用示例</strong></p> <pre><code class="language-python">mem.mode.plot_feature(features, save_path = r&amp;quot;H:\test_data\output\method\space\mode\tabel\a.png&amp;quot;,show = True)</code></pre> <pre><code>图片已保存至H:\test_data\output\method\space\mode\tabel\a.png</code></pre> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=f9e422706b3549c1e712c7dbea181ada" alt="" /></p> <pre><code class="language-python"></code></pre> <h1>检验综合函数</h1> <p>&lt;font face=&quot;黑体&quot; color=Blue size=3&gt;<strong>operate(grd_ob, grd_fo, smooth, threshold,minsize,compare = &quot;&gt;=&quot;,match_method = mem.mode.centmatch,return_all_info =False, save_dir = None)</strong>&lt;/font&gt;<br /> 根据输入的观测和预报网格数据, 完成目标识别、匹配、合并和检验的完整步骤。 </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;grd_ob&lt;/font&gt;</strong></td> <td style="text-align: center;">网格观测数据</td> <td style="text-align: left;"><a href="https://www.showdoc.com.cn/meteva?page_id=3975600815874861">网格数据格式</a></td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Blue size=5&gt;grd_fo&lt;/font&gt;</strong></td> <td style="text-align: center;">网格预报数据</td> <td style="text-align: left;"><a href="https://www.showdoc.com.cn/meteva?page_id=3975600815874861">网格数据格式</a></td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Blue size=5&gt;smooth&lt;/font&gt;</strong></td> <td style="text-align: center;">平滑系数,采用圆盘形的卷积内核对网格数据进行平滑,smooth相当圆盘的半径</td> <td style="text-align: left;">可以为单个整数或列表形式,当其为单个整数时,观测和预报采用相同的参数,否则相应采用不同的参数,如smooth = [5, 4]。平滑系数为0时不做平滑</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Blue size=5&gt;threshold&lt;/font&gt;</strong></td> <td style="text-align: center;">雨量阈值,平滑后低于阈值的部分会被置0</td> <td style="text-align: left;">可以为单个实数或列表形式,当其为单个实数时,观测和预报采用相同的参数,否则相应采用不同的参数,,如threshold = [9,10]</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Blue size=5&gt;minsize&lt;/font&gt;</strong></td> <td style="text-align: center;">目标的最小面积,面积小于该阈值的目标将会被删除</td> <td style="text-align: left;">可以为单个整数或列表形式,当其为单个整数时,观测和预报采用相同的参数,否则相应采用不同的参数,&lt;br&gt;如minsize = [5, 4],此列表中的数值表示的是格点数。</td> </tr> <tr> <td style="text-align: left;"><strong>compare</strong></td> <td style="text-align: center;">比较方法,可选项包括&quot;&gt;=&quot;,&quot;&gt;&quot;,&quot;&lt;=&quot;,&quot;&lt;&quot;</td> <td style="text-align: left;">当关注目标是要素场大于阈值时,采用默认参数,如识别暴雨目标时选择参数&quot;&gt;=&quot;,若关注对象是要素值小于阈值时,则可选取&quot;&lt;=&quot;,如根据能见度场识别大雾目标</td> </tr> <tr> <td style="text-align: left;"><strong>match_method</strong></td> <td style="text-align: center;">目标匹配采用的方法</td> <td style="text-align: left;">可选项包括 mem.mode.centmatch,&lt;br&gt;mem.mode.deltamm,&lt;br&gt;mem.mode.minboundmatch</td> </tr> <tr> <td style="text-align: left;"><strong>summary</strong></td> <td style="text-align: center;">当该参数为True时返回相对重要的目标属性,否则返回完整的目标属性</td> <td style="text-align: left;">布尔型</td> </tr> <tr> <td style="text-align: left;"><strong>save_dir</strong></td> <td style="text-align: center;">计算结果的输出目录,输出的结果包括4个部分,第一个部分是以netcdf格式输出预报和观测编号,第二部分是以图片形式输出输出原始场、平滑场和编号场,第三部分是以json格式输出检验结果概要,第四部分以图片形式输出检验结果概要</td> <td style="text-align: left;">字符串</td> </tr> <tr> <td style="text-align: left;"><strong>show</strong></td> <td style="text-align: center;">是否在屏幕显示图片,如果save_dir 为都None时,程序内部会自动将show设置True</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=Blue size=5&gt;return&lt;/font&gt;</strong></td> <td style="text-align: center;">成功匹配的目标的属性及检验结果</td> <td style="text-align: left;">字典,内容如feature_merged_analyzer函数的返回结果</td> </tr> </tbody> </table> <p><strong>调用示例</strong></p> <pre><code class="language-python">features = mem.mode.operate(grd_ob,grd_fo_27,smooth = 5,threshold = 5,minsize = 5, match_method = mem.mode.centmatch, cmap = &amp;quot;rain_3h&amp;quot;,clevs = np.arange(0,61,3), save_dir = r&amp;quot;H:\test_data\output\method\space\mode&amp;quot;,show = True) </code></pre> <pre><code>目标编号场已经输出至 H:\test_data\output\method\space\mode/label/2020072508.027.nc 图片已保存至H:\test_data\output\method\space\mode/png/2020072508.027.png</code></pre> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=3673d2be27902e85e08559707202eecd" alt="" /></p> <pre><code>目标属性检验结果已经输出至 H:\test_data\output\method\space\mode/json/2020072508.027.txt 图片已保存至H:\test_data\output\method\space\mode/table/2020072508.027.png</code></pre> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=ac2afd3a64350c8265fa746f8f64a2a9" alt="" /></p>

页面列表

ITEM_HTML