2011-09-09 85 views
1

任何人在這裏做氣象或地球科學的工作?我正在嘗試使用GRIB2格式的數據文件。有可用的庫,特別是Unidata GRIB Java解碼器。我可以看到如何在大型線性數組中提取數據,但我想要做的是通過lat/long訪問值。找不到任何關於如何做到這一點的簡單例子。建議?經緯度數據讀取Grib2文件

TIA!

回答

1

您將需要獲取投影類型以及參數,然後使用它將經緯度座標從緯度/長度映射到網格x/y(請參見f.e. geotools website中的類CoordinateReferenceSystem)。

+0

謝謝!我想如果我必須建立這個,我會使用hackier解決方案(就像反覆使用wgrib2一樣!)。我努力追求高雅,但「快速工作」擁有各自的優雅...... –

1

wgrib2程序允許您使用-lon選項在選定的緯度/經度位置提取時間序列,例如:

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

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 

其易於使用的工具包底圖可視化的數據或將其導出到一個合適的文件:

+0

這裏的'價值'是什麼? – Rahul

0

您可以使用GRIB2Tools,看到https://github.com/philippphb/GRIB2Tools。對於經/緯度位置

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

你也可以插數據:從InputStream在GRIB2文件中讀取像

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

後,您可以根據經/緯度訪問GRIB文件的數據不完全在網格上:

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