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

Get all grid values on a diagonal line from point to point in xarray

我正在寻找 select 来自 xarray 数据集的所有数据,这些数据位于一个点和另一个点之间。这当然很容易 sel 例如,使用基于 lat/lon 网格的数据集从全球数据集到大西洋海岸线的子集我可以做到 ds_geo_subset = ds.sel( lat=slice(42, 20), lon=slice(-85,-65)) 但我想 select 湾流前沿的所有数据,基本上是从点(-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 是绘制 cross-section.

的一个很好的例子