NetCDF Reader

(программа распространяется по лицензии BSD из трех пунктов)

Программа предназначена для извлечение данных из файлов формата NetCDF. В таком формате распространяются, например, данные о климате.

Отличительная особенность формата NetCDF заключается в том, что в одном файле могут содержаться несколько различных многомерных данных. Поэтому, файл включает в себя заголовок, по которому можно понять, какие именно данные в нем содержатся. NetCDF Reader может как читать заголовки, так и извлекать из файла данные, делая проекцию на любые измерения.

Скачать netcdf-reader-1.0.1.tar.bz2 (4 Кб)»

Сборка

Для сборки необходомы bison и сама библиотека netcdf.

cmake -DCMAKE_BUILD_TYPE=Release .
make

Синтаксис

$ ./bin/netcdf_reader -help
./bin/netcdf_reader
      -h|-help|--help -- help message
      -info -- file info
      -info -att name -- attribute 'name' info
      -info -var name -- variable 'name' info
      -file name -- sets netcdf file name
      -dump [-text] -file fname -var name
            -- dumps variable 'name' to file 'fname'
      -dump [-text] -file fname -var name -dim dn1 from total ..
            -- dumps variable 'name' to file 'fname'
						-- and sets dimentions boundaries

Примеры

Чтение заголовка

Для начала, получим сведения о файле:

./bin/netcdf_reader -file uwnd.mon.total.std.nc -info
dims/vars/atts: 4/5/5
dims:
0:      lon: 144
1:      lat: 73
2:      level: 17
3:      time: 12
vars:
0:      level
1:      lat
2:      lon
3:      time
4:      uwnd
atts:
0:      title
       NcType: char
       vals: 20
       "NMC reanalysis Atlas"
1:      history
       NcType: char
       vals: 162
       "Created at NOAA-CIRES Climate Diagnostics Center by CAS
STD is defined as the sum of the
sqrt((individual_daily_mean-total_mon_mean)**2) where climo is
1968-1996"
2:      description
       NcType: char
       vals: 143
       "Data is from NMC initialized reanalysis
(4x/day).  It consists of most variables interpolated to
pressure surfaces from model (sigma) surfaces."
3:      platform
       NcType: char
       vals: 5
       "Model"
4:      Conventions
       NcType: char
       vals: 6
			 "COARDS"

Таким образом, в этом файле находятся данные о компоненте u (переменная uwnd) скорости ветра, которые имеют 4 измерения: lon, lat, level и time.

Теперь, получим информацию об измерении lon:

./bin/netcdf_reader -file uwnd.mon.total.std.nc -info -var lon
dims/atts: 1/3
NcType: float
dims:
0:      lon: 144
atts:
0:      units
       NcType: char
       vals: 12
       "degrees_east"
1:      long_name
       NcType: char
       vals: 9
       "Longitude"
2:      actual_range
       NcType: float
       vals: 2
			 0, 357.5

Это — долгота (longitute), и она меняется от 0 до 143 по сетке или от 0 до 357.5 градусов. Тип данных — float.

Теперь, получим сведения об измерении lat:

./bin/netcdf_reader -file uwnd.mon.total.std.nc -info -var lat
dims/atts: 1/3
NcType: float
dims:
0:      lat: 73
atts:
0:      units
       NcType: char
       vals: 13
       "degrees_north"
1:      actual_range
       NcType: float
       vals: 2
       90, -90
2:      long_name
       NcType: char
       vals: 8
			 "Latitude"

Это — широта (latitude), и она меняется от 0 до 72 по сетке или от -90 до 90 градусов. Тип данных — float.

Затем, сведения о переменной uwnd:

./bin/netcdf_reader -file uwnd.mon.total.std.nc -info -var uwnd
dims/atts: 4/13
NcType: float
dims:
0:      time: 12
1:      level: 17
2:      lat: 73
3:      lon: 144
atts:
0:      long_name
       NcType: char
       vals: 44
       "Total Standard Deviation of U-Wind by Month"
1:      actual_range
       NcType: float
       vals: 2
       0.6578583, 28.10332
2:      units
       NcType: char
       vals: 3
       "m/s"
3:      add_offset
       NcType: float
       vals: 1
       0
4:      scale_factor
       NcType: float
       vals: 1
       1
5:      missing_value
       NcType: float
       vals: 1
       -9.96921e+36
6:      precision
       NcType: short
       vals: 1
       0
7:      least_significant_digit
       NcType: short
       vals: 1
       0
8:      var_desc
       NcType: char
       vals: 8
       "u-wind
U"
9:      dataset
       NcType: char
       vals: 40
       "CDC Derived NCEP Reanalysis Products
AC"
10:     level_desc
       NcType: char
       vals: 17
       "Multiple levels
F"
11:     statistic
       NcType: char
       vals: 27
       "Total Standard Deviation
F"
12:     parent_stat
       NcType: char
       vals: 7
       "Other
-"

В данном случае, имеются 4 компоненты: time (время наблюдения по месяцам), level (высота в миллибарах), lat (широта) и lon (долгота).

Извлечение данных

Чтобы получить, например, значения uwnd за январь и на высоте 0, нужно сделать следующее:
./bin/netcdf_reader -file uwnd.inter.eof1.nc -dump -file out.bin -var
uwnd -dim level 0 1 -dim time 1 1
В результате должен получиться файл out.bin размером 144*73*4 байт.

Оставить комментарий

Для того, чтобы оставить комментарий, нужно заполнить все поля формы.
Ваше имя:
Пожалуйста, введите код, который вы видите на этой картинке: Проверочный код
Проверочный код:
Ваше сообщение: