2011-09-09 30 views
1

気象学や地球科学の研究を行っている人はいますか?私はGRIB2形式のデータファイルで作業しようとしています。利用可能なライブラリ、特にUnidata GRIB Java Decoderがあります。そして、大きな線形配列でデータを抽出する方法を正確に見ることができますが、私がしたいのは緯度/経度で値にアクセスすることです。どのように簡単な例を見つけることができません。提案?緯度/経度データのGrib2ファイルを読む

TIA!

答えて

1

パラメータと一緒に投影タイプを取得し、座標をlat/longからgrid x/yにマッピングする必要があります(geotools websiteのクラスCoordinateReferenceSystemを参照)。

+0

ありがとうございます!私はそれを構築しなければならないと思うが、私はhackierソリューション(wgrib2を繰り返し使用するのと同じようなもの)を使うつもりだ。私は優雅さを目指して努力していますが、「すぐに働く」というのは、優雅さがすべてです。 –

1

wgrib2プログラムVRTOOLと呼ばれるプログラムのインストールディレクトリにそれを見つけることができますすることで、例えば、-lonオプションを使用して、選択された緯度/経度の場所で時系列を抽出することができます:

wgrib2.exe input_file.grb2 -lon 360 90>

1

output_file.txt pygribモジュールでのPythonの使用通常、魔法のように動作します。以下のコードを使って、lats/lonsとdataを抽出することができます。

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

あなたはhttps://github.com/philippphb/GRIB2Toolsを参照してください、GRIB2Toolsを使用することができます今すぐその簡単。

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

のように入力ストリームからGRIB2ファイルに読み込んだ後、あなたが緯度/経度に基づいて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));