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

标签 python interpolation latitude-longitude

我有两个位于经纬度网格上的数据数组。第一个 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/

相关文章:

C# Spline Interpolation 用于在点数组之间插入一个键

python - 使用 Pandas 的 numpy 插值

encoding - 用于存储纬度和经度的正确/最佳类型

python - 第一行和最后一行将热图图切成两半

python - 使用 Instagram API 获取 Instagram 中用户的关注者数量

python - 检查大量 numpy 矩阵中的三角不等式

ruby-on-rails - 字符串插值不适用于 Ruby heredoc 常量

javascript - 将 lat/lng 坐标转换为给定 map 上的像素(使用 JavaScript)

java - 如何使用j2ee应用程序查找iPhone当前位置的纬度和经度

python - TypeError : jsonify() argument after ** must be a mapping, 未列出使用 Flask 返回的 JSON