Почта
Чат
Диск
     

Получение гидрометеорологических данных

Получение файлов из сети Интернет (утилита wget)

Программа wget предназначена для скачивания данных в сети Интернет по протоколам http и ftp. Например, для копирования в текущий каталог файла fc_n000.bin с сервера mcc.hydromet.ru (в файле записан прогноз погоды по северному полушарию на 00:00 UTC ближайшего воскресенья в формате GRIB) достаточно выполнить команду:

wget http://mcc.hydromet.ru/wmc/fc_n000.bin
В ответ, в терминале начнется отображение хода загрузки файла:
Преобразование адреса mcc.hydromet.ru... 212.45.26.44
Устанавливается соединение с mcc.hydromet.ru|212.45.26.44|:80... соединились.
Запрос HTTP послан, ожидание ответа... 302 Found
Адрес: http://mcc.meteorf.ru/pub/wmc/fc_n000.bin [переход]
--2013-08-30 00:21:53--  http://mcc.meteorf.ru/pub/wmc/fc_n000.bin
Преобразование адреса mcc.meteorf.ru... 193.7.162.140
Устанавливается соединение с mcc.meteorf.ru|193.7.162.140|:80... соединились.
Запрос HTTP послан, ожидание ответа... 200 OK
Длина: 4851431 (4,6M) [application/x-stuffit]
Saving to: «fc_n000.bin»

100%[======================================>] 4 851 431   7,58M/s   в 0,6s     

2013-08-30 00:21:54 (7,58 MB/s) - «fc_n000.bin» saved [4851431/4851431]
В текущем каталоге появится файл fc_n000.bin.

Несмотря на кажущуюся простоту эта программа обладает большими возможностями.

Для получения GRIB-файла с прогнозом погоды на 24 часа вперед, полученным моделью GFS, запущенной 29 августа 2013 года в 00 UTC, необходимо выполнить команду:

wget ftp://tgftp.nws.noaa.gov/SL.us008001/ST.opnl/MT.gfs_CY.00/RD.20130829/PT.grid_DF.gr2/fh.0024_tl.press_gr.0p5deg
Видно, что названия каталогов и само имя файла содержат дату, время, период прогноза. При копировании большого числа подобных файлов указание этих значений вручную становится трудоемким и становится целесообразным написание скриптов, подставляющих текущие данные времени для автоматизации процесса загрузки.

Получение файлов из локальной сети (монтирование файловой системы)

В случае, если необходимые файлы находятся на одном из компьютеров в локальной сети, то необходимо присоединить каталог, где находятся нужные файлы, к какому-либо каталогу локального компьютера. Этот процесс называется монтированием файловой системы. Для этого используется команда:

mount -t тип_файловой_системы устройство точка_монтирования

Для размонтирования используется команда:

umount устройство

или

umount точка_монтирования

Например, монтирование каталога /sat-data/archive/ компьютера с IP-адресом 192.168.206.10 в каталог ~/data/eumetsat/ на локальном компьютере осуществляется командой:
sudo mount.cifs //192.168.206.10/sat-data/archive/ ~/data/eumetsat/ -o username=efastudent,pass=пароль,domain=CNIT

Настройка автоматического монтирования разделов

В процессе начальной загрузки команда mount читает файл /etc/fstab в котором указаны разделы, которые необходимо автоматически смонтировать.
Формат записи в файле /etc/fstab следующий:

устройство точка_монтирования тип_файловой_системы опция1,опция2,опция3 дамп порядок_проверки

В качестве устройства указывается раздел жесткого диска (например, /dev/sdb1), а в качестве точки монтирования указывается существующий каталог (например, /mnt/disk).

Тип файловой системы может быть следующим.
Тип файловой системыНазвание
ext2Вторая расширенная файловая система
ext3Третья расширенная файловая система
swapРаздел виртуальной памяти
iso9660Файловая система CD-ROM и DVD-ROM
vfatФайловая система FAT16, FAT32
ntfsФайловая система NTFS
nfsСетевая файловая система
smbfsСетевая файловая система, работающая через протокол SMB
procвиртуальная файловая система для доступа к процессам (process)
tmpfsфайловая система в виртуальной памяти
devptsвиртуальная файловая система
sysfsвиртуальная файловая система

Список поддерживаемых файловых систем можно найти в файле /proc/filesystems.


Опции монтируемой файловой системы задаются через запятую и без пробелов.
ОпцияОписание
autoфайловая система монтируется автоматически
roмонтируется в режиме "только чтение"
rwмонтируется в режиме "чтение и запись"
devфайловая система может содержать файлы блочных и символьных устройств
execфайловая система может содержать исполняемые файлы
suidразрешено использование битов SUID и SGID
userразрешено обычному пользователю размонтировать данную файловую систему и при этом используются значения по умолчанию (noexec, nosuid, nodev)
defaultsустановки по умолчанию (rw, suid, dev, exec, nouser, async)
codepage=кодовая_страницаприменять указанную кодировку к именам файлов
iocharset=набор_символовотображать имена файлов в соответсвии с указанным набором символов
noautoфайловая система не может быть автоматически смонтирована
nodevфайловая система не может содержать файлы блочных и символьных устройств
noexecфайловая система не может содержать исполняемые файлы
nosuidзапрещено использование битов SUID и SGID
nouserобычному пользователю запрещено размонтировать данную файловую систему

Поле дамп указывает на необходимость резервного копирования данных файловой системы командой dump (0 - нет, 1 - да).

Поле порядок_проверки указывает порядок проверки файловых систем при монтировании командой fsck (0 - без проверки).

Создание bash-скриптов

Для выполнения последовательно нескольких команд используются так называемые bash-скрипты. Это обычные текстовые файлы, в которых записана последовательность необходимых команд. В начале первой строки такого файла должен быть обязательно текст #!/bin/bash, а расширение такого текстового файла обычно задается .sh

Ниже представлен текст скрипта hydromet.sh, который копирует два файла с сервера mcc.hydromet.ru в текущий каталог.

#!/bin/bash

  # Создаем список файлов
  FILES="fc_n000.bin fc_s000.bin"

  # Последовательно в цикле перебираем все имена файлов из переменной FILES
  for file in $FILES; do
    # Для каждого файла выполняем команду загрузки с сервера
    wget http://mcc.hydromet.ru/wmc/$file
  done 
Для запуска скрипта его необходимо сделать исполняемым, то есть поменять права доступа к файлу, установив свойство "исполняемый" для владельца файла командой:
chmod u+x ./hydromet.sh
Запуск скрипта из текущего каталога осуществляется указанием символа текущего каталога ./ и его имени:
./hydromet.sh
После выполнения скрипта в каталоге появятся файлы fc_n000.bin и fc_s000.bin.

Другим примером является копирование результатов прогноза погоды моделью GFS на 72 часа, для всех запусков модели (00, 06, 12, 18 UTC) с начала текущих суток, с помощью представленного ниже скрипта gfs.sh.

#!/bin/bash

  # Переходим в рабочий каталог
  cd /data/gfs/

  # Определяем текущее время UTC
  year=`eval date -u +%Y`
  month=`eval date -u +%m`
  day=`eval date -u +%d`
  hour=`eval date -u +%H`

  HOURS="00 06 12 18"
  LEAPS="00 03 06 09 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60 63 66 69 72"

  for start in $HOURS; do

    # Если прогноз еще не готов по времени, то завершаем цикл
    if [ "$hour" -lt "$(($start+4))" ]
      then continue
    fi

    # Создаем каталог для данного запуска модели
    filepath=${year}-${month}-${day}-${start}/
    # Если такой каталог еще не существует, то создаем его
    if [ ! -e "./$filepath" ]
      then mkdir $filepath
    fi

    # Перебираем периоды прогноза погоды с 0 до 72 часов
    for leap in $LEAPS; do
      filename=fh.00${leap}_tl.press_gr.0p5deg
      file=$filepath$filename
      wget -q -w 3 -O ./$file ftp://tgftp.nws.noaa.gov/SL.us008001/ST.opnl/MT.gfs_CY.${start}/RD.${year}${month}${day}/PT.grid_DF.gr2/${filename}
    done

  done

exit 0

Форматы гидрометеорологических данных

netCDF

Формат хранения данных netCDF (Network Common Data Format) разработан
В файле хранятся не только данные, но и их описание:
имена переменных (температура, атмосфное давление и т.п.)
каждой переменной могут быть заданы свойства (название параметра, единицы измерения, значение при отсутствии данных)
размерности массивов (только ОДНА размерность может иметь неограниченную длину)

GRIB

Структура формата GRIB2 Таблица кодов формата GRIB2

BUFR

Таблица A Таблица B Таблица C Таблица D Таблицы кодов

OPeNDAP

Проткол доступа к научным данным (в формате netCDF, HDF5) по сети Интернет OPeNDAP (Open-source Project for a Network Data Access Protocol). Имеется возможность загружать результат выборки из исходного файла и тем самым экономить трафик.

СуффиксОписание
.ascдамп файла
.asciiдамп файла
.ddsструктура данных в файле
.ddxструктура данных в XML формате
.dasпараметры и их свойства
.infoподробная информация о файле
.htmlинтерактивная форма отправки запроса на получение выборки данных

Запрос на выборку данных из файла осуществляется командой geogrid() в виде:
.ascii?geogrid(параметр, max_широта, min_долгота, min_широта, max_долгота, "условие_1","условие_2")
Например,
http://test.opendap.org/opendap/data/nc/sst.mnmean.nc.gz.ascii?geogrid(sst,62,206,56,210,"19722<time","time<19755")

Контрольные вопросы

  1. Как называются текстовые файлы, содержащие Linux-команды?
  2. Какая информация НЕ храниться в файлах формата netCDF?
  3. Возможно ли хранить в netCDF-файлах данные аэрологического зондирования атмосферы?
  4. Как называется геостационарный спутник EUMETSAT, введенный в эксплуатацию в 2013 году?
  5. Какой международный проект направлен на изучение облаков по спутниковым данным?
  6. Укажите название американской глобальной численной модели прогноза погоды
  7. Какие данные называют реанализом?
  8. Укажите основное назначение технологии OPeNDAP

Полезная информация

wget - основные параметры (рус.)
Руководство по wget (англ.)
Описание форматов GRIB и BUFR на сайте WMO (англ.)
Материалы семинара по Unidata NetCDF 2012 (англ.)
Официальный сайт модуля Pydap (англ.)