从github下载的ecCodes源码编译安装后,根据其提供的实例代码,调用接口,根据某一具体的气象参数来获取所有格网点的经纬度以及参数值。
具体代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <eccodes.h>
#define MAX_VAL_LEN 1024
int main(int argc, char** argv)
{
int err = 0;
size_t i = 0;
FILE* in = NULL;
const char* filename = "/home/he/grib_data/gfs_data/gfs.t06z.sfluxgrbf103.grib2";
codes_handle* h = NULL;
long numberOfPoints = 0;
const double missing = 9999.0;
double *lats, *lons, *values; /* arrays */
long paramId;
double value;
size_t vlen = MAX_VAL_LEN;
codes_index* index;
in = fopen(filename, "rb");
if (!in) {
fprintf(stderr, "Error: unable to open input file %s\n", filename);
return 1;
}
/* create new handle from a message in a file */
index = codes_index_new_from_file(0, filena