ここで気象学や地球科学の仕事をしている人はいますか?GRIB2形式のデータファイルを操作しようとしています。利用可能なライブラリ、特にUnidata GRIBJavaDecoderがあります。そして、大きな線形配列でデータを抽出する方法を正確に理解できますが、私がやりたいのは、緯度/経度で値にアクセスすることです。それを行う方法についての簡単な例を見つけることができません。提案?
TIA!
pygribモジュールでPythonを使用すると、通常は魅力のように機能します。次のコードを使用して、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
これで、ベースマップツールキットを使用してデータを簡単に視覚化したり、適切なファイルにエクスポートしたりできます:)
パラメータとともに投影タイプを取得し、それを使用して緯度/経度からグリッドx / yに座標をマッピングする必要があります(geotools WebサイトCoordinateReferenceSystem
のクラスを参照)。
DEGRIBツールを使用して、指定した緯度/経度でデータをプローブできます。ここを参照してくださいhttp://www.weather.gov/mdl/degrib/txtview.php?file=degrib.txt&dir=baseWindowsの例は次のようになります。'degrib.exemyfile.grib -P -pnt 40.0、-10.0 -Interp 2 '。DEGRIB.EXEが必要な場合は、VRTOOLhttp://www.tecepe.com.br/nav/vrtool/というプログラムのインストールディレクトリにあります。
wgrib2プログラムでは、-lonオプションを使用して、選択した緯度/経度の場所で時系列を抽出できます。次に例を示します。
wgrib2.exe input_file.grb2 -lon 360 90> output_file.txt
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));