Relaciones de temperatura real y Yandex. Previsión meteorológica

Por la mañana, cuando desayuno, miro a través de Yandex, el clima casi a diario y periódicamente tengo una sensación de deja vu, pero solo al revés. Usted mira, se indica una temperatura para el fin de semana y al día siguiente, ya se prometen los otros indicadores de temperatura. Lentamente, comienza a dudar de su memoria (30 años, esta es la cuarta docena que ha comenzado). Pero para no perder el corazón por completo, decidí verificar cuánto se correlaciona el pronóstico con la temperatura real.


La línea azul es la temperatura real. El área naranja es el rango de predicciones.


imagen
La fuente de la imagen .


Algunos detalles técnicos


En primer lugar, instalé un script en las coronas que guarda la página Yandex.Weather cada hora como un archivo html y lo dejé funcionando por un tiempo.


curl https://yandex.ru/pogoda/novosibirsk > test/`date +%Y-%m-%d-%H-%M`

php , , json , , , . :


function parseFile($day) {

    global $mega, $csv, $realT;
    $predicts = [];

    $html = file_get_html(__DIR__ . '/test/' . $day);
    foreach($html->find('.forecast-brief_cols_10') as $element) {
        foreach ($element->find('.forecast-brief__item-temp-day') as $s) {
            $predicts[] = str_replace('−', '-', $s->plaintext);
        }
    }

    $dayDate = date_create_from_format("Y-m-d-H-i", $day);
    $dayDateString = date_format($dayDate, 'Y-m-d H:i:s');
    $dayArr = explode('-', $day);

    if ($dayArr[3] == 14) {
        foreach($html->find('.current-weather__thermometer_type_now') as $s) {
            $realT[] = [
                intval(date_format($dayDate, 'U') . '000'),
                intval(str_replace('−', '-', $s->plaintext))
            ];
        }
    }

    for ($i = 1; $i < count($predicts); $i++) {

        $nextDay = date('Y-m-d', strtotime('+' . $i . ' day', strtotime($dayDateString)));
        $nextDayArr = explode('-', $nextDay);

        $line = [
            'Y' => $dayArr[0],
            'm' => $dayArr[1],
            'd' => $dayArr[2],
            'H' => $dayArr[3],
            'i' => $dayArr[4],
            '_m' => $nextDayArr[1],
            '_d' => $nextDayArr[2],
            '_C' => $predicts[$i]
        ];

        $mega[] = $line;
        $csv .= join(';', array_values($line)) . "\n";
    }
}


  • , ( );
  • 14:25

imagen


, , . .


:


imagen
imagen



, .

Source: https://habr.com/ru/post/es400245/


All Articles