NCL--插值

1. 将二维网格数据插值到网格。

就是为了将NCEP月资料2.5度网格插值到1度网格,与日资料进行相应计算。

linint2

;二维插值 lat and lon from 2.5 to 1

u_avg_2=linint2 (lon_0,lat_0,u_avg_1, True, lon_1,lat_1, 0)

lon_0,lat_0:原始经纬度,单调递增(划重点,否则会出现缺省值)

lon_1,lat_1:插值经纬度,单调递增

http://www.ncl.ucar.edu/Document/Functions/Built-in/linint2.shtml

2. 一维插值 p 

linint1_n_Wrap

u_avg=linint1_n_Wrap (p_0,u_avg_2, False, p_1, 0, 0)

p_0:原始气压,单调递增或递减

p_1:插值气压,单调递增或递减(递增或递减两者保持一致)

http://www.ncl.ucar.edu/Document/Functions/Built-in/linint1_n.shtml

3. 曲线网格插值到直线网格

rcm2rgrid和rcm2rgrid_Wrap函数可以用于将WRF等模式产品插值到标准网格上

官网说明

http://www.ncl.ucar.edu/Document/Functions/Built-in/rcm2rgrid.shtml

emi_grid = rcm2rgrid_Wrap(lat_emi,lon_emi,emi_mean,lat_grid,lon_grid,0)

需要注意的点:

标准网格的经纬度都是一维的,且为单调递增

如果插值前的数据中有缺省值,必须给出定义emi_mean@_FillValue=-9999

此外关于插值还有系列函数,可以去官网仔细查看

rgrid2rcm:从直线网格插值到曲线网格

rcm2points:从曲线网格插值到不规则站点

triple2grid:将不规则站点数据填充到最近的直线网格

最近使用了一下triple2grid,将站点数据插值到与再分析资料匹配的网格。由于我的站点资料非常细,option选的false,计算速度很快。

triple2grid2d:将不规则站点数据填充到最近的曲线网格

4. 站点数据插值成格点

;读取原始数据及其经纬度

a = asciiread("/public/home/ncl/wrfout/pm25-2013-11-china.txt",(/row,col/),"float")

lat = a(:,1)

lon = a(:,2)

pm25 = a(:,3)

olon=fspan(72,138,132);设置插值范围及格点数,即空间分辨率

olat=fspan(17,57,80)

olon!0   = "lon"

olon@long_name = "lon"

olon@units = "degrees-east"

olon&lon  = olon

olat!0   = "lat"

olat@long_name = "lat"

olat@units = "degrees_north"

olat&lat  = olat

rscan = (/10,5,3/);连续的有效半径大小,最大为10,依次递减

pm25_reshape = obj_anal_ic_deprecated(lon,lat,pm25,olon,olat,rscan, False) ;Creanm插值

Creanm插值会对高值有所损耗,但空间分布结果最为合理。

通过调整rsan来控制选取的影响范围,rsacn数值越大,影响范围越大,选取影响点越多,曲线越平滑,但是相对来说更容易失真。rsacn的选取单位为维度。例如,上述例子所使用的插值分辨率为0.5deg,影响半径为10,其影响范围为10个纬度,20个格点*20个格点,导致其插值结果失真比较严重。

下图为插值前后的对比,图1为未插值,直接用contour函数画出的图;图二rscan为 (/10,5,3/) ;图三rscan为 (/2,1,0.5/) 。


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容