Чтение файлов Grib2 для данных широты и долготы

Кто-нибудь здесь занимается метеорологией или науками о Земле? Я пытаюсь работать с файлами данных формата GRIB2. Доступны библиотеки, в частности Java Decoder Unidata GRIB. И я могу точно видеть, как извлекать данные в большом линейном массиве, но я хочу получить доступ к значениям по широте / долготе. Не могу найти простого примера, как это сделать. Предложения?

TIA!


person Rick Wayne    schedule 09.09.2011    source источник


Ответы (5)


Вам нужно будет получить тип проекции вместе с параметрами, а затем использовать его для сопоставления координат от широты / долготы до сетки x / y (см., Например, класс CoordinateReferenceSystem из сайт геоинструментов).

person Tassos Bassoukos    schedule 10.09.2011
comment
Спасибо! Думаю, если мне придется это построить, я буду использовать более хакерские решения (например, просто многократно использовать wgrib2!). Я стремлюсь к элегантности, но в быстрой работе есть сама элегантность ... - person Rick Wayne; 12.09.2011

Использование 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

Теперь легко визуализировать данные с помощью набора инструментов базовой карты или экспортировать их в подходящий файл :)

person petny    schedule 14.05.2014
comment
Что здесь «ценности»? - person Rahul; 03.06.2016

Вы можете использовать инструмент 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/

person Ricardo Carvalho    schedule 25.09.2011

Программа wgrib2 позволяет извлекать временной ряд в выбранной широте. / lon расположение с помощью параметра -lon, например:

wgrib2.exe входной_файл.grb2 -lon 360 90> выходной_файл.txt

person KAE    schedule 30.01.2013

Вы можете использовать GRIB2Tools, см. https://github.com/philippphb/GRIB2Tools. После чтения файла GRIB2 из InputStream, например

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));
person gisdev_p    schedule 09.10.2017