gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 13:44:39 25 4
gpt4 key购买 nike

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

我正在使用的网格不是矩形的,所以常规的双线性插值似乎不是最好的方法;不过,这只是为了让我使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com