gpt4 book ai didi

python - 将来自一个纬度-经度网格的数据插值到另一个网格中?

转载 作者:行者123 更新时间:2023-11-28 17:29:16 26 4
gpt4 key购买 nike

我有两个位于经纬度网格上的数据数组。第一个 A 的形状为 (89, 180)。第二个 B 的形状为 (94, 192)。 A 的纬度从 88. 到 -88. 降序排列。 & 经度从 0. 到 358 升序。B 的纬度从 88.54199982 到 -88.54199982 降序 & 经度从 0. 到 358.125 升序。

我想将 B 的数据重新网格化/插值到 A 的坐标系中,这样我就可以获得相同大小的两个数组并计算它们之间的空间相关性。 (如果更容易的话,我也可以将 A 的数据重新网格化/插入到 B 的坐标系中。)我尝试了 mpl_toolkits.basemap.interp(datain, xin, yin, xout, yout),但这需要 xout 和 yout 的大小相同。我也尝试过 scipy.interpolate.griddata,但我无法弄清楚它是如何工作的,我什至不确定它是否能满足我的需求...

最佳答案

您可能需要查看 pyresample 以了解此问题和其他类似的地理插值问题。它提供了多种插值方法,可以很好地处理纬度/经度数据,并包含 basemap 支持。我建议使用此包,因为您还可以创建使用 Proj4 定义定义域的 AreaDefinition 对象,然后将数据注册到 AreaDefinition

针对您的具体问题,我将执行以下操作(注意,插值步骤未完成,请参见下文):

from pyresample.geometry import SwathDefinition
from pyresample.kd_tree import resample_nearest

def interp_b_to_a(a, b):
'''Take in two dictionaries of arrays and interpolate the second to the first.
The dictionaries must contain the following keys: "data", "lats", "lons"
whose values must be numpy arrays.
'''
def_a = SwathDefinition(lons=a['lons'], lats=a['lats'])
def_b = SwathDefinition(lons=b['lons'], lats=b['lats'])

interp_dat = resample_nearest(def_b, b['data'], def_a, ...)
new_b = {'data':interp_dat,
'lats':copy(a['lats']),
'lons':copy(a['lons'])
}
return new_b

请注意,调用 resample_nearest 的插值步骤并不完整。您还需要指定 radius_of_influence,这是要在每个点周围使用的搜索半径(以米为单位)。这取决于数据的分辨率。您可能还想指定 nprocs 来加快处理速度,如果您使用的是屏蔽数据,则可能还想指定 fill_value

关于python - 将来自一个纬度-经度网格的数据插值到另一个网格中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35734070/

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