Программа предназначена для извлечения данных из файлов формата NetCDF. В таком формате распространяются, например, данные о климате.
Отличительная особенность формата NetCDF заключается в том, что в одном файле могут содержаться несколько различных многомерных данных. Поэтому файл включает в себя заголовок, по которому можно понять, какие именно данные в нем содержатся. NetCDF Reader может как читать заголовки, так и извлекать из файла данные, делая проекцию на любые измерения.
Распространяется по лицензии BSD из трех пунктов.
Скачать 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
Это долгота (longitude), и она меняется от 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 байт.