【问题标题】:Reading Grib2 files for lat/long data读取 Grib2 文件以获取纬度/经度数据
【发布时间】:2011-11-14 02:55:11
【问题描述】:

这里有从事气象或地球科学工作的人吗?我正在尝试使用 GRIB2 格式的数据文件。有可用的库,特别是 Unidata GRIB Java 解码器。我可以确切地看到如何在一个大的线性数组中提取数据,但我想做的是按纬度/经度访问值。找不到任何简单的例子来说明如何做到这一点。有什么建议吗?

TIA!

【问题讨论】:

    标签: java grid weather grib


    【解决方案1】:

    您将需要获取投影类型和参数,然后使用它将坐标从纬度/经度映射到网格 x/y(参见 geotools website 中的 CoordinateReferenceSystem 类)。

    【讨论】:

    • 谢谢!我想如果我必须构建它,我将使用 hackier 解决方案(比如重复使用 wgrib2!)。我追求优雅,但“快速工作”本身就有一种优雅......
    【解决方案2】:

    您可以使用 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/的程序的安装目录中找到它

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        将 python 与 pygrib 模块一起使用通常效果很好。您可以使用以下代码提取纬度/经度和数据。

        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
        

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

        【讨论】:

        • 这里的“价值观”是什么?
        【解决方案5】:

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

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

        您可以根据纬度/经度访问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));
        

        【讨论】:

          猜你喜欢
          • 2016-10-03
          • 2019-03-25
          • 2016-09-29
          • 1970-01-01
          • 1970-01-01
          • 2019-08-04
          • 1970-01-01
          相关资源
          最近更新 更多