获取xarray中从点到点的对角线上的所有网格值

问题描述

我希望从xarray数据集中选择一个点与另一个点之间的所有数据。对于sel,这当然很容易,例如,基于纬度/经度网格的数据集从全局数据集到大西洋海岸线的子集,我可以做ds_geo_subset = ds.sel( lat=slice(42,20),lon=slice(-85,-65)),但我想选择沿湾流的前面,基本上是从(-78 lon,32 lat)到(-72 lon,36 lat)的点,但是我不确定该怎么做。最好通过提供一个完整的点数据集并从每个点获取数据来做到这一点,还是可以将这两个端点提供给xarray并返回插值数据?

解决方法

正如上面的注释所建议的,Metpy具有特定功能,可以轻松完成此任务。

from metpy.interpolate import cross_section

data = xr.open_dataset('my_data')

# Define start and end points:

start = (-78,32)
end = (-72,36)
cross = cross_section(data,start,end).set_coords(('lat','lon'))

Here是绘制横截面的好例子。