Доступ ко всем параметрам файла GRIB2 с помощью pygrib
Я пытаюсь прочитать файл GRIB2, используя pygrib
, Мне удается без проблем открывать файлы и читать данные, но мне нужно автоматизировать процесс, и, к сожалению, каждый файл содержит несколько очень похожих полей:
1:Total Cloud Cover:% (avg):regular_ll:unknown:level 0 214:fcst time 0-1 hrs (avg):from 201705200000
2:Total Cloud Cover:% (avg):regular_ll:unknown:level 0 224:fcst time 0-1 hrs (avg):from 201705200000
3:Total Cloud Cover:% (avg):regular_ll:unknown:level 0 234:fcst time 0-1 hrs (avg):from 201705200000
4:Total Cloud Cover:% (avg):regular_ll:unknown:level 0 10:fcst time 0-1 hrs (avg):from 201705200000
5:Total Cloud Cover:% (instant):regular_ll:unknown:level 0 244:fcst time 1 hrs:from 201705200000
6:Total Cloud Cover:% (avg):regular_ll:unknown:level 0 211:fcst time 0-1 hrs (avg):from 201705200000
Единственным отличием (как замечено pygrib) для этих файлов является поле typeOfFirstFixedSurface
, но я понятия не имею, что это за поле (и не могу найти соответствующую информацию на сайте, где я получил файлы grib2). Я просмотрел все параметры ключ / значение для каждого сообщения и не нашел никакой другой полезной информации, которую можно было бы использовать для разграничения полей....
Однако при использовании Panoply я вижу гораздо больше параметров, например:
float Total_cloud_cover_convective_cloud(time=1, lat=721, lon=1440);
:long_name = "Total cloud cover @ Convective cloud layer";
:units = "%";
:abbreviation = "TCDC";
:missing_value = NaNf; // float
:grid_mapping = "LatLon_Projection";
:coordinates = "reftime time lat lon ";
:Grib_Variable_Id = "VAR_0-6-1_L244";
:Grib2_Parameter = 0, 6, 1; // int
:Grib2_Parameter_Discipline = "Meteorological products";
:Grib2_Parameter_Category = "Cloud";
:Grib2_Parameter_Name = "Total cloud cover";
:Grib2_Level_Type = "Convective cloud layer";
:Grib2_Generating_Process_Type = "Forecast";
Я мог бы окончательно использовать long_name
или же Grib_Variable_Id
поля, чтобы различать сообщения, но я не могу получить доступ к этим "параметрам", используя pygrib.
Есть ли способ получить доступ к этим параметрам с помощью Pygrib?
2 ответа
У меня было много проблем с выяснением этого конкретного формата и инструментов, которые могли бы помочь мне с его чтением / анализом... В конце концов, я закончил с использованием IRIS, который оказался в очень грязной настройке. Я сделал это полтора года назад на машине Ubuntu с Python 2.7. Я вставляю шаги, которые мне нужно было сделать для установки IRIS и всех возможных зависимостей, надеюсь, это будет вам полезно, хотя, вероятно, во всей установке есть много устаревших версий...
Удачи!
# http://scitools.org.uk/iris/docs/latest/installing.html
# necessary steps for a clean machine
#
# sudo apt-get install gcc python-dev build-essential python-setuptools libpq-dev git unzip cmake
# pip install virtualenv
# pip install virtualenvwrapper
# mkdir ~/.virtualenvs
# nano ~/.bashrc
# export WORKON_HOME=$HOME/.virtualenvs
# source /usr/local/bin/virtualenvwrapper.sh
# . ~/.bashrc
# mkvirtualenv iris
pip install numpy
pip install biggus
sudo apt-get install libblas-dev liblapack-dev libatlas-base-dev gfortran
# OR
# sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy python-nose
pip install scipy
# cartopy dependecies
pip install cython
# https://github.com/OSGeo/proj.4
wget http://download.osgeo.org/proj/proj-4.9.1.tar.gz
tar -xzf proj-4.9.1.tar.gz
cd proj-4.9.1/
./configure
make
make install
# OR
# sudo apt-get install libproj-dev
# sudo apt-get install libgeos-dev
# http://sourceforge.net/projects/pyke/files/pyke/
wget http://sourceforge.net/projects/pyke/files/pyke/1.1.1/pyke-1.1.1.zip/download
unzip download
cd pyke-1.1.1/
python setup.py build
python setup.py install
pip install cartopy
# netcdf4 dependecies
# https://code.google.com/p/netcdf4-python/wiki/UbuntuInstall
# wget https://www.hdfgroup.org/ftp/HDF5/current/src/hdf5-1.8.16.tar (??????????????)
sudo apt-get install libhdf5-dev
pip install h5py
sudo apt-get install python-netcdf libnetcdf-dev libnetcdf4
git clone https://github.com/Unidata/netcdf4-python.git
cd netcdf4-python
python setup.py build
python setup.py install
# other iris dependencies
pip install cf_units
sudo apt-get install libudunits2-dev
nano ~/.bashrc
# check where exactly xml file is
export UDUNITS2_XML_PATH=/usr/local/share/doc/udunits/udunits2.xml
. ~/.bashrc
pip install pillow
# gribapi
# https://software.ecmwf.int/wiki/display/GRIB/GRIB+API+CMake+installation
wget https://software.ecmwf.int/wiki/download/attachments/3473437/grib_api-1.14.4-Source.tar.gz?api=v2
tar -xzf grib_api-1.14.4-Source.tar.gz?api=v2
mkdir build; cd build
cmake ../grib_api-1.14.0-Source -DENABLE_PYTHON=ON
make -j4
ctest -j4
make install
# OR
# sudo apt-get install libgrib-api-dev
# sudo apt-get install openjpeg-tools
cp -R /usr/local/lib/python2.7/site-packages/grib_api ~/.virtualenvs/iristest/lib/python2.7/site-packages/
# aaaand, here we go, iris!
git clone https://github.com/SciTools/iris.git
cd iris
python setup.py build
python setup.py install
# rejoice!
# pip freeze output:
# Biggus==0.12.0
# Cartopy==0.13.0
# cf-units==1.0.0
# Cython==0.23.4
# h5py==2.5.0
# Iris==1.10.0.dev0
# netCDF4==1.2.2
# numpy==1.10.2
# Pillow==3.0.0
# pyke==1.1.1
# pyshp==1.2.3
# scipy==0.16.1
# Shapely==1.5.13
# six==1.10.0
Чтобы установить iris с помощью дистрибутива Anaconda, я сделал:
conda install -c conda-forge iris
и все необходимые пакеты были установлены сразу без проблем. У меня есть версия Anaconda 3.
Ура,
Pere