Question

Quelqu'un ici fait du travail météorologique ou de la terre? J'essaie de travailler avec les fichiers de données de format GRIB2. Il existe des bibliothèques disponibles, en particulier le décodeur Java Unidata Grib. Et je peux voir exactement comment extraire des données dans un grand tableau linéaire, mais ce que je veux faire, c'est accéder aux valeurs par lat / long. Impossible de trouver un exemple simple sur la façon de procéder. Suggestions?

Tia!

Était-ce utile?

La solution

Vous devrez obtenir le type de projection avec les paramètres, puis l'utiliser pour cartographier les coordonnées de Lat / Long à Grid X / Y (voir Fe la classe CoordinateReferenceSystem du Site Web Geotools).

Autres conseils

Vous pouvez utiliser l'outil degrib pour sonder les données à un lat / long spécifié. Vois ici http://www.weather.gov/mdl/degrib/txtview.php?file=degrib.txt&dir=base Un exemple de Windows serait 'degrib.exe myfile.grib -p -pnt 40.0, -10.0 -interp 2'. Si vous avez besoin de Degrib.exe, vous pouvez le trouver dans le répertoire d'installation d'un programme appelé VRTool http://www.tecepe.com.br/nav/vrtool/

La wgrib2 Le programme vous permet d'extraire une série chronologique à un emplacement LAT / LON choisi en utilisant l'option -LON, par exemple:

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

L'utilisation de Python avec le module PyGrib fonctionne généralement comme un charme. Vous pouvez extraire des lats / lons et des données avec le code suivant.

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

Maintenant, il est facile de visualiser les données avec la boîte à outils BasEmap ou l'exporter vers un fichier approprié :)

Vous pouvez utiliser les grib2tools, voir https://github.com/philippphb/grib2tools. Après avoir lu dans un fichier GRIB2 à partir d'un INPUTSTREAM comme

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

Vous pouvez accéder aux données du fichier GRIB basé sur Lat / LON:

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

Vous pouvez également obtenir des données interpolées pour les positions LAT / LON qui ne sont pas exactement sur la grille:

double longitude = ...   // in degrees
double latitude = ...    // in degrees
float val = gribFile.interpolateValueAt(0, GribFile.degToUnits(latitude), GribFile.degToUnits(longiude));
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top