读取Grib2文件的lat / long数据

时间:2011-09-09 21:27:14

标签: java grid weather grib

这里有人做气象或地球科学工作吗?我正在尝试使用GRIB2格式的数据文件。有可用的库,特别是Unidata GRIB Java解码器。我可以确切地看到如何在大型线性阵列中提取数据,但我想要做的是通过lat / long访问值。找不到任何关于如何做到的简单示例。建议?

TIA!

5 个答案:

答案 0 :(得分:1)

您需要获取投影类型以及参数,然后使用它来将坐标从lat / long映射到网格x / y(参见f {。geotools website中的类CoordinateReferenceSystem)。

答案 1 :(得分:1)

您可以使用DEGRIB工具探测指定纬度/经度的数据。请参阅此处http://www.weather.gov/mdl/degrib/txtview.php?file=degrib.txt&dir=base Windows示例为'degrib.exe myfile.grib -P -pnt 40.0,-10.0 -Interp 2'。如果需要DEGRIB.EXE,可以在名为VRTOOL http://www.tecepe.com.br/nav/vrtool/

的程序的安装目录中找到它。

答案 2 :(得分:1)

wgrib2程序允许您使用-lon选项在选定的纬度/经度位置提取时间序列,例如:

wgrib2.exe input_file.grb2 -lon 360 90> output_file.txt

答案 3 :(得分:1)

将python与pygrib模块一起使用通常就像魅力一样。您可以使用以下代码提取lats / lons和数据。

import pygrib

gr=pygrib.open(file)
data=values.(gr[key]) #use the key to the variable of interest to extract its data
lats,lons=(gr.readline()).latlons() #extract coordinates

现在可以使用底图工具包轻松查看数据或将其导出到合适的文件:)

答案 4 :(得分:0)

您可以使用GRIB2Tools,请参阅https://github.com/philippphb/GRIB2Tools。从InputStream读取GRIB2文件后,如

RandomAccessGribFile gribFile = new RandomAccessGribFile("", "");
gribFile.importFromStream(inputstream, 0);

您可以根据lat / lon:

访问GRIB文件的数据
double longitude = ...   // in degrees
double latitude = ...    // in degrees
float val = gribFile.getValueAt(0, GribFile.degToUnits(latitude), GribFile.degToUnits(longiude));

您还可以获得不完全在网格上的纬度/经度位置的插值数据:

double longitude = ...   // in degrees
double latitude = ...    // in degrees
float val = gribFile.interpolateValueAt(0, GribFile.degToUnits(latitude), GribFile.degToUnits(longiude));