Вероятность осадки

Всё, что не подходит под вышеперечисленные разделы

Модератор: immortal

Ответить
Аватара пользователя
webms
Сообщения: 498
Зарегистрирован: Чт дек 15, 2016 3:13 am
Благодарил (а): 221 раз
Поблагодарили: 88 раз

Вероятность осадки

Сообщение webms » Ср сен 26, 2018 8:45 am

Всем привет, помогите вычислить вероятность осадки в проц (как на примере).
Откуда вообще брать данные?, как вычислять?

Код: Выделить всё

$city_id = 10738; //Люберцы
//ID города узнаем тут: https://yandex.ru/yaca/geo.c2n

$data_file = "https://export.yandex.ru/bar/reginfo.xml?region=$city_id.xml?".rand(); // адрес xml файла
$xml = simplexml_load_file($data_file); // раскладываем xml на массив
if ($xml === false) { // Проверить можно также !is_object( $xml ) или !$xml
    setTimeOut("restart_PogodaYandex", "runScript('PogodaYandex');", 5*60);
    if (gg("Communication.stateColor") == 'green') {
 	  registerError('Яндекс.Погода не обновляется', 'Ошибка');
    }
    return;
}

$temp = $xml -> weather -> day -> day_part -> temperature; // температура сейчас
$temp = getTempSign($temp); // Если значение температуры положительно, для наглядности добавляем "+"

// сохраняем основные параметры текущей погоды
//sg("PogodaYandex.City", $xml -> weather -> day -> title);
sg("PogodaYandex.Temp", $temp);
sg("PogodaYandex.Type", $xml -> weather -> day -> day_part -> weather_type);
sg("PogodaYandex.Pressure", $xml -> weather -> day -> day_part -> pressure);

// Влажность
sg("PogodaYandex.Humidity", $xml -> weather -> day -> day_part -> dampness);
sg("PogodaYandex.WindSpeed", $xml -> weather -> day -> day_part -> wind_speed);
sg("PogodaYandex.Image", $xml -> weather -> day -> day_part -> image);
sg("PogodaYandex.Image2", $xml -> weather -> day -> day_part -> { 'image-v3' });

// Направление ветра
sg("PogodaYandex.WindDir", $xml -> weather -> day -> day_part -> wind_direction);

// Солнце: восход/закат
sg("PogodaYandex.SunRise", $xml -> weather -> day -> sun_rise);
sg("PogodaYandex.SunSet", $xml -> weather -> day -> sunset);
$DayStart = explode(":", gg("PogodaYandex.SunRise"));
$DayEnd = explode(":", gg("PogodaYandex.SunSet"));
$h_start = (int) $DayStart[0];
$m_start = (int) $DayStart[1];
$h_end = (int) $DayEnd[0];
$m_end = (int) $DayEnd[1];

$dh = $h_end - $h_start;
$dm = $m_end - $m_start;

if ($dm < 0) {
    $dh = $dh - 1;
    $dm = $dm + 60;
}
sg("PogodaYandex.LongTag", "$dh:$dm");

// длинный текстовый прогноз погоды
$metcast = "На улице ".gg("PogodaYandex.Type").".";
// ветер
$WindSpeed = (float) gg("PogodaYandex.WindSpeed");
if ($WindSpeed < 1) {
    $metcast.= ' Ветра, скорее всего, нет.';
}
elseif($WindSpeed < 3) {
    $metcast.= ' Возможен слабый ветер.';
}
elseif($WindSpeed < 8) {
    $metcast.= ' Возможен умеренный ветер.';
}
elseif($WindSpeed < 13) {
    $metcast.= ' Возможен сильный ветер.';
}
elseif($WindSpeed < 20) {
    $metcast.= ' Возможен довольно сильный ветер.';
}
elseif($WindSpeed < 28) {
    $metcast.= ' Возможен штормовой ветер.';
} else {
    $metcast.= ' Ветер очень очень сильный, УРАГАН!. ';
}

$w = round(strip_tags(gg("PogodaYandex.Temp")));
$tempw = $w;

if ($w < "0") {
    $tempw = abs($w);
}
if ($w > "0") {
    $templus = " плюс ";
}

if ($tempw >= 11 and $tempw <= 14) {
    $tempcels = " градусов";
} else {
    while ($tempw > 9) {
        $tempw = $tempw - 10;
    }

    if ($tempw == 0 or $tempw >= 5 and $tempw <= 9) {
        $tempcels = "градусов";
    }
    if ($tempw == 1) {
        $tempcels = "градус";
    }
    if ($tempw >= 2 and $tempw <= 4) {
        $tempcels = "градуса";
    }
}
$metcast.= ' Температура '.gg("PogodaYandex.Temp").' '.$tempcels.'.';
$tm = (float) gg("PogodaYandex.Temp");
if ($tm < -40) {
    $metcast.= ' Очень очень очень холодно!.';
}
elseif($tm < -30) {
    $metcast.= ' Очень холодно, оденьтесь теплее.';
}
elseif($tm < -20) {
    $metcast.= ' Очень холодно.';
}
elseif($tm < -10) {
    $metcast.= ' Холодно.';
}
elseif($tm < -3) {
    $metcast.= ' Не особо холодно.';
}
elseif($tm < 3) {
    $metcast.= ' Значит, возможно, гололёд.';
}
elseif($tm < 10) {
    $metcast.= ' Прохладно.';
}
elseif($tm < 25) {
    $metcast.= ' Тепло.';
}
elseif($tm < 30) {
    $metcast.= ' Жарко.';
}
elseif($tm > 30) {
    $metcast.= ' Очень жарко!.';
}

$metcast.= ' Восход солнца сегодня в '.gg("PogodaYandex.SunRise").',';
$metcast.= ' закат в '.gg("PogodaYandex.SunSet").'.';
//$metcast.=' долгота дня '.getGlobal('PogodaYandex.LongTag').'.';    
sg('PogodaYandex.WeatherDnes', $metcast);

//Дата и время последнего обновления
//sg("PogodaYandex.UpdatedTime", time());
sg("PogodaYandex.update", date("d.m.Y H:i", time()));

// КОНЕЦ ОСНОВНОГО БЛОКА
// Функция - добавления "+" к положительной температуре
function getTempSign($temp) {
    $temp = (int) $temp;
    return $temp > 0 ? '+'.$temp : $temp;
}

// Функция - получить направления ветра в МАССИВ
function getWindDirectionY($wind) {
    $wind = (string) $wind;
    $wind_direction = array('s' => '&#8593; ю',
        'n' => '&#8595; с',
        'w' => '&#8594; з',
        'e' => '&#8592; в',
        'sw' => '&#8599; юз',
        'se' => '&#8598; юв',
        'nw' => '&#8600; сз',
        'ne' => '&#8601; св');

    $wind_dirtxt = array('s' => 'южный',
        'n' => 'северный',
        'w' => 'западный',
        'e' => 'восточный',
        'sw' => 'юго-западный',
        'se' => 'юго-восточный',
        'nw' => 'северо-западный',
        'ne' => 'северо-восточный');

    return array($wind_direction[$wind], $wind_dirtxt[$wind]);
}
Вложения
Clip2net_180926084016.png
Clip2net_180926084016.png (63.28 КБ) 2030 просмотров
Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

Re: Вероятность осадки

Сообщение xor » Чт сен 27, 2018 11:48 pm

webms писал(а):
Ср сен 26, 2018 8:45 am
Всем привет, помогите вычислить вероятность осадки в проц (как на примере).
Откуда вообще брать данные?, как вычислять?
Вычислить - никак, если только самому не рассчитывать модель погоды). Я вероятность осадков получаю от Гидрометцентра
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 815 раз

Re: Вероятность осадки

Сообщение tarasfrompir » Пт сен 28, 2018 9:53 am

https://connect.smartliving.ru/profile/ ... og143.html заглянь сюда - немного не то , но все же
Спасибо нам ПОМОЖЕТ..!
Ответить