ecCodes学习笔记:使用conda在Windows中编译ecCodes
2019年11月:新版本的eccodes已可以在Windows下解码JPEG压缩的GRIB2文件,所以请直接使用conda安装eccodes包。
ecmwf已与今年2月份官方提供windows环境下的ecCodes库,详情参见《ecCodes and Magics available under Windows》。但经过我的实际测试,截止到2019年5月,使用conda安装的ecCodes不支持JPEG压缩,无法读取GRIB2最常见的数据种类,即使用JPEG压缩的GRIB2文件。因此,还是需要从源码编译。
ecCodes已内置AppVeyor上的windows编译,参考.appveyor.yml
文件,使用conda环境在Windows中编译ecCodes。
准备编译环境
准备Visual Studio编译环境,我使用Visual Studio 2019测试。
安装conda环境,例如安装Anaconda 3发行包。注:因为我不编译ecCodes的Python接口,所以可以使用python 3.x。
可以创建一个单独的env用来编译ecCodes,例如我创建nuwe_pyeeccodes
环境,并通过Anaconda启动一个终端。
启动终端后还需要激活 Visual Studio 编译环境,例如激活Visual Studio 2019 x64编译器。
"C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
配置环境变量
需要的环境变量如下:
INSTALL_DIR
:ecCodes安装的目标位置ECCODES_SRC
: ecCodes源码目录ECBUILD_SRC
: ecbuild源码目录
准备软件
下载eccodes源码,可以下载软件包解压到目标路径
git clone --depth 1 https://github.com/ecmwf/eccodes.git %ECCODES_SRC%
下载ecbuild源码
git clone --depth 1 https://github.com/ecmwf/ecbuild.git %ECBUILD_SRC%
安装依赖库
安装linux工具
conda install -c msys2 m2-bash ^
m2-findutils ^
m2-coreutils ^
m2-grep ^
m2-sed ^
m2-gawk ^
m2-diffutils ^
m2-perl
安装最新版的cmake
conda install -c conda-forge cmake
安装JPEG解码库OpenJPEG
conda install openjpeg
编译
cmake自动查找OPENJPEG有问题,需要手动指定OPENJPEG_INCLUDE_DIR
变量。
cd %ECCODES_SRC%
mkdir build && cd build
cmake -G "NMake Makefiles" ^
-D CMAKE_INSTALL_PREFIX=%INSTALL_DIR% ^
-D CMAKE_BUILD_TYPE=Release ^
-D ENABLE_FORTRAN=0 ^
-D ENABLE_PYTHON=0 ^
-D ENABLE_NETCDF=0 ^
-D ENABLE_JPG=1 ^
-D IEEE_LE=1 ^
-D ENABLE_MEMFS=0 ^
-D ENABLE_TESTS=0 ^
-D ENABLE_EXTRA_TESTS=OFF ^
-D OPENJPEG_INCLUDE_DIR="C:/Users/windroc/Anaconda3/envs/nuwe_pyeccodes/Library/include/openjpeg-2.3" ^
..
nmake
nmake install
将install目录下的内容拷贝到conda环境的Library目录下,完成ecCodes的安装。
使用
需要设置环境变量ECCODES_DEFINITION_PATH
和ECCODES_SAMPLES_PATH
。