python - 将网格从中心坐标重新采样到外部(即角)坐标

标签 python matplotlib matplotlib-basemap

是否有现成的方法可以从网格中心位置(红点)推断出网格角位置(蓝点)?

我正在使用的网格不是矩形的,所以常规的双线性插值似乎不是最好的方法;不过,这只是为了让我使用 pyplot.pcolormesh() 绘制我的数据,所以也许这并不重要。

enter image description here

示例网格数据:

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]])

最佳答案

我不知道有任何强大的 matplotlib 技术可以满足您的要求,但我可能有不同的解决方案。我经常需要填充/外推到我缺少信息的网格区域。为此,我使用了一个 Fortran 程序,该程序使用 F2PY(随 numpy 一起提供)编译,将其创建到 python 模块中。假设您有英特尔 Fortran 编译器,您可以使用以下命令编译它:f2py --verbose --fcompiler=intelem -c -m extrapolate fill.f90。您可以使用 python 调用该程序(完整示例请参见 here):

    import extrapolate as ex
    undef=2.0e+35
    tx=0.9*undef
    critx=0.01
    cor=1.6
    mxs=100

    field = Zg
    field=np.where(abs(field) > 50 ,undef,field)

    field=ex.extrapolate.fill(int(1),int(grdROMS.xi_rho),
                            int(1),int(grdROMS.eta_rho),
                            float(tx), float(critx), float(cor), float(mxs),
                            np.asarray(field, order='Fortran'),
                            int(grdROMS.xi_rho),
                            int(grdROMS.eta_rho))

该程序通过迭代方法在 RECTANGULAR 坐标系中使用 Neumann 边界条件 (dA/dn = 0) 求解拉普拉斯方程,以在包含“undef”等值的网格点处填充合理的值。这对我很有用,也许您会发现它很有用。该程序可在我的 github 帐户上找到 here .

关于python - 将网格从中心坐标重新采样到外部(即角)坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22666937/

相关文章:

matplotlib - 在 mplot3d 中绘制右手坐标系

python - 在 virtualenv 中无法 "import matplotlib.pyplot as plt"

python - 如何为 matplotlib 的 drawgreatcircle 函数制作动画?

python - 将Basemap转换为Cartopy,是否有等价的函数,例如Basemap的shiftgrid()?

python - 在 Drake 中,如何将 NumPy 数组转换为不同的标量类型? (例如,从 float 到 AutoDiffXd 或 Expression?)

python - sys.getsizeof() 结果与结构大小不太相关

python - 启动 shell 时使用 python-dotenv 在 django 应用程序中运行 .env 文件

Python STDIN 读取行 block

python - 如何将绘制的线保持在补丁下?

python - 为什么六边形网格在极坐标立体投影中会变形