python - 如何处理xarray中的时间相关坐标?
问题描述
我想使用 xarray 来处理具有时间相关坐标的数据集。更准确地说,我处理以风暴为中心的预测,这会导致维度(时间、纬度、经度)但纬度、经度是风暴移动时的时间函数。
似乎 xarray 中没有本地方法来处理这种情况,但有什么可能的解决方法?独立存储每个时间步很麻烦,但是,使用 xr.concat 会导致所有时间都只有一个纬度、经度坐标……我想知道应用 time1.interp_like(time2) 是否有帮助。本质上,随着时间的推移,用 nan 将所有时间步长填充到 lat、lon 的最大范围......有什么想法吗?
解决方案
如果您的目标是绘图,那么您可以使用non-dimension coordinates来解决这个问题。
考虑以下玩具示例。这里j
和i
是“逻辑”维度,不对应于任何物理位置(只是数组索引),而lon
和lat
是与时间相关的地理坐标。
import xarray as xr
import numpy as np
# create a dummy dataset
ds = xr.Dataset({'foo': (('time', 'j', 'i'), np.random.rand(10, 30, 30))})
# add non-dimension coordinates that depend on time
ds.coords['lon'] = 190 + 0.25 * ds.i + 0.01 * ds.time
ds.coords['lat'] = 24 + 0.25 * ds.j + 0.02 * ds.time
print(ds)
# select a specific time and plot
ds.foo.sel(time=5).plot(x='lon', y='lat')
数据集 repr 是
<xarray.Dataset>
Dimensions: (i: 30, j: 30, time: 10)
Coordinates:
lon (i, time) float64 190.0 190.0 190.0 190.0 ... 197.3 197.3 197.3
lat (j, time) float64 24.0 24.02 24.04 24.06 ... 31.39 31.41 31.43
Dimensions without coordinates: i, j, time
Data variables:
foo (time, j, i) float64 0.7443 0.2943 0.4479 ... 0.5386 0.3574 0.5597
该图如下所示:
您可以将这种方法适应您描述的场景
推荐阅读
- java - 为什么 maven jar 项目不包含它的依赖项?
- reactjs - 在 React 组件中使用 redux 操作类型
- combobox - 设置 DataProvider 时如何保留 Vaadin ComboBox 选择?
- javascript - 如何在framework7 version1中为弹出窗口设置自动关闭
- javascript - 错误:在实现 react-native-maps 时尝试注册两个具有相同名称的视图 AIRMap...
- java - 如何在 Gradle 和 Eclipse 之间同步 Java 源和目标?
- git - 当有人推送到主远程存储库(gitlab)时,如何更新镜像远程存储库(自己的服务器)?
- c - 如何在控制台中运行c项目
- python - 纬度经度坐标在 python 浮点数中填充了额外的数字
- node.js - Feathers 示例中的 POST 方法