解析grib格式数据库eccodes的安装
解析grib格式数据库eccodes的安装
- 一、说明
- 二、安装eccodes库
- 三、测试代码
一、说明
1、环境:在rethat7.4下使用eccodes-2.8.0解析grib数据。
2、eccodes下载地址:https://confluence.ecmwf.int//display/ECC/Releases
3、需要cmake编译安装,cmake下载地址:https://cmake.org/download/
二、安装eccodes库
1、解压cmake
gunzip cmake-3.12.0.tar.gz
tar -xvf cmake-3.12.0.tar
2、安装cmake
cd cmake-3.12.0/
./bootstrap
make
make install
如果不安装cmake的话,会提示下面的错误:
3、解压eccodes库
gunzip eccodes-2.8.0-Source.tar.gz
tar -xvf eccodes-2.8.0-Source.tar
4、安装eccodes库
cd eccodes-2.8.0-Source/
mkdir build
cd build
cmake …/…/eccodes-2.8.0-Source -DCMAKE_INSTALL_PREFIX=/usr/local/lib
如果提示找不到libgfortran.so.3链接库,可以使用下面的命令:
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lib …/…/eccodes-2.8.0-Source -DENABLE_FORTRAN=OFF
编译后正确的截图如下:
然后 make make install 即可
三、测试代码
测试eccodes库的使用,使用的是官方的例子
/** Copyright 2005-2018 ECMWF.** This software is licensed under the terms of the Apache Licence Version 2.0* which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.** In applying this licence, ECMWF does not waive the privileges and immunities granted to it by* virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.*//** C Implementation: grib_get_data** Description: how to get lat/lon/values from a GRIB message**/
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include "eccodes.h"using namespace std;int main (int argc, char **argv)
{int err = 0;size_t i = 0;FILE *in = NULL;const char *filename = "/mnt/hgfs/winShareUbuntu/reduced_latlon_surface.grib1";codes_handle *h = NULL;long numberOfPoints = 0;const double missing = 9999.0;double *lats, *lons, *values; /* arrays */in = fopen (filename, "r");if (!in) {printf ("ERROR: unable to open input file %s\n", filename);return 1;}/* create new handle from a message in a file */h = codes_handle_new_from_file (0, in, PRODUCT_GRIB, &err);if (h == NULL) {printf ("Error: unable to create handle from file %s\n", filename);return 1;}CODES_CHECK (codes_get_long (h, "numberOfPoints", &numberOfPoints), 0);CODES_CHECK (codes_set_double (h, "missingValue", missing), 0);lats = (double *) malloc (numberOfPoints * sizeof (double));if (!lats) {printf ("unable to allocate %ld bytes\n", (long) (numberOfPoints * sizeof (double)));return 1;}lons = (double *) malloc (numberOfPoints * sizeof (double));if (!lons) {printf ("unable to allocate %ld bytes\n", (long) (numberOfPoints * sizeof (double)));free (lats);return 1;}values = (double *) malloc (numberOfPoints * sizeof (double));if (!values) {printf ("unable to allocate %ld bytes\n", (long) (numberOfPoints * sizeof (double)));free (lats);free (lons);return 1;}CODES_CHECK (codes_grib_get_data (h, lats, lons, values), 0);for (i = 0; i < numberOfPoints; ++i) {if (values[i] != missing) {printf ("%f %f %f\n", lats[i], lons[i], values[i]);}}free (lats);free (lons);free (values);codes_handle_delete (h);fclose (in);return 0;
}
运行的结果截图:
说明:最近才开始学习ecodes库,也在继续学习中,待出成果再继续分享。。。
解析grib格式数据库eccodes的安装相关推荐
- 读取grib格式的小工具,在linux中的安装
@1.介绍: grib文件包括二种格式分别为: grib1格式和grib2格式 请看链接: http://en.wikipedia.org/wiki/GRIB 中文版,请看"grib格式转换 ...
- grib1文件解析 python_python读取grib格式数据
python 读取grib/grib2格式数据 一般利用NCL(NCAR Command Language)读取.利用Python语言的pygrib库也可以读取grib/grib2格式数据 grib/ ...
- Hadoop学习笔记(16)Hive的基本概念、Hive的下载与安装、MySQL数据库下载与安装
一.Hive基本概念 1.Hive简介 Hive是一个基于hadoop的开源数据仓库工具,用于存储和处理海量结构化数据.它把海量数据存储于hadoop文件系统,而不是数据库,但提供了一套类数据库的数据 ...
- Android解析xml的方法,Android中解析XML格式数据的方法
XML介绍:Extensible Markup Language,即可扩展标记语言 一.概述 Android中解析XML格式数据大致有三种方法: SAX DOM PULL 二.详解 2.1 SAX S ...
- 卸载oracle10g服务端,oracle10g数据库服务器的安装与卸载.ppt
<oracle10g数据库服务器的安装与卸载.ppt>由会员分享,可在线阅读,更多相关<oracle10g数据库服务器的安装与卸载.ppt(40页珍藏版)>请在装配图网上搜索. ...
- python读取grib2数据_python2 解析 Grib/Grib2数据
python2 解析 Grib/Grib2数据 sudoapt-get installgfortran cmake zlib1g-dev libpng-dev jasper libjpeg-dev l ...
- python中json模块_Python使用内置json模块解析json格式数据的方法
本文实例讲述了Python使用内置json模块解析json格式数据的方法.分享给大家供大家参考,具体如下: Python中解析json字符串非常简单,直接用内置的json模块就可以,不需要安装额外的模 ...
- java解析sql查询字段_sql解析json格式字段 如何获取json中某个字段的值?
java将json数据解析为sql语句?小编给你倒一杯热水.可你惦记着其他饮料,所以你将它放置一旁.等你想起那杯水时,可惜它已经变得冰冷刺骨. 图片中是json数据,每个数据的开头都有表名称,操作类型 ...
- cjson 对象是json数组型结构体_C语言 - cJSON解析特定格式 含有数组array类型的数据...
在ESP32中使用了cJSON库,发现很好用.最近服务器端的JSON格式越来越多样,还是有些注意点,需要做下笔记记录下来. cJSON *MAC_arry = cJSON_GetObjectItem( ...
最新文章
- python下载图片
- LeetCode——树:递归
- 三个变量中怎么找出中间值_scratch图形化编程基础练习-变量交换
- Extjs formpanel加载数据的两种方式
- Java学习(01-10天, 基本语法)
- 从本科到研究生,看大疆工程师给你定制的机器人学习计划
- 训练集,验证集,测试集
- 机器学习教程 二.在股票上的回归预测
- MFC ScreenToClient坐标转换错误
- Iframe中,弹出层屏幕垂直居中
- Matlab 并行代码
- 轻轻松松背单词软件测试,完美单词王app
- 揭密Oracle之七种武器之三:破译古老的谜题---共享CBC Latch的秘密
- 2012文件服务器 读写日志,管理用户访问日志记录记录
- 2022年海外有哪些直播带货平台?直播带货要怎么做?
- python numpy 多条件筛选
- 消费者和生产者问题,管程法和信号灯法
- 关闭LINUX报警声
- 可以直接在QQ上直接提取图片的文字啦
- BZOJ 3039 玉蟾宫 最大子矩阵 算♂法②
热门文章
- 红米K50配置出炉,红米旗舰对小米有何影响?
- mysql磁盘阵列部署_部署磁盘阵列
- pxe高效批量网络装机--手把手教学
- ShaderJoy —— 烟花爆炸特效【GLSL】
- @Select注解动态sql语句
- python中seaborn是什么_Python数据分析之seaborn常用方法
- houdini环境变量服务器文件读不了,Windows下在普通命令行窗口里初始化Houdini环境...
- 分析1300万起案件:洛杉矶警局如何用大数据预测犯罪?
- App测试分类总结及方法
- 【python】opencv教程CV2模块——图片处理,HSV、色调、亮度调节