Обрезать файлы NetCDF по несвязанным координатам

Взгляните на этот файл NetCDF EURO-CORDEX:

<xarray.Dataset>
Dimensions:       (bnds: 2, rlat: 412, rlon: 424, time: 1800)
Coordinates:
    lat           (rlat, rlon) float64 ...
    lon           (rlat, rlon) float64 ...
  * rlat          (rlat) float64 -23.38 -23.26 -23.16 ... 21.61 21.73 21.83
  * rlon          (rlon) float64 -28.38 -28.26 -28.16 ... 17.93 18.05 18.16
  * time          (time) object 2011-01-01 12:00:00 ... 2015-12-30 12:00:00
Dimensions without coordinates: bnds
Data variables:
    pr            (time, rlat, rlon) float32 ...
    rotated_pole  |S1 ...
    time_bnds     (time, bnds) object ...

Когда я пытаюсь обрезать его, используя xarray (в скрипте Python) или nco (в командной строке) по координатам lat и lon, он, по-видимому, не работает, поскольку lat и lon не являются размерами. Я читал, что это скорее coordinates, не связанные с какой-либо переменной. Как я могу связать их или сделать из них размеры? Указывают ли звездочки рядом с координатами rlat и rlon на то, что мне не хватает?

Обратите внимание, что я добиваюсь обрезки с помощью xarray.Dataset.where, тем не менее меня скорее интересует манипулирование размерами / координатами, чтобы обычные операции обрезки работали. Спасибо!


person janchytry    schedule 14.02.2021    source источник


Ответы (1)


Вы должны иметь возможность обрезать это с помощью CDO:

sellonlatbox,lonmin,lonmax,latmin,latmax infile outfile

CDO определит наименьший возможный прямоугольник в исходном наборе данных, который будет содержать указанное поле. Это похоже на повернутую полярную сетку, поэтому вы не получите некоторые ячейки сетки за пределами коробки.

NCO также подойдет, но вам нужно будет кадрировать с помощью rlon и rlat. Итак, вам нужно будет выбрать подходящие rlon и rlat, которые приведут к желаемым долгам и широте.

person Robert Wilson    schedule 14.02.2021
comment
Интересно, что CDO действительно умен в этом вопросе, и это работает! Спасибо. Тем не менее, есть ли возможность обменять rlat и rlon на lat и lon? - person janchytry; 14.02.2021
comment
Если я вас правильно понимаю, вы хотите пересчитать данные из повернутой полярной сетки в обычную сетку latlon. Их замена, вероятно, сделает ваш файл несовместимым с CF и подверженным ошибкам при обработке. - person Robert Wilson; 16.02.2021
comment
Ну, координаты lan / lon - это массивы xarray.dataArrays, которые уже представляют повернутую полярную сетку с пересчетом. Они были включены производителем данных. Однако они представляют собой 2D-массивы и, очевидно, не подходят для использования в dimension - person janchytry; 16.02.2021
comment
Я предполагаю, что rlat / rlon в первую очередь предназначались для координат измерения (как сейчас), потому что они представляют собой одномерные массивы. Затем каждый пиксель климатической переменной получает комбинацию rlat и rlon для пространственного определения (+ time, конечно, в качестве третьего измерения). - person janchytry; 16.02.2021