1

是否有一种直接的方法可以从由 2D 纬度和经度变量描述的虹膜立方体中提取区域,例如使用 NEMO 海洋模型数据?

我找到了这个解决方法,但想知道是否有办法在“纯”虹膜中做到这一点,而不必求助于定义新函数?

例如,如果我有这个立方体......

In [30]: print(cube)
mole_concentration_of_dimethyl_sulfide_in_sea_water / (mol m-3) (time: 780; cell index along second dimension: 330; cell index along first dimension: 360)
     Dimension coordinates:
          time                                                       x                                       -                                      -
          cell index along second dimension                          -                                       x                                      -
          cell index along first dimension                           -                                       -                                      x
     Auxiliary coordinates:
          latitude                                                   -                                       x                                      x
          longitude                                                  -                                       x                                      x

...然后尝试使用intersection提取区域,我明白了...

>>> subset = cube.intersection(longitude=(-10, 10))

CoordinateMultiDimError: Multi-dimensional coordinate not supported: 'longitude'

谢谢!

4

1 回答 1

2

从错误信息中可以看出,iris 目前不支持多维坐标的子集化,因此您必须编写类似于bbox_extract_2Dcoords()该博客文章中的函数。它所做的只是创建一个布尔掩码,其值设置为True您感兴趣的区域内和False外部。然后将该区域的边界用作索引来对立方体进行子集化。

另一种方法是将数据重新网格化为由一维经度和纬度定义的常规网格,然后使用标准Constraint()方法对数据进行子集化。

于 2021-02-08T11:07:07.193 回答