Il ne s'agit pas d'un bogue, mais de l'erreur qu'il devrait commettre compte tenu de vos données. Cependant, je vois que la documentation n'est pas très claire quant à la raison pour laquelle cela se produit !
combine_by_coords
et combine_nested
font deux choses : ils concatènent (en utilisant xr.concat
), et ils fusionnent (en utilisant xr.merge
). merge
regroupe des variables de même taille, concat
joint des variables de différentes tailles aux extrémités les unes des autres. L'étape de concaténation n'est jamais censée traiter des coordonnées qui se chevauchent partiellement, et l'étape de combine
ont donc la même restriction.
Cette erreur est un rejet explicite de l'entrée que vous lui avez donnée : "tu m'as donné des coordonnées qui se chevauchent, je ne sais pas comment les concaténer, je vais donc les rejeter". Normalement, cela a du sens - quand les coordonnées qui se chevauchent ne sont pas des NaNs, il y a une ambiguïté quant aux valeurs à choisir.
Dans votre cas, vous lui demandez d'effectuer une opération bien définie, et la discussion dans la documentation sur la fusion des coordonnées qui se chevauchent aquí implique que compat='no_conflicts'
gérerait cette situation. Malheureusement, c'est seulement pour xr.merge
pas xr.concat
et ne s'applique donc pas à combine_by_coords
soit. C'est vraiment déroutant.
Il pourrait être possible de généraliser le combine
pour gérer le scénario que vous décrivez (où les parties superposées des coordonnées sont entièrement spécifiées par les valeurs non-NaN). Veuillez ouvrir une question proposant cette fonctionnalité si vous souhaitez la voir apparaître.
(Question #3150 concernait autre chose, un bogue réel dans la gestion des "dimensions de coordonnées qui ne varient pas entre chaque ensemble de données").
Ce que vous devez faire, c'est d'abord couper le chevauchement. Cela ne devrait pas être difficile - on peut supposer que vous connaissez (ou pouvez déterminer) la taille de votre chevauchement, et que tous vos NaNs sont sur un seul jeu de données. Il vous suffit d'utiliser la fonction .isel()
méthode avec une tranche. Une fois que vous vous êtes débarrassé des NaN qui se chevauchent, vous devriez pouvoir les combiner sans problème (et vous ne devriez pas avoir à spécifier compat
soit). Si vous utilisez combine_by_coords
dans le cadre de l'ouverture de nombreux fichiers avec open_mfdataset
il serait alors plus facile d'écrire une fonction de rognage que vous appliquerez d'abord en utilisant la fonction preprocess
argument pour open_mfdataset
.