是否有现成的方法从网格中心位置(红点)外推网格角点位置(蓝点)?在
我使用的网格不是矩形的,所以常规的双线性插值似乎不是最好的方法;不过,这只是为了让我用pyplot.pcolormesh()
来绘制数据,所以这可能并不重要。在
示例网格数据:
import numpy as np
lons = np.array([[ 109.93299681, 109.08091365, 108.18301276, 107.23602539],
[ 108.47911382, 107.60397996, 106.68325946, 105.71386119],
[ 107.06790187, 106.17259769, 105.23214707, 104.2436463 ],
[ 105.69908292, 104.78633156, 103.82905363, 102.82453812]])
lats = np.array([[ 83.6484245 , 83.81088466, 83.97177823, 84.13098916],
[ 83.55459198, 83.71460466, 83.87294803, 84.02950188],
[ 83.4569054 , 83.61444708, 83.77022192, 83.92410637],
[ 83.35554612, 83.51060313, 83.6638013 , 83.81501464]])
这是我使用
pyproj
来首先计算点之间的距离和方位角(使用pyproj.Geod.inv
),然后根据到psi位置的必要距离(使用pyproj.Geod.fwd
)插值/外推该角度。在代码:
示例图片(丹麦/瑞典南部):
我不知道有什么强大的matplotlib技术可以满足您的要求,但我可能有不同的解决方案。我经常要填充/外推到我缺少信息的网格区域。为此,我使用了一个Fortran程序,我使用F2PY(numpy附带的)编译该程序,F2PY将其创建为python模块。假设您有“英特尔Fortran编译器”,请使用以下命令编译它:
f2py verbose fcompiler=intelem -c -m extrapolate fill.f90
。您可以使用以下命令从python调用程序(请参见here获取完整示例):该程序在直角坐标系下用Neumann边界条件(dA/dn=0)求解拉普拉斯方程,在含有“undef”等值的网格点上填充合理值。这对我很有用,也许你会觉得有用。该程序在我的github帐户here上可用。在
相关问题 更多 >
编程相关推荐