meteva

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


插值

<p>[TOC]</p> <pre><code class="language-python">%matplotlib inline %load_ext autoreload %autoreload 2 import meteva.base as meb import numpy as np</code></pre> <h1>格点—&gt;站点 临近点插值</h1> <p><strong><font face="黑体" color=blue size = 5>interp_gs_nearest(grd,sta,used_coords = &quot;xy&quot;)</font></strong><br /> 将水平网格数据插值到平面的离散站点上,对于每一个站点,其取值设置为周围四个网格点中最近的一个格点的取值。 </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><font face="黑体" color=blue size = 5>grd</font></strong></td> <td style="text-align: left;"><a href="https://www.showdoc.cc/meteva?page_id=3975600815874861">网格数据</a></td> </tr> <tr> <td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>sta</font></strong></td> <td style="text-align: left;"><a href="https://www.showdoc.cc/meteva?page_id=3975600580125986">站点数据</a></td> </tr> <tr> <td style="text-align: left;"><strong>used_coords</strong></td> <td style="text-align: left;">插值操作使用的维度,缺省情况下插值操作只在水平方向实现,此时返回的站点数据中id、lon、lat三列的取值会和sta一致,经纬度超出网格范围的站点将被删除,而level,time,dtime参数采用grd里的坐标信息。目前,该函数仅支持该参数缺省时的功能,该参数为其它选项时对应的功能待完善中。</td> </tr> <tr> <td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td> <td style="text-align: left;"><a href="https://www.showdoc.cc/meteva?page_id=3975600580125986">站点数据</a>,其站点列表由sta处于grd网格范围内的站点列表确定</td> </tr> </tbody> </table> <p><strong>调用示例</strong></p> <pre><code class="language-python">grid0 = meb.grid([100,102,1],[20,22,1],gtime=["2019013108"],dtime_list = [24],level_list = [500,700],member_list = ["GRAPES"]) x= np.arange(3) y= np.arange(3) dat = np.array(np.meshgrid(x,y)) grd = meb.grid_data(grid0,dat) #根据网格信息和numpy数组生成网格数 print(grd)</code></pre> <pre><code>&lt;xarray.DataArray 'data0' (member: 1, level: 2, time: 1, dtime: 1, lat: 3, lon: 3)&gt; array([[[[[[0, 1, 2], [0, 1, 2], [0, 1, 2]]]], [[[[0, 0, 0], [1, 1, 1], [2, 2, 2]]]]]]) Coordinates: * member (member) &lt;U6 'GRAPES' * level (level) int32 500 700 * time (time) datetime64[ns] 2019-01-31T08:00:00 * dtime (dtime) int32 24 * lat (lat) int32 20 21 22 * lon (lon) int32 100 101 102</code></pre> <pre><code class="language-python">station = meb.read_station(meb.station_国家站) meb.set_stadata_coords(station,level = 600) print(station)</code></pre> <pre><code> level time dtime id lon lat data0 0 600 2099-01-01 08:00:00 0 50136 122.52 52.97 0 1 600 2099-01-01 08:00:00 0 50137 122.37 53.47 0 2 600 2099-01-01 08:00:00 0 50246 124.72 52.35 0 3 600 2099-01-01 08:00:00 0 50247 123.57 52.03 0 4 600 2099-01-01 08:00:00 0 50349 124.40 51.67 0 ... ... ... ... ... ... ... ... 2406 600 2099-01-01 08:00:00 0 59945 109.70 18.65 0 2407 600 2099-01-01 08:00:00 0 59948 109.58 18.22 0 2408 600 2099-01-01 08:00:00 0 59951 110.33 18.80 0 2409 600 2099-01-01 08:00:00 0 59954 110.03 18.55 0 2410 600 2099-01-01 08:00:00 0 59981 112.33 16.83 0 [2411 rows x 7 columns]</code></pre> <pre><code class="language-python">sta = meb.interp_gs_nearest(grd,station) print(sta) #used_coords缺省时,返回数据的level,time和dtime和grd里取值一致,由于level有两层,因此插值结果中每个id会出现两次 </code></pre> <pre><code> level time dtime id lon lat GRAPES 1271 500 2019-01-31 08:00:00 24 56958 100.42 21.92 0 1272 500 2019-01-31 08:00:00 24 56959 100.78 22.00 0 1277 500 2019-01-31 08:00:00 24 56969 101.58 21.47 1 1271 700 2019-01-31 08:00:00 24 56958 100.42 21.92 1 1272 700 2019-01-31 08:00:00 24 56959 100.78 22.00 2 1277 700 2019-01-31 08:00:00 24 56969 101.58 21.47 1</code></pre> <h1>格点—&gt;站点 双线性插值</h1> <p><strong><font face="黑体" color=blue size = 5>interp_gs_linear(grd,sta,used_coords =&quot;xy&quot;)</font></strong><br /> 将水平网格数据插值到平面的离散站点上,对于每一个站点,其取值利用周围四个网格点进行双线性插值获得 </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><font face="黑体" color=blue size = 5>grd</font></strong></td> <td style="text-align: left;"><a href="https://www.showdoc.cc/meteva?page_id=3975600815874861">网格数据</a></td> </tr> <tr> <td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>sta</font></strong></td> <td style="text-align: left;"><a href="https://www.showdoc.cc/meteva?page_id=3975600580125986">站点数据</a></td> </tr> <tr> <td style="text-align: left;"><strong>used_coords</strong></td> <td style="text-align: left;">插值操作使用的维度,该参数包括如下选项: 当该参数为&quot;xy&quot;时,插值操作只在水平方向实现,此时返回的站点数据中id、lon、lat三列的取值会和sta一致,经纬度超出网格范围的站点将被删除,而level,time,dtime参数采用grd里的坐标信息;当该参数为&quot;xyz&quot;时,插值操作只在lon,lat,level三个空间维度实现,此时返回的站点数据中id、lon、lat,level四列的取值会和sta一致,经纬度超出网格范围的站点将被删除,而time,dtime参数采用grd里的坐标信息;</td> </tr> <tr> <td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td> <td style="text-align: left;"><a href="https://www.showdoc.cc/meteva?page_id=3975600580125986">站点数据</a>,其站点列表由sta处于grd网格范围内的站点列表确定</td> </tr> </tbody> </table> <p><strong>调用示例</strong></p> <pre><code class="language-python">sta = meb.interp_gs_linear(grd,station) #在二维平面进行插值,level维度会 print(sta) #used_coords缺省时,返回数据的level,time和dtime和grd里取值一致,由于level有两层,因此插值结果中每个id会出现两次 </code></pre> <pre><code> level time dtime id lon lat GRAPES 1271 500 2019-01-31 08:00:00 24 56958 100.42 21.92 0.42 1272 500 2019-01-31 08:00:00 24 56959 100.78 22.00 0.78 1277 500 2019-01-31 08:00:00 24 56969 101.58 21.47 1.58 1271 700 2019-01-31 08:00:00 24 56958 100.42 21.92 1.92 1272 700 2019-01-31 08:00:00 24 56959 100.78 22.00 2.00 1277 700 2019-01-31 08:00:00 24 56969 101.58 21.47 1.47</code></pre> <pre><code class="language-python">sta = meb.interp_gs_linear(grd,station,used_coords = "xyz") print(sta) #used_coords缺省时,返回数据的level,time和dtime和grd里取值一致,由于level有两层,因此插值结果中每个id会出现两次 </code></pre> <pre><code> level time dtime id lon lat GRAPES 1271 600 2019-01-31 08:00:00 24 56958 100.42 21.92 1.170 1272 600 2019-01-31 08:00:00 24 56959 100.78 22.00 1.390 1277 600 2019-01-31 08:00:00 24 56969 101.58 21.47 1.525</code></pre> <pre><code class="language-python">sta = meb.interp_gs_linear(grd,station,used_coords = "xydt") print(sta) #used_coords缺省时,返回数据的level,time和dtime和grd里取值一致,由于level有两层,因此插值结果中每个id会出现两次 </code></pre> <pre><code>dtime维度size = 1,无法开展dtime维度插值 None</code></pre> <h1>格点—&gt;站点 双三次插值</h1> <p><strong><font face="黑体" color=blue size = 5>interp_gs_cubic(grd,sta,used_coords = &quot;xy&quot;)</font></strong><br /> 将水平网格数据插值到平面的离散站点上,对于每一个站点,其取值利用周围九个网格点进行双三次插值获得 </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><font face="黑体" color=blue size = 5>grd</font></strong></td> <td style="text-align: left;"><a href="https://www.showdoc.cc/meteva?page_id=3975600815874861">网格数据</a></td> </tr> <tr> <td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>sta</font></strong></td> <td style="text-align: left;"><a href="https://www.showdoc.cc/meteva?page_id=3975600580125986">站点数据</a></td> </tr> <tr> <td style="text-align: left;"><strong>used_coords</strong></td> <td style="text-align: left;">插值操作使用的维度,缺省情况下插值操作只在水平方向实现,此时返回的站点数据中id、lon、lat三列的取值会和sta一致,经纬度超出网格范围的站点将被删除,而level,time,dtime参数采用grd里的坐标信息。目前,该函数仅支持该参数缺省时的功能,该参数为其它选项时对应的功能待完善中。</td> </tr> <tr> <td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td> <td style="text-align: left;"><a href="https://www.showdoc.cc/meteva?page_id=3975600580125986">站点数据</a>,其站点列表由sta处于grd网格范围内的站点列表确定</td> </tr> </tbody> </table> <p><strong>调用示例</strong></p> <pre><code class="language-python">sta =meb.interp_gs_cubic(grd,station) print(sta)</code></pre> <pre><code> level time dtime id lon lat GRAPES 0 500 2019-01-31 08:00:00 24 56958 100.42 21.92 0.355852 1 500 2019-01-31 08:00:00 24 56959 100.78 22.00 0.745108 2 500 2019-01-31 08:00:00 24 56969 101.58 21.47 1.644148 3 700 2019-01-31 08:00:00 24 56958 100.42 21.92 1.943552 4 700 2019-01-31 08:00:00 24 56959 100.78 22.00 2.000000 5 700 2019-01-31 08:00:00 24 56969 101.58 21.47 1.531029</code></pre> <h1>格点—&gt;格点 双线性插值</h1> <p><strong><font face="黑体" color=blue size = 5>interp_gg_linear(grd,grid,used_coords = &quot;xy&quot;,outer_value = None)</font></strong><br /> 将水平网格数据插值到平面的离散站点上,对于每一个站点,其取值利用周围四个网格点进行双线性插值获得 </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><font face="黑体" color=blue size = 5>grd</font></strong></td> <td style="text-align: left;"><a href="https://www.showdoc.cc/meteva?page_id=3975600815874861">网格数据</a></td> </tr> <tr> <td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>grid</font></strong></td> <td style="text-align: left;"><a href="https://www.showdoc.cc/meteva?page_id=3975600815874861">网格信息类变量</a>,插值的目标网格。</td> </tr> <tr> <td style="text-align: left;"><strong>used_coords</strong></td> <td style="text-align: left;">插值操作使用的维度,缺省情况下插值操作只在水平方向实现,此时返回的网格数据中lon、lat维度的范围和间距由grid确定,其它维度信息由grd确定</td> </tr> <tr> <td style="text-align: left;"><strong>outer_value</strong></td> <td style="text-align: left;">当目标网格范围大于原始数据网格时,设置超出部分的取值为outer_value。如果存在网格超出的情况,就必须设置该参数,否则返回None。</td> </tr> <tr> <td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td> <td style="text-align: left;"><a href="https://www.showdoc.cc/meteva?page_id=3975600815874861">网格数据</a>,网格范围由grid参数确定</td> </tr> </tbody> </table> <p><strong>调用示例</strong></p> <pre><code class="language-python">grid1 = meb.grid([100,102,0.5],[20,22,0.5]) grd1 = meb.interp_gg_linear(grd,grid1) print(grd1)</code></pre> <pre><code>&lt;xarray.DataArray 'data0' (member: 1, level: 2, time: 1, dtime: 1, lat: 5, lon: 5)&gt; array([[[[[[0. , 0.5, 1. , 1.5, 2. ], [0. , 0.5, 1. , 1.5, 2. ], [0. , 0.5, 1. , 1.5, 2. ], [0. , 0.5, 1. , 1.5, 2. ], [0. , 0.5, 1. , 1.5, 2. ]]]], [[[[0. , 0. , 0. , 0. , 0. ], [0.5, 0.5, 0.5, 0.5, 0.5], [1. , 1. , 1. , 1. , 1. ], [1.5, 1.5, 1.5, 1.5, 1.5], [2. , 2. , 2. , 2. , 2. ]]]]]]) Coordinates: * member (member) &lt;U6 'GRAPES' * level (level) int32 500 700 * time (time) datetime64[ns] 2019-01-31T08:00:00 * dtime (dtime) int32 24 * lat (lat) float64 20.0 20.5 21.0 21.5 22.0 * lon (lon) float64 100.0 100.5 101.0 101.5 102.0</code></pre> <pre><code class="language-python">grid1 = meb.grid([100,103,0.5],[20,23,0.5]) grd1 = meb.interp_gg_linear(grd,grid1) print(grd1)</code></pre> <pre><code>当目标网格超出数据网格时,outer_value参数必须赋值 None</code></pre> <pre><code class="language-python">grid1 = meb.grid([100,103,0.5],[20,23,0.5]) grd1 = meb.interp_gg_linear(grd,grid1,outer_value = -1) print(grd1)</code></pre> <pre><code>&lt;xarray.DataArray 'data0' (member: 1, level: 2, time: 1, dtime: 1, lat: 7, lon: 7)&gt; array([[[[[[ 0. , 0.5, 1. , 1.5, 2. , -1. , -1. ], [ 0. , 0.5, 1. , 1.5, 2. , -1. , -1. ], [ 0. , 0.5, 1. , 1.5, 2. , -1. , -1. ], [ 0. , 0.5, 1. , 1.5, 2. , -1. , -1. ], [ 0. , 0.5, 1. , 1.5, 2. , -1. , -1. ], [-1. , -1. , -1. , -1. , -1. , -1. , -1. ], [-1. , -1. , -1. , -1. , -1. , -1. , -1. ]]]], [[[[ 0. , 0. , 0. , 0. , 0. , -1. , -1. ], [ 0.5, 0.5, 0.5, 0.5, 0.5, -1. , -1. ], [ 1. , 1. , 1. , 1. , 1. , -1. , -1. ], [ 1.5, 1.5, 1.5, 1.5, 1.5, -1. , -1. ], [ 2. , 2. , 2. , 2. , 2. , -1. , -1. ], [-1. , -1. , -1. , -1. , -1. , -1. , -1. ], [-1. , -1. , -1. , -1. , -1. , -1. , -1. ]]]]]]) Coordinates: * member (member) &lt;U6 'GRAPES' * level (level) int32 500 700 * time (time) datetime64[ns] 2019-01-31T08:00:00 * dtime (dtime) int32 24 * lat (lat) float64 20.0 20.5 21.0 21.5 22.0 22.5 23.0 * lon (lon) float64 100.0 100.5 101.0 101.5 102.0 102.5 103.0</code></pre> <h1>站点—&gt;格点 反距离权重插值</h1> <p><strong><font face="黑体" color=blue size = 5>interp_sg_idw(sta, grid, background=None, effectR=1000, nearNum=8,decrease = 2):</font></strong> 将站点数据插值到水平网格上 </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><font face="黑体" color=blue size = 5>sta</font></strong></td> <td style="text-align: left;"><a href="https://www.showdoc.cc/meteva?page_id=3975600580125986">站点数据</a>,(暂时只支持sta中只包含单个层次时间时效数据列的情况)</td> </tr> <tr> <td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>grid</font></strong></td> <td style="text-align: left;"><a href="https://www.showdoc.cc/meteva?page_id=3975600815874861">网格数据</a>,插值的目标网格。</td> </tr> <tr> <td style="text-align: left;"><strong>background</strong></td> <td style="text-align: left;">插值背景场,在远离站点的区域内将采用background的值,如果background为None,则取为0</td> </tr> <tr> <td style="text-align: left;"><strong>effectR</strong></td> <td style="text-align: left;">最大的插值半径,单位km</td> </tr> <tr> <td style="text-align: left;"><strong>nearNum</strong></td> <td style="text-align: left;">插值选择的临近站点的个数, nearNum =1时即为临近点插值</td> </tr> <tr> <td style="text-align: left;"><strong>decrease</strong></td> <td style="text-align: left;">站点权重随距离幂次衰减,即 站点权重 = 1 /(距离 ** decrease) ,其中decrease是幂函数的指数部分参数</td> </tr> <tr> <td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td> <td style="text-align: left;"><a href="https://www.showdoc.cc/meteva?page_id=3975600815874861">网格数据</a>,网格范围由grid参数确定</td> </tr> </tbody> </table> <p><strong>调用示例</strong></p> <pre><code class="language-python">grd2 = meb.interp_sg_idw(sta,grid1,nearNum = 2) print(grd2)</code></pre> <pre><code>&lt;xarray.DataArray 'data0' (member: 1, level: 1, time: 1, dtime: 1, lat: 7, lon: 7)&gt; array([[[[[[1.1497020000000016, 1.5875887499999985, 1.5875887499999988, 1.5875887499999985, 1.5875887499999988, 1.5875887499999988, 1.5875887499999988], [1.1497020000000016, 1.5875887499999985, 1.5875887499999988, 1.5875887499999985, 1.5875887499999985, 1.5875887499999985, 1.5875887499999988], [1.1497020000000016, 1.1497020000000016, 1.587588749999999, 1.5875887499999988, 1.5875887499999985, 1.5875887499999985, 1.5875887499999988], [1.1497020000000016, 1.1497020000000016, 1.3725540000000007, 1.5875887499999988, 1.5875887499999985, 1.5875887499999985, 1.5875887499999985], [1.1497020000000016, 1.1497020000000016, 1.3725540000000007, 1.5875887499999985, 1.5875887499999988, 1.5875887499999985, 1.5875887499999985], [1.1497020000000016, 1.3725540000000005, 1.3725540000000007, 1.3725540000000007, 1.5875887499999985, 1.5875887499999988, 1.5875887499999988], [1.1497020000000016, 1.3725540000000007, 1.3725540000000007, 1.3725540000000007, 1.3725540000000007, 1.5875887499999985, 1.5875887499999985]]]]]], dtype=object) Coordinates: * member (member) &lt;U6 'GRAPES' * level (level) int32 500 * time (time) datetime64[ns] 2019-01-31T08:00:00 * dtime (dtime) int32 24 * lat (lat) float64 20.0 20.5 21.0 21.5 22.0 22.5 23.0 * lon (lon) float64 100.0 100.5 101.0 101.5 102.0 102.5 103.0</code></pre> <pre><code class="language-python">station0 = meb.read_station(meb.station_国家站) rain24 = meb.read_stadata_from_micaps3(r"H:\test_data\input\meb\rain24.m3.txt",station = station0) grid0 = meb.grid([70,140,0.1],[15,55,0.1]) import time start = time.time() grd = meb.interp_sg_idw(rain24,grid = grid0) used_time = time.time() - start print("反距离权重插值耗时: " + str(used_time) +"秒") meb.plot_tools.contourf_2d_grid(grd)</code></pre> <pre><code>反距离权重插值耗时: 0.6313118934631348秒</code></pre> <p><img src="https://www.showdoc.cc/server/api/attachment/visitfile/sign/c20a351da919079bfdb94a15ba329baa?showdoc=.jpg" alt="" /></p> <h1>站点—&gt;格点 cressman插值</h1> <p><strong><font face="黑体" color=blue size = 5>interp_sg_cressman(sta0, grid, r_list,background=None , nearNum=100):</font></strong> 将站点数据插值到水平网格上 </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><font face="黑体" color=blue size = 5>sta</font></strong></td> <td style="text-align: left;"><a href="https://www.showdoc.cc/meteva?page_id=3975600580125986">站点数据</a>,(暂时只支持sta中只包含单个层次时间时效数据列的情况)</td> </tr> <tr> <td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>grid</font></strong></td> <td style="text-align: left;"><a href="https://www.showdoc.cc/meteva?page_id=3975600815874861">网格数据</a>,插值的目标网格。</td> </tr> <tr> <td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>r_list</font></strong></td> <td style="text-align: left;">插值的影响半径序列,由大到小排列,单位为km</td> </tr> <tr> <td style="text-align: left;"><strong>background</strong></td> <td style="text-align: left;">插值背景场,在距离最近的站点的距离超过r_list[0]的那些格点将采用background网格数中对应的网格值,如果background为None,则取为0</td> </tr> <tr> <td style="text-align: left;"><strong>nearNum</strong></td> <td style="text-align: left;">插值时所用的最大临近点个数。例如当 r_list = [5000,100]时,则在第一轮插值时基本上做插值时全国的站点(例如2500个)都会用到一个格点的权重计算当中,但这样计算效率会很低,当nearNum = 100时,即使用50000km的半径扫描到2500个站点,实际插值时仅保留100个离格点最近的站点,由此提高计算效率,当半径收缩后,半径内的站点数小于nearNum时,则所有半径范围内的站点都会参与插值</td> </tr> <tr> <td style="text-align: left;"><strong>decrease</strong></td> <td style="text-align: left;">站点权重随距离幂次衰减,即 站点权重 = 1 /(距离 ** decrease) ,其中decrease是幂函数的指数部分参数</td> </tr> <tr> <td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td> <td style="text-align: left;"><a href="https://www.showdoc.cc/meteva?page_id=3975600815874861">网格数据</a>,网格范围由grid参数确定</td> </tr> </tbody> </table> <p><strong>调用示例</strong></p> <pre><code class="language-python">start = time.time() grd1 = meb.interp_sg_cressman(rain24,grid = grid0,r_list = [1000,200,100,50],nearNum = 100) used_time = time.time() - start print("cressman插值耗时: " + str(used_time) +"秒") meb.plot_tools.contourf_2d_grid(grd1)</code></pre> <pre><code>cressman插值耗时: 6.56514310836792秒</code></pre> <p><img src="https://www.showdoc.cc/server/api/attachment/visitfile/sign/26ab731a3e75ee0c83e98ab1ae7bc06a?showdoc=.jpg" alt="" /></p> <pre><code class="language-python">start = time.time() grd1 = meb.interp_sg_cressman(rain24,grid = grid0,r_list = [1000,200,100,50],nearNum =200) used_time = time.time() - start print("cressman插值耗时: " + str(used_time) +"秒") meb.plot_tools.contourf_2d_grid(grd1)</code></pre> <pre><code>cressman插值耗时: 13.275934934616089秒</code></pre> <p><img src="https://www.showdoc.cc/server/api/attachment/visitfile/sign/52bbf137fed588c62e60f4bfd697bf2c?showdoc=.jpg" alt="" /></p> <p>通过上面的例子可以看出,在基于全国2500个站进行降水插值时,nearNum参数从100增大到200对国内的插值效果影响甚微,但耗时增加了近一倍。 </p> <h1>站点—&gt;站点 反距离权重插值</h1> <p><strong><font face="黑体" color=blue size = 5>interp_ss_idw(sta, station, background=None, effectR=1000, nearNum=8):</font></strong> 将站点数据插值到另一套站点上 </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><font face="黑体" color=blue size = 5>sta</font></strong></td> <td style="text-align: left;"><a href="https://www.showdoc.cc/meteva?page_id=3975600580125986">站点数据</a>,(暂时只支持sta中只包含单个层次时间时效数据列的情况)</td> </tr> <tr> <td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>station</font></strong></td> <td style="text-align: left;"><a href="https://www.showdoc.cc/meteva?page_id=3975600580125986">站点数据</a>,插值的目标站点列表</td> </tr> <tr> <td style="text-align: left;"><strong>background</strong></td> <td style="text-align: left;">插值背景场,在远离站点的区域内将采用background的值,如果background为None,则取为0</td> </tr> <tr> <td style="text-align: left;"><strong>effectR</strong></td> <td style="text-align: left;">最大的插值半径,单位km</td> </tr> <tr> <td style="text-align: left;"><strong>nearNum</strong></td> <td style="text-align: left;">插值选择的临近站点的个数, nearNum ==1时即为临近点插值</td> </tr> <tr> <td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td> <td style="text-align: left;"><a href="https://www.showdoc.cc/meteva?page_id=3975600580125986">站点数据</a>,站点列表和station完全一致</td> </tr> </tbody> </table> <p><strong>调用示例</strong></p> <pre><code class="language-python">sta_g = meb.trans_grd_to_sta(grd2) #将网格数据转换成站点形式 station_500 = meb.sele_by_para(sta,level = 500) sta2= meb.interp_ss_idw(sta_g,station = station_500,nearNum = 4) #从站点数据sta_g 插值到 站点列表sta上 print(sta2)</code></pre> <pre><code> level time dtime id lon lat GRAPES 0 500 2019-01-31 08:00:00 24 56958 100.42 21.92 1.157298 1 500 2019-01-31 08:00:00 24 56959 100.78 22.00 1.300249 2 500 2019-01-31 08:00:00 24 56969 101.58 21.47 1.587589</code></pre> <pre><code class="language-python"></code></pre>

页面列表

ITEM_HTML