stda拓展接口
<p>[TOC]</p>
<p><strong>stda拓展接口</strong></p>
<p>采用xr.register_dataarray_accessor和pd.api.extensions.register_dataframe_accessor注册了网格stda和站点stda接口,方便用户调用。</p>
<p>网格stda和站点stda接口属性和方法名均保持一致,特殊方法在函数说明中说明。</p>
<p>拓展接口均采用".stda."方法调用,如:</p>
<pre><code class="language-python">import metdig
data = xr.DataArray([[271, 272, 273], [274, 275, 276]], dims=("X", "Y"), coords={"X": [10, 20], 'Y': [80, 90, 100]})
data = metdig.utl.xrda_to_gridstda(xrda, lon_dim='X', lat_dim='Y', member=['cassandra'], np_input_units='K', var_name='tmp')
print(data.stda.lon)
print(data.stda.lat)
print(data.stda.values)
print(data.stda.description())</code></pre>
<h1>属性</h1>
<p><font size='4'><b>member</b></font></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;">pd.series</td>
<td style="text-align: left;">获取member维度数据</td>
</tr>
</tbody>
</table>
<p><font size='4'><b>level</b></font></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;">pd.series</td>
<td style="text-align: left;">获取level维度数据</td>
</tr>
</tbody>
</table>
<p><font size='4'><b>fcst_time</b></font></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;">pd.series</td>
<td style="text-align: left;">获取fcst_time(timexdtime)维度数据</td>
</tr>
</tbody>
</table>
<p><font size='4'><b>time</b></font></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;">pd.series</td>
<td style="text-align: left;">获取time维度数据</td>
</tr>
</tbody>
</table>
<p><font size='4'><b>dtime</b></font></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;">pd.series</td>
<td style="text-align: left;">获取dtime维度数据</td>
</tr>
</tbody>
</table>
<p><font size='4'><b>id</b></font></p>
<p>仅支持站点型stda</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;">pd.series</td>
<td style="text-align: left;">获取id维度数据</td>
</tr>
</tbody>
</table>
<p><font size='4'><b>lat</b></font></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;">pd.series</td>
<td style="text-align: left;">获取lat维度数据</td>
</tr>
</tbody>
</table>
<p><font size='4'><b>lon</b></font></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;">pd.series</td>
<td style="text-align: left;">获取lon维度数据</td>
</tr>
</tbody>
</table>
<p><font size='4'><b>values</b></font></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;">numpy</td>
<td style="text-align: left;">获取stda数据</td>
</tr>
</tbody>
</table>
<p><font size='4'><b>quantity</b></font></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;">quantity numpy</td>
<td style="text-align: left;">获取带单位的数据</td>
</tr>
</tbody>
</table>
<h1>设置stda数据</h1>
<p>设置stda数据,如果给定var_name,则自动赋值stda属性</p>
<pre><code class="language-python">set_values(values, var_name=None, **attrs_kwargv)</code></pre>
<p><font size='4'><b>参数说明</b></font></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;">values</td>
<td style="text-align: left;"><font color='red'>是</font></td>
<td style="text-align: left;">array_like</td>
<td style="text-align: left;">values</td>
</tr>
<tr>
<td style="text-align: left;">var_name</td>
<td style="text-align: left;"><font color='red'>否</font></td>
<td style="text-align: left;">str</td>
<td style="text-align: left;">要素名</td>
</tr>
</tbody>
</table>
<table>
<thead>
<tr>
<th style="text-align: left;">其他参数<code>**attrs_kwargv</code></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;">data_source</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">str</td>
<td style="text-align: left;">数据源</td>
</tr>
<tr>
<td style="text-align: left;">data_type</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">str</td>
<td style="text-align: left;">数据类型</td>
</tr>
<tr>
<td style="text-align: left;">data_name</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">str</td>
<td style="text-align: left;">模式名</td>
</tr>
</tbody>
</table>
<h1>获取维度数据</h1>
<p>获取维度数据,如果dim_name='fcst_time'情况下,特殊处理,返回time*dtime</p>
<pre><code class="language-python">get_dim_value(dim_name)</code></pre>
<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;">dim_name</td>
<td style="text-align: left;"><font color='red'>是</font></td>
<td style="text-align: left;">str</td>
<td style="text-align: left;">维度名</td>
</tr>
</tbody>
</table>
<table>
<thead>
<tr>
<th style="text-align: left;">返回值</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">numpy</td>
<td style="text-align: left;">维度数据</td>
</tr>
</tbody>
</table>
<h1>根据维度名获取stda数据</h1>
<p>根据维度名获取stda数据,
注:
1、网格stda仅支持二维,非二维数据调用该函数会报错
2、站点stda为pd.DataFrame,无意义,故忽略xdim ydim两个参数</p>
<pre><code class="language-python">get_value(ydim='lat', xdim='lon')</code></pre>
<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;">ydim</td>
<td style="text-align: left;"><font color='red'>否</font></td>
<td style="text-align: left;">str</td>
<td style="text-align: left;">维度名</td>
</tr>
<tr>
<td style="text-align: left;">xdim</td>
<td style="text-align: left;"><font color='red'>否</font></td>
<td style="text-align: left;">str</td>
<td style="text-align: left;">维度名</td>
</tr>
</tbody>
</table>
<table>
<thead>
<tr>
<th style="text-align: left;">返回值</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">numpy</td>
<td style="text-align: left;">stda数据</td>
</tr>
</tbody>
</table>
<h1>获取预报描述信息</h1>
<p>获取描述信息,格式如下:
起报时间: Y年m月d日H时
预报时间: Y年m月d日H时
预报时效: 小时</p>
<pre><code class="language-python">description()</code></pre>
<table>
<thead>
<tr>
<th style="text-align: left;">返回值</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">str</td>
<td style="text-align: left;">描述信息</td>
</tr>
</tbody>
</table>
<h1>获取站点描述信息</h1>
<p>获取描述信息,格式如下:
起报时间: Y年m月d日H时
[data_name]N小时预报[describe]
预报点: lon, lat</p>
<p>起报时间: Y年m月d日H时
[data_name]实况info
分析点: lon, lat</p>
<pre><code class="language-python">description_point(describe='')</code></pre>
<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;">describe</td>
<td style="text-align: left;"><font color='red'>否</font></td>
<td style="text-align: left;">str</td>
<td style="text-align: left;">自定义描述</td>
</tr>
</tbody>
</table>
<table>
<thead>
<tr>
<th style="text-align: left;">返回值</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">str</td>
<td style="text-align: left;">描述信息</td>
</tr>
</tbody>
</table>
<h1>过滤数据</h1>
<p>根据conditon条件过滤数据,类似于xr.DataArray.where</p>
<pre><code class="language-python">where(conditon, other=np.nan)</code></pre>
<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;">conditon</td>
<td style="text-align: left;"><font color='red'>是</font></td>
<td style="text-align: left;">array_like</td>
<td style="text-align: left;">判断条件,必须是bool类型数组</td>
</tr>
<tr>
<td style="text-align: left;">other</td>
<td style="text-align: left;"><font color='red'>否</font></td>
<td style="text-align: left;">str</td>
<td style="text-align: left;">填充值</td>
</tr>
</tbody>
</table>
<table>
<thead>
<tr>
<th style="text-align: left;">返回值</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">str</td>
<td style="text-align: left;">描述信息</td>
</tr>
</tbody>
</table>