Замечено, что показания давления openweather сильно отличаются от Яндекса.
Википедия говорит, что "метеостанции рассылают так называемые «синоптические телеграммы», в которых указывается давление, приведённое к уровню моря (см. КН-01, METAR). Это делается для того, чтобы давление было сравнимо на станциях, расположенных на разных высотах, а также для нужд авиации" и "В прогнозах погоды и сводках, распространяемых для населения через интернет и по радио, используется неприведённое давление, то есть, фактическое давление на уровне местности".
В описании API openweather также написано, что они дают давление на уровне моря. Для Питера это может не так заметно, а для Москвы уже существенно.
Такая функция позволит пересчитать давление к уровню местности:
Код: Выделить всё
function getPh($Po, $to) {
$M=0.02898;
$g=9.807;
$R=8.3144598;
$T=273.15;
$h=208.0;
$Ph=$Po*exp(-($M*$g*$h)/($R*($to+$T)));
return $Ph;
}
Неудобно пересчитывать прогнозные значения, так как там дается средняя температура для утра, дня, вечера и ночи.
В описании API не удалось найти (можно спросить, но лень)
Гугл навел на какой-то метеосайт, где было написано "по местному времени, период с 0 часов до 6 утра считается ночью, утро начинается в 6 утра и продолжается до 12 часов, день до 18 часов, вечер до 0 часов".
В зависимости от текущего времени (когда получаем прогноз) можно пересчитать давление используя temp_night, eve, temp_day, temp_morn.
UPD: фукция chti уже была в /var/www/lib/my.class.php....