Это не ошибка, это выдает ошибку, которую он должен выдавать с учетом вашего ввода. Однако я вижу, что в документации не очень ясно, почему это происходит!
combine_by_coords
и combine_nested
делают две вещи: они объединяются (используя xr.concat
), и они объединяются (используя xr.merge
). merge
группирует переменные одинакового размера, concat
объединяет переменные разных размеров на концах друг друга. Шаг конкатенации никогда не должен обрабатывать частично перекрывающиеся координаты, поэтому функции combine
имеют такое же ограничение.
Эта ошибка является явным отклонением введенного вами ввода: «вы дали мне перекрывающиеся координаты, Я не знаю, как их объединить, поэтому отвергну их ". Обычно это имеет смысл - когда перекрывающиеся координаты не являются NaN, тогда неоднозначно, какие значения выбрать.
В вашем случае вы просите его выполнить четко определенную операцию, и обсуждение в документы о слиянии перекрывающихся координат здесь подразумевают, что compat='no_conflicts'
справится с этой ситуацией. К сожалению, это только для xr.merge
, а не xr.concat
, поэтому это не относится и к combine_by_coords
. Это определенно сбивает с толку.
Возможно, возможно обобщить функции combine
для обработки сценария, который вы описываете (где перекрывающиеся части координат полностью задаются не -NaN значения). Пожалуйста, откройте проблему, предлагающую эту функцию, если вы хотите ее увидеть.
(Проблема # 3150 касалась чего-то другого, фактической ошибки в обработке "координатных размеров, которые не меняются между каждым набором данных ".)
Вместо этого вам нужно сначала обрезать перекрытие. Это не должно быть сложно - предположительно, вы знаете (или можете определить), насколько велико ваше перекрытие, и все ваши NaN находятся в одном наборе данных. Вам просто нужно использовать метод .isel()
со срезом. После того, как вы избавитесь от перекрывающихся NaN, вы сможете правильно их комбинировать (и вам также не нужно указывать compat
). Если вы используете combine_by_coords
как часть открытия многих файлов с помощью open_mfdataset
, тогда может быть проще написать функцию обрезки, которую вы сначала примените, используя аргумент preprocess
для open_mfdataset
.