Разработать программу под linux получения данных из grib2-файла с noaa

Цена договорная • наличный расчёт, безналичный расчёт
26 мая 2019, 12:14 • 3 отклика • 43 просмотра
Разрабатывается погодный сервис, где уже интегривано API с сайта https://openweathermap.org/ и ряда аналогичных сервисов, но для наших задач не хватает данных на заданной высоте выше уровня моря, в частности силы и направления ветра. Это основная проблема и текущая задача. Такие данные можно получить в grib2 файлах, например отсюда. Задача нашего сервиса - давать прогноз погоды по заданной точке (широта, долгота), но специфика использования подразумевает некоторые данные и по высотам относительно уровня моря. Чтобы не делать два запроса сначала в openweathermap, потом в noaa, при успешном исполнении задачи откажемся от других API и будем всё брать с grib-файла.

Задача: разработать программу исполняемую под linux (в нашем случае centos 7) на любом языке bash, python, c/c++, js и так далее. Программа должна вернуть прогноз погоды, с шагом в 1 или 3 часа на сутки вперёд, в json-формате пример.

date - дата в timestamp
overcast - процент облачности
wind - ветер по высотам, где grnd - уровень земли, 925 - уровень где атмосферное давление 925 гПа, 850, 700 и так далее. Это шаг который имеется в самих grib-файлах. speed - скорость ветра в м/с, gust - порывы в м/с, dir - направление ветра в градусах.
temperature - температура в Цельсиях, ключи по высотам аналогично с ветром.
rainfall - осадки в мм.
airHumidity - относительная влажность воздуха в %
pressure - давление в гПа

На сервере, где будет исполнятся программа уже установлены такие программы как wgrib, wgrib2, grib2json, есть python2, java, node, php, curl и прочий набор инструментов. Допустимо использование доп. зависимостей, но с адекватной по сложности установкой.

Пример вызова:
program.sh --coords “54.94, 20.15” --grib-file /path/to/file.grb2
--coords - координаты latitude longitude (широта долгота)
--grib-file - путь до заранее скаченного grib-файла, но это опционально, если параметр опущен, программа сама скачивает минимально возможный квадрат для указанных координат и из него берёт данные.

Как получать ссылку для скачивания grib-файла?
На данной странице https://nomads.ncep.noaa.gov/cgi-bin/filter_gfs_0p25_1hr.pl каждые 6 часов появляется обновленный grib-файл, всегда скачиваем последний имеющийся.
Далее, на страницы выбора параметров https://nomads.ncep.noaa.gov/cgi-bin/filter_gfs_0p25_1hr.pl?dir=%2Fgfs.2019052606 в секции "levels" выбираем нужные слои (уровень земли и далее по убыванию давления 925, 850, 700... 200), в секции "variables" выбираем нужные данные для получения, далее ставим галочку "make subregion" и высчитываем маленький квадрат по принципу и в самом конце галочка "Show the URL only for web programming" нажимаем Start download и увидим ссылку по этой ссылке, только со сменой на актуальную дату и надо производить скачивание.