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。
