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 байт.