気象のグリッドデータに使われているファイルフォーマットであるGRIB2ファイルを操作するコマンドwgrib2
をインストールする方法。
環境
- OS: MacOS Ventura 13.0.1 (Apple M1)
手順
必要なコマンドのインストール
gcc
gfortran
cmake
をHomebrewでインストールする。Homebrewのインストールがまだの場合は先にインストールしておく(公式サイト)。
$ brew install gcc cmake
インストールされたかどうかは、
$ ls /opt/homebrew/bin
を実行した時に、gcc-X
gfortran-X
cmake
(Xはバージョン番号。筆者の環境ではgcc-13
gfortran-13
)があればOK。
$ which gcc-13
$ which gfortran-13
$ which cmake
で一応確認。
wgrib2ファイルのダウンロード
ダウンロードサイトから取得する。
$ curl https://www.ftp.cpc.ncep.noaa.gov/wd51we/wgrib2/wgrib2.tgz -o wgrib2.tgz
で取得できる。過去のバージョンも保存されているので必要に応じてそちらをダウンロードしても良いが、基本的には最新バージョンであるwgrib2.tgz
をダウンロードする(筆者がダウンロードしたのはv3.1.3
)。
コンパイルの準備
まずは、ファイルを解凍する。
$ tar -xvf wgrib2.tgz
解凍後、生成されたgrib2
ディレクトリ内のMakefile
を開き、
# export CC=gcc
# export FC=gfortran
のコメントアウトを外し、バージョンに合わせてgcc -> gcc-X
gfortran -> gfortran-X
に書き換える。
次に、1000行目あたりにある、
# export LDFLAGS="-L${lib}" && cd "${pngdir}" && export CPPFLAGS="${wCPPFLAGS}" && ${MAKE} -f scripts/makefile.darwin
のコメントアウトも外す。
次に、
USE_G2CLIB=0
USE_PNG=1
USE_JASPER=0
USE_OPENJPEG=1
USE_AEC=1
あたりのUSE_PNG=1
をUSE_PNG=0
に書き換える。これをしないとコンパイルした時に、
Undefined symbols for architecture arm64:
"_png_set_longjmp_fn", referenced from:
_pngtoimage_internal in convertpng.c.o
_imagetopng in convertpng.c.o
ld: symbol(s) not found for architecture arm64
collect2: error: ld returned 1 exit status
make[3]: *** [bin/opj_decompress] Error 1
make[2]: *** [src/bin/jp2/CMakeFiles/opj_decompress.dir/all] Error 2
make[1]: *** [all] Error 2
みたいなエラーが出た。
makefile
を閉じ、
$ cd grib2
$ tar -xvf libpng-1.2.59.tar.gz
で解凍する(ファイル名はバージョンに合わせて適宜変更してください)。
生成されたlibpng-1.2.59/makefile.darwin
を開き、
# Utilities:
CC=cc
AR_RC=ar rc
MKDIR_P=mkdir -p
LN_SF=ln -sf
RANLIB=ranlib
RM_F=/bin/rm -f
あたりのCC=cc
をCC=gcc-X
に書き換える。
書き換えたら、
$ tar -cf libpng-1.2.59.tar libpng-1.2.59
$ gzip libpng-1.2.59.tar
で圧縮し直す(こちらもファイル名は適宜変更してください)。「ファイルがすでにあるよ」みたいな注意が出たら、y
と答える。
コンパイル
ここまでできたらいよいよ
$ make
でコンパイル。
完了したら、
$ ls wgrib2
でwgrib2
が生成されていることを確認する。
インストール
$ sudo install wgrib2/wgrib2 /usr/local/bin
でインストール。一応確認しておく。
$ which wgrib2
/usr/local/bin/wgrib2
$ wgrib2 --version
v3.1.3 10/2023 Wesley Ebisuzaki, Reinoud Bokhorst, John Howard, Jaakko Hyvätti, Dusan Jovic, Daniel Lee, Kristian Nilssen, Karl Pfeiffer, Pablo Romero, Manfred Schwarb, Gregor Schee, Arlindo da Silva, Niklas Sondell, Sam Trahan, George Trojan, Sergey Varlamov
めでたしめでたし。