четверг, 23 февраля 2012 г.

GrADS и Windows. Читаем и рисуем файлы netcdf

Цель: Есть файл в формате netCDF. Хочется получить карту какой-либо гидрометеорологической величины за какой-нибудь временной срез в Windows 7 ОС.
Средства: GrADS

Сейчас многие метеорологические и не только данные лежат в сети Internet в формате netcdf. Это удобно - единый формат компактного хранения данных, для общения с которым существует множество программ. Причём не только под Linux ОС, но и Windows ОС. Одной из таких программ является GrADS.

GrADS (Grid Analysis and Display System) - это интерактивная система, предназначенная  для  анализа, визуализации и обработки гидрометеорологических данных. Официальный сайт GrADS Home page для пользователей Windows ОС из полезного содержит, пожалуй, только описания, обучающие курсы и примеры работы с GrADS. Там можно скачать сборку для cygwin, но для наших целей это слишком радикально. Дистрибутив свободной программы GrADS (сейчас основными являются версии выше 2.0) для Windows ОС необходимо искать тут и здесь скачать. Это OpenGrADS, который является прекрасным инструментом для работы c такими форматами, как GRIB (версии 1 и 2), сеточные бинарники (gridded binary), BUFR, GrADS station data, NetCDF (классические и NetCDF-4), HDF4-SDS, HDF5, и OPeNDAP (сеточные и станционные данные).

Итак, хватит теории, перейдём к практике.
Устанавливаем OpenGrADS (рекомендуется устанавливать прямо в корневой каталог, например "C:\OpenGrADS"), соглашаемся со всеми предложениями установщика.
После этого на рабочем столе появляется несколько иконок, нам нужна GrADS Prompt. Щёлкаем правой мышкой на ярлычке, выбираем "Свойства". В строчку "Рабочая папка" вставляем скопированный путь к нужному нам файлу формата netcdf, например так: "c:\Institute\Data\ECA E_OBS\". Там у нас лежит файл "short2.nc". Таким образом мы можем изменять рабочую папку, т.е. то место в котором будет работать GrADS.
Запускаем GrADS двойным кликом по иконке с черепашкой (GrADS Prompt). Сначала появляется одно окно и предлагает нам выбрать формат полотна ("портретный" и "пейзаж" разных размеров), на котором будет отображаться графическая информация. Нажимаем Enter и начинаем работать, у нас появляется второе окно.

Команды GrADS надо набирать в первом окне (ga->) как в командной строке Linux, а именно последовательно. Для начала необходимо открыть файл, загрузить его в систему.
Для netcdf необходимо использовать команду "sdfopen":

sdfopen short2.nc

Файл открыт, на первом экране отображается описание файла. Вот некоторые команды GrADS (полное описание смотрите на сайте GrADS):

q files - показывает список всех открытых файлов
q file - показывает информацию об открытом файле (размеры массивов широт-долгот-вертикальных уровней-временных срезов и список переменных)
q - что-то вроде хелпа, показывает расширения команды q (=query), среди которых есть и q files
set t 100 100 - устанавливает временной срез с 100 по 100 (один срез) по внутреннему отсчёту файла. Конечно, в файле должно быть >= 100 временных срезов, иначе будет ошибка.
  
Теперь будем рисовать. Основных принципов рисования в GrADS, на мой взгляд, два: 
1) Команды следуют друг за другом, изображения последовательно наслаиваются друг на друга. Поэтому важно некоторые команды запускать раньше остальных.
2) Т.к. каждый раз писать даже 10 строчек команд утомительно, удобно запускать GrADS-овские скрипты, которые имеют расширение "*.gs" (например, "grads_test_script.gs")

Вот некоторые базовые и полезные команды:

reinit - перезагружает среду GrADS. Все не сохраненные данные исчезнут, все открытые файлы закроются, а настройки рисунков сбросятся.
с (=clear) - очищает экран
set grads off - отключает подпись, что это GrADS, и дату внизу
set csmooth on - делает изолинии более сглаженными
set poli on - показывает государственные границы государств (могут быть устаревшими). Эта команда связана со следующей
set mpdset lowres|mres|hires -  устанавливает уровень (от малого к большему) отображения "подложки" (границы море-суша, государственные границы и гидрография)
set gxout shaded - отрисовка изолиний с послойной окраской
cbarn или cbar - выводит автоматическую шкалу (её можно менять спец. командами). Работает только после связки команд "set gxout shaded"- "d <variable>". Как конкретно называется та или иная переменная смотри в "q file".
set gxout contour - отрисовка изолиний с подписями (их тоже можно редактировать) 
d <variable> - главный компонент отрисовки. Собственно это и есть команда "display" или "d". После её запуска во второе окно рисуется в тех настройках, которые вы установили, переменная variable. Если хотите и послойную окраску и просто изолинии с подписями, то сделайте так:

ga-> set gxout shaded
ga-> d rr
ga-> cbarn
ga-> set gxout contour
ga-> d rr

Примеры основных команд рисования хорошо показаны здесь. Теперь вы что-то нарисовали и хотите это ... сохранить в виде рисунка. Как это сделать? Самый простой способ - команда printim:

printim my_grads_picture.png png x800 y600 white

До теперешнего момента мы набирали команды последовательно в первом окне. А теперь получим такую картинку в один клик. Открываем любой Блокнот-подобный редактор (я использую Geany и Notepad++). И пишем туда что-нибудь следующее:

'reinit'
'sdfopen short2.nc'
'set csmooth on'
'set t 3527 3527'
'set grads off'
'set mpdset hires'
'set gxout shaded'
'd rr'
'cbarn'
'set gxout contour'
'd rr'
'printim ECA_27081989.png png x800 y600 white'

Сохраняем это как скрипт "test_grads_script.gs". Запускаем GrADS (или не выходя из него, набираем reinit). Сохраненный скрипт должен быть в той же папке, которая является рабочей для данного сеанса программы.

N.B. В GrADS можно использовать shell-команды Linux! Для этого нужно перед командой shell ставить знак "!". Текущую папку, в которой вызван GrADS, можно узнать командой "!pwd", а список файлов в ней - "!ls".

Теперь запускаем скрипт командой run:  "run test_grads_script.gs". Скрипт не запустился? А вы поставили все команды внутри скрипта в '  ' кавычки, как это сделано в примере выше? Нет? Так поставьте. =) Это важное условие работы скриптов под Windows ОС.

Лирическое отступление. На самом деле с кавычками всё хитрее - под Linux можно легко и элегантно смешивать скриптовый язык GrADS и shell-команды Linux и писать shell-скрипты с возможностями GrADS. На практике это означает, в частности, что можно передавать переменные в широком смысле этого слова в скрипт по ключам. И для того, чтобы GrADS различал "свои" команды в скрипте, их надо "кавычить".
Кстати, "cbarn" тоже скрипт =). И лежит он в папке "C:\OpenGrADS\Contents\Resources\Scripts", где лежат остальные базовые скрипты. Можете складывать свои скрипты туда, и тогда их можно будет запускать без команды "run". ;)

Вот такое краткое пособие для начинающих осваивать GrADS под Windows.

P.S. У меня изредка возникали проблемы с запуском GrADS при пристальном внимании антивируса Avast к работе GrADS. Об этом в прилагаемом к OpenGrADS.exe файлу-cправочнику указано: Both GrADS and the Xming server uses the local network to talk to each other. If your Windows Firewall or anti-virus software is preventing programs from accessing the network you will not be able to see any graphics on the screen (although GrADS may function OK in batch mode). The solution is to reconfigure your firewall/antivirus software to allow Xming/GrADS to access the local network. Так что все проблемы благополучно решились! =)

9 комментариев:

  1. Добрый день! Не могли бы Вы разъяснить мне вопрос: когда да открываю GrADS Prompt и появляется вопрос Landscape mode?('n' for portrait)- я нажимаю Enter, но ничего не происходит?! Что я делаю не так? Спасибо!

    ОтветитьУдалить
  2. Добрый день, Анонимный!
    Поясните, как именно "ничего не происходит"? Программа не реагирует на нажатие Enter? Или программа закрывается?

    Может быть, у вас возникают проблемы c фаэроволлом? Такое бывает, и выражается в виде закрытия программы без объяснений после любого нажатия клавиш.
    Для решения необходимо добавить в исключения фаэрволла OpenGrads.

    ОтветитьУдалить
  3. Спасибо за ответ! Окно (типа командной строки) закрывается, при нажатии Enter. На другие клавишы так не реагирует. А при нажатии закрывает первое окно и все!?

    ОтветитьУдалить
  4. Очень похоже на конфликт с Firewall/Брандмауэром.

    После установки OpenGrads, всплывает окно, которое спрашивает нужно ли добавить это приложение в исключения. Надо согласиться с этим предложением. Но если вы пропустили его или не заметили, то нужно либо самостоятельно ставить исключение для OpenGrads в настройках Firewall/Брандмауэра. Или можно установить Градс заново, и обратить на сообщение Firewall/Брандмауэра внимание.

    ОтветитьУдалить
  5. К сожалению и полное отключение firewall и антивируса ничего не помогло. Все равно окно закрывается.

    ОтветитьУдалить
  6. Здравствуйте! Можете помочь мне: необходимо открыть в OpenGrads несколько файлов сразу и усреднить их содержимое. Как это можно сделать?
    Спасибо!

    ОтветитьУдалить
  7. VarangaOfficial - варанга цена в аптеке - исключительно достоверные, проверенные факты. Воспользовавшись данным интернет-порталом, вы получите возможность узнать наиболее полную информацию об этом лекарственном средстве. Лично увидеть данные о проведенных клинических тестированиях, прочитать отзывы реальных покупателей и врачей, использующих крем в своей лечебной практике. Ознакомиться с инструкцией по применению, прочесть об особенностях и методах работы мази, осмыслить, в чем заключаются особенности работы крема Варанга, где необходимо заказывать сертифицированный, оригинальный препарат и, как избежать покупки подделки. Мы очень тщательно и скурпулезно проверяем размещаемые данные. Предоставляем нашим пользователям сведения, взятые исключительно из подлинных источников. Если вы нашли признаки грибка или же долго и безрезультатно стараетесь излечиться от этого неприятного коварного недуга, наш сайт покажет вам быстрый и простой способ устранения проблемы. Присоединяетесь и живите здоровой полноценной жизнью. Все, что вы хотели знать, теперь можно найти на одном ресурсе.

    ОтветитьУдалить
  8. Мир игр, а также увлекательных сайтов вы здесь еще не найдете экскурсионные туры на байкал 2022. И легче приобрести каждое из более чем двадцати процентов предложений в этом месте. Это значительно сэкономит время прибытия, если вам нужно сразу же забронировать жилье или отели. Как и любой город для отдыха в российской федерации, путешественник может отбить за короткий срок, абсолютно все в этом недешево: дома отдыха, пользование, экскурсионные программы. Гости города обычно смотрят на зону отдыха в возрасте, автомобили от 0,5 до 20 тонн. V. Городские дома отдыха и турбазы здесь незаменимы. Коттедж. На куршской косе такая услуга стоит около пяти тысяч заявок. Вариант дешевле, оборудованный старой мебелью, без сплит-системы в течение длительного времени и без проблем на этаже обойдется в две тысячи. На дальнем востоке тоже хреново с тем, в каком состоянии находится инфраструктура. Внутренние путешествия по сибири продолжаются уже давно, а под дальним востоком на сильном... На гольдшмитштрассе, 15 находится дом, где родился писатель феликс мендельсон, а на инсельштрассе расположен дом роберта шумана. Определенным образом, находясь в офисе в городе в конце августа (такой бархатный период), мне удалось съездить в дом времяпрепровождения в пятницу - воскресенье на берегу моря. В том случае, если вы готовы увидеть байкал абсолютно во всем его величии, то при этом не только не всегда ничего тратите на трансфер, но и потом получаете все, у вас есть возможность добраться до этих необыкновенных достопримечательностей благодаря волонтерскому движению. Если в первый раз, то через иркутск. Из столицы - прямым рейсом в иркутск или улан-удэ. В нынешних реалиях поездка из столицы в иркутск обойдется в 1 часть десятка автомобилей от 0,5 до 20 тонн.Платежный счет. Здесь также есть аквариум, террариум и старинный обезьянник, где с давних пор находится вольер для коал. В тематическом месте "южные соединенные штаты америки" есть птичник, загон для гривистых волков, затем "обезьяньи острова" - вольер для многих обезьян. В железнодорожном составе стоимость значительно выше или ниже от трех, пяти вагонов от 0,5 до 20 тонн.Рублей". На территории курорта расположен санаторий "горячинск". А памятных мест на куршской косе так много, что не всегда хватает пары жизней, чтобы выслушать все его загадки! Я родился в иркутске, получается очень хорошо, и именно в юном возрасте я попал в литву. Кроме того, я еще ни разу не ходил туда. Какие места вы посещали, что вас интересовало, а также каждый раз переезжали? На его месте находится верховный суд, филармония, а также самый большой в европейском союзе памятник сражениям со всего мира. Великолепие других его исторических ценностей, даже природных, расположено вокруг озера байкал. В частности, гепарды, львы, слоны и пингвины! По крайней мере, все еще как сторонник, так что не для всех. Часто там же есть столовые, сосиски на вынос, кастрюли, а также площадки для детей. Запрещено кататься на велосипеде в случае со скейтбордами, содержать диких животных, привлекать интерес животных - противопоказано барабанить по стеклу, кричать, отрываться от вещей. Хорошей новостью является то, что для всех видов животных характерен разный климатический рельеф. Есть еще крокодил, давным-давно, но там много ящериц, черепах. Жилые номера более комфортны в разных ценовых категориях. Террариум слишком высок, и то, что в этом месте душно, означает, что такое климатическое место создано с умыслом. Есть область "африка", "азиатские страны" в случае "южной америки". Рядом со входом есть террариум. До 1883 года площадь зверинца составляла 3 гектара. Даже в течение восьми столетий я призываю абсолютно всех моих спутников добраться до него, но абсолютно всех никоим образом.Какой-то бизнес мешает.

    ОтветитьУдалить
  9. Стенд- эта модель представляет собой такой агрегат с компактными габаритами, который удобно разместить где-нибудь в городе. Он состоит из фирменных опорных колонн из алюминия или углеродного волокна с интересными очертаниями. Когда блокирующая часть срабатывает, стержни раздвигаются в стороны, прочно растягиваясь вместе с отпечатанным отпечатком. X-баннер подходит для бесконтактных кампаний, презентаций, выставок и других мероприятий. Компания "сетэкспогрупп" производит мобильные сельскохозяйственные платформы и доставляет их в пределах столицы и прилегающих регионов. Мы разрабатываем и производим бесконтактные продукты уже более 10 лет, мы гарантируем продукцию в течение одного года. Каждый бренд, реализуемый нашей компанией, уникален, разрабатываются приложения для вашей дизайн-игры. X-стенд "бюджет" X-стенд "стандарт" X-стенд "престижного" X-подставка телескопическая Прелести этой модели-подставки - X-баннероподобная маневренная установка, удобная по экономии, доставке; - стенд, размещенный на каждой площадке, сможет использоваться в ограниченных пространствах, в точках с большой проходимостью по пересеченной местности; - безупречное качество исполнения: внешний вид в случае потребительских параметров сохраняется на протяжении всего срока службы; - результат применения: заставку в изображениях пластины можно быстро преобразовать с минимальными временными затратами; - "паук" пока не потребует специальных монтажных работ, он устанавливается без присутствия установщиков. По каким причинам эффективно попасть в нашу компанию Компания "сетэкспогруп" призывает для решения любых ваших вопросов частных и законных представителей. Наша компания уже много лет специализируется на производстве рекламных стендов, предлагаемые средства pr используются несколькими корпорациями в москве. Приобретая приложение, предлагаемые специалисты детально прорабатывают систему товаров и учитывают каждый нюанс. Онлайн-бренд готовится к наблюдениям в формате fullhd, чтобы у клиента было время получить глубокое представление о том, как будет принят доступный выбор. Через какие-либо подтверждения наша компания печатает стенд "эта модель". Именно благодаря оптимальному отношению вы ждете просто уникального продукта высочайшего качества, который обязательно привлечет внимание ца. Чтобы узнать больше о теме роллерные стенды Посещений, предоставляемых веб-сайтом.

    ОтветитьУдалить

Как перевести UV в направление и скорость ветра? How to convert wind UV-components to direction and velocity?

 Всё просто.  def uv2dir(u, v):     '''     Источник:     https://github.com/blaylockbk/Ute_WRF/blob/master/functions/wind_calc...