Как изменить диапазон долготы в NetCDF

Мой файл NetCDF имеет 4 измерения (долгота, широта, время, уровень давления) и несколько переменных.

Я хочу заменить данные о долготе [340 342 344 ... 360 0 2 4 ... 18 20] на [-20 -18 -16 ... -2 0 2 4 ... 18 20]. На самом деле долгота отсчитывается от 0 ° до 360 °, но мне нужно от -180 ° до 180 °.

Я нашла в Интернете несколько идей, но не знаю, как их применить.

Вот объяснение:

"Некоторые файлы netcdf содержат строго положительные значения [0,360], которые несовместимы со способом, которым gdal / QGis обрабатывает значения долготы - они не охватывают линию дат. Это также вызывает ошибки с gdalwarp и при объединении с другими наборами данных (с [-180,180 ] значения), они не выровнены должным образом из-за сдвига долготы на 180 градусов.

Простое решение - проверить переменные долготы и преобразовать любые значения в интервале [180,360] в [-180,180] путем вычитания 180 - в IReadBlock, а также в обнаружении SRS ».

Я также читал о «gdal-translate», но не знаю, как им пользоваться.

Изменить: у меня также была проблема с широтой, которая была N -> S (я хотел, чтобы она была S -> N), и я изменил ее, благодаря "cdo invertlat"


person Douie    schedule 21.11.2013    source источник
comment
Пожалуйста, покажите нам, что вы сделали: почему ncclamp не установился, какие команды вы пробовали в cdo, что означает did not work, где у вас возникли ошибки? Сейчас ваш вопрос слишком расплывчатый.   -  person Paul Hiemstra    schedule 21.11.2013
comment
Также предоставьте минимальный воспроизводимый пример вместе с кодом, который вы пробовали. Спасибо!   -  person Henrik    schedule 21.11.2013
comment
Извините, я не видел ваших ответов! Редактирую свой основной пост. У меня только одна проблема, но я действительно не знаю, как ее исправить.   -  person Douie    schedule 25.11.2013


Ответы (2)


Вот что я нашел:

ncap2 -O -s 'where(lon>180) lon=lon-360' ifile ofile

Я не уверен, что это еще ничего не меняет, но вроде работает.

person Douie    schedule 25.11.2013

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

Я использовал пакет cdo (https://code.zmaw.de/projects/cdo) команду sellonlatbox, чтобы перевести мои входные данные из диапазона долготы [0, 360) в [-180, 180), а также изменить порядок широты на [-90, 90] ( т.е. S -> N):

cdo sellonlatbox,-180,180,-90,90 infile.nc outfile.nc
person trafter    schedule 05.04.2016