Python:将1-D数组(等面积坐标系)转换为2-D数组(地理坐标参考系)

我有一个一维数据数组(例如,降水量[precip])。同时,我有一个1D纬度(最小-90度,最大+90度)和1D经度(最小0,最大360度)数组,代表这个数据的坐标。坐标系是”等面积“. 这是一个全球数据集。

我的问题是,我如何将这个一维阵列转换为具有地理坐标参考系的二维阵列(即等距网格、平行线和子午线),空间分辨率为1乘1度,这样我就会有一个180*360的阵列(最好使用pyproj xarray)?

谢谢!

以下是数据集的信息。

xarray.Dataset

尺寸。 (ECCELL:41252)

无坐标的尺寸:eqcell

数据变量。

lat                (eqcell) float32 dask.array chunksize=(41252,), meta=np.ndarray

lon                (eqcell) float32 dask.array chunksize=(41252,), meta=np.ndarray

precip              (eqcell) float32 dask.array chunksize=(41252,), meta=np.ndarray

解决方案:

看起来你想要的是 scipy.interpolate.griddata. 下面是文档中的例子。


假设我们想对二维函数进行插值处理。

>>> def func(x, y):
...     return x*(1-x)*np.cos(4*np.pi*x) * np.sin(4*np.pi*y**2)**2

在[0,1]x[0,1]的网格上

>>> grid_x, grid_y = np.mgrid[0:1:100j, 0:1:200j]

但我们只知道它在1000个数据点的值。

>>> points = np.random.rand(1000, 2)
>>> values = func(points[:,0], points[:,1])

这可以用griddata来完成–下面我们尝试一下所有的插值方法。

>>> from scipy.interpolate import griddata
>>> grid_z0 = griddata(points, values, (grid_x, grid_y), method='nearest')
>>> grid_z1 = griddata(points, values, (grid_x, grid_y), method='linear')
>>> grid_z2 = griddata(points, values, (grid_x, grid_y), method='cubic')

我们可以看到,所有的方法都能在一定程度上重现精确的结果,但是对于这个平滑函数来说,零点立方插值法的结果是最好的。

>>> import matplotlib.pyplot as plt
>>> plt.subplot(221)
>>> plt.imshow(func(grid_x, grid_y).T, extent=(0,1,0,1), origin='lower')
>>> plt.plot(points[:,0], points[:,1], 'k.', ms=1)
>>> plt.title('Original')
>>> plt.subplot(222)
>>> plt.imshow(grid_z0.T, extent=(0,1,0,1), origin='lower')
>>> plt.title('Nearest')
>>> plt.subplot(223)
>>> plt.imshow(grid_z1.T, extent=(0,1,0,1), origin='lower')
>>> plt.title('Linear')
>>> plt.subplot(224)
>>> plt.imshow(grid_z2.T, extent=(0,1,0,1), origin='lower')
>>> plt.title('Cubic')
>>> plt.gcf().set_size_inches(6, 6)
>>> plt.show()

plot

给TA打赏
共{{data.count}}人
人已打赏
未分类

如何在Oracle SQL中用OR比较多个相同值的列。

2022-9-13 1:39:16

未分类

使用 "动作 "可以选择元素,但不能将元素拖动到特定位置,因为悬停时产生了下拉功能。

2022-9-13 1:39:18

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索