【问题标题】:Angled slice in xarrayxarray中的角度切片
【发布时间】:2019-11-05 07:57:49
【问题描述】:

如何在 xarray 中创建一个有角度的 netcdf 数据切片?假设我在 100x100x100 网格上有一个垂直风速的 netcdf 文件。如果我想要一个水平范围从 [x,y]=[5,0] 开始并在 [95,100] 结束的数据的垂直横截面,我该怎么做。 xarray 中是否有一种简单的方法可以定义枢轴点和角度?

【问题讨论】:

    标签: slice angle python-xarray


    【解决方案1】:

    在尝试沿着与尺寸不对齐的路线查找高程剖面时,我遇到了类似的问题。如果您创建一个新维度“along_course”并向其添加相应的坐标,则可以沿自定义维度进行插值。在您使用额外高度坐标的情况下,我想如果您使用 meshgrid 来定义 x、y、z 的坐标,这可能会奏效。

    这是我为 2D 案例所做的,您应该能够为您的 3D 案例进行修改: http://xarray.pydata.org/en/stable/interpolation.html#advanced-interpolation

    startLat = 40.0
    startLon = -80.0
    endLat = 41.0
    endLon = -79.0
    n = 1000
    x = xr.DataArray(np.linspace(startLon,endLon,n), dims='along_course')
    y = xr.DataArray(np.linspace(startLat,endLat,n), dims='along_course')
    elevation_profile = dataset['elevation'].interp(Lon=x, Lat=y, method='linear')
    plt.plot(elevation_profile)
    

    【讨论】:

    • 另外,我在我的代码中有一条评论提到了这个方法在 xarray 文档中的来源。 xarray.pydata.org/en/stable/…
    • 感谢您的意见!非常有趣,我还能够用它绘制横截面高程剖面图,谢谢!但是,我仍在为 3D 化而苦苦挣扎。做 dat = dataset['w'].interp(x=newx, y=newy, zw_3d=newz, method='nearest') 似乎只会让我得到一个新的 3d“立方体”数据,只有新的坐标。如何提取由 startLon/lat 和 endLon/Lat 定义的横截面?
    • 查看我所说的关于使用 meshgrid 的内容:“在您使用额外高度坐标的情况下,我想如果您使用 meshgrid 来定义 x、y、z 的坐标,这可能会奏效。” Meshgrid 将允许构建坐标,其中每个 x, y 对将有一个高度范围 (z)。我以后可以试试看。
    猜你喜欢
    • 2018-01-11
    • 2021-12-03
    • 2019-04-11
    • 1970-01-01
    • 2018-03-04
    • 1970-01-01
    • 1970-01-01
    • 2021-06-11
    • 1970-01-01
    相关资源
    最近更新 更多