Xarray - 如何重新划分或汇总不同网格分辨率的区域变量?
Xarray - how to regrid or sum up area variables for different grid resolutions?
我有一个给定分辨率的数据集,它的变量是面积度量。当重新网格化到另一个分辨率时,这些技术通常是插值(双线性、保守等),但这只适用于值与网格大小无关的变量(想想温度或降水)。因为我使用的是 Area 变量,所以这就好像我想提高网格的分辨率一样不起作用,应该对 Area 求和而不是插值。因此,我想根据坐标的变化对我的 Area 变量进行放大、分组或求和(如果我在纬度和经度上放大 2 倍,面积将乘以 4,如下例所示),但我不知道怎么做。
示例如下:
我目前拥有的:
test_stack
Out[20]:
<xarray.DataArray 'Harvested_area' (time: 1, lat: 2, lon: 2)>
array([[[10, 10],
[10, 10]]])
Coordinates:
* time (time) int32 1981
* lat (lat) float64 6.246 6.237
* lon (lon) float64 -74.25 -74.24
我想要的:
sum_test_stack
Out[20]:
<xarray.DataArray 'Harvested_area' (time: 1, lat: 1, lon: 1)>
array([[[40]]])
Coordinates:
* time (time) int32 1981
* lat (lat) float64 6.246
* lon (lon) float64 -74.25
谢谢!
尝试查看 xarray.DataArray.coarsen,使用简单的求和作为函数。 https://docs.xarray.dev/en/stable/generated/xarray.DataArray.coarsen.html
我有一个给定分辨率的数据集,它的变量是面积度量。当重新网格化到另一个分辨率时,这些技术通常是插值(双线性、保守等),但这只适用于值与网格大小无关的变量(想想温度或降水)。因为我使用的是 Area 变量,所以这就好像我想提高网格的分辨率一样不起作用,应该对 Area 求和而不是插值。因此,我想根据坐标的变化对我的 Area 变量进行放大、分组或求和(如果我在纬度和经度上放大 2 倍,面积将乘以 4,如下例所示),但我不知道怎么做。
示例如下:
我目前拥有的:
test_stack
Out[20]:
<xarray.DataArray 'Harvested_area' (time: 1, lat: 2, lon: 2)>
array([[[10, 10],
[10, 10]]])
Coordinates:
* time (time) int32 1981
* lat (lat) float64 6.246 6.237
* lon (lon) float64 -74.25 -74.24
我想要的:
sum_test_stack
Out[20]:
<xarray.DataArray 'Harvested_area' (time: 1, lat: 1, lon: 1)>
array([[[40]]])
Coordinates:
* time (time) int32 1981
* lat (lat) float64 6.246
* lon (lon) float64 -74.25
谢谢!
尝试查看 xarray.DataArray.coarsen,使用简单的求和作为函数。 https://docs.xarray.dev/en/stable/generated/xarray.DataArray.coarsen.html