function stp_awp_summary_add_unique(&$parts, $text){ $text = trim((string)$text); if ($text === '') return; if (!in_array($text, $parts, true)) $parts[] = $text; } function stp_awp_build_v2_summary_parts($canonical){ $parts = array(); if (!is_array($canonical) || empty($canonical)) return $parts; if (isset($canonical['snow_cm_24h']) && is_numeric($canonical['snow_cm_24h'])) { $snow = (float)$canonical['snow_cm_24h']; if ($snow >= 15) stp_awp_summary_add_unique($parts, round($snow, 1) . ' cm Schnee / 24h'); elseif ($snow >= 3) stp_awp_summary_add_unique($parts, 'etwas Neuschnee'); } if (!empty($canonical['snowline_v2']) && is_array($canonical['snowline_v2'])) { $sv2 = $canonical['snowline_v2']; if (isset($sv2['value_m']) && is_numeric($sv2['value_m'])) { stp_awp_summary_add_unique($parts, 'Schneefallgrenze ' . round((float)$sv2['value_m']) . ' m'); } if (!empty($sv2['trend'])) { $map = array('falling' => 'Schneefallgrenze sinkt', 'rising' => 'Schneefallgrenze steigt', 'steady' => 'Schneefallgrenze stabil'); if (isset($map[$sv2['trend']])) stp_awp_summary_add_unique($parts, $map[$sv2['trend']]); } } elseif (isset($canonical['snowline_m']) && is_numeric($canonical['snowline_m'])) { stp_awp_summary_add_unique($parts, 'Schneefallgrenze ' . round((float)$canonical['snowline_m']) . ' m'); } if (!empty($canonical['atmosphere_v2']['freezing_level_v2']['value_m']) && is_numeric($canonical['atmosphere_v2']['freezing_level_v2']['value_m'])) { stp_awp_summary_add_unique($parts, 'Nullgradgrenze ' . round((float)$canonical['atmosphere_v2']['freezing_level_v2']['value_m']) . ' m'); } elseif (isset($canonical['freezing_level_m']) && is_numeric($canonical['freezing_level_m'])) { stp_awp_summary_add_unique($parts, 'Nullgradgrenze ' . round((float)$canonical['freezing_level_m']) . ' m'); } if (!empty($canonical['wind_v2']) && is_array($canonical['wind_v2'])) { $w = $canonical['wind_v2']; if (!empty($w['storm_signal'])) { $risk = isset($w['storm_risk']) ? (string)$w['storm_risk'] : 'hoch'; stp_awp_summary_add_unique($parts, 'stürmisch (' . $risk . ')'); } elseif (isset($w['wind_now_kmh']) && is_numeric($w['wind_now_kmh']) && (float)$w['wind_now_kmh'] >= 25) { stp_awp_summary_add_unique($parts, 'windig'); } if (!empty($w['bise_signal'])) stp_awp_summary_add_unique($parts, 'Bise möglich'); if (!empty($w['foehn_signal'])) stp_awp_summary_add_unique($parts, 'Föhnsignal'); } if (!empty($canonical['atmosphere_v2']['convective_v2']) && is_array($canonical['atmosphere_v2']['convective_v2'])) { $cv2 = $canonical['atmosphere_v2']['convective_v2']; if (!empty($cv2['lightning_watch'])) stp_awp_summary_add_unique($parts, 'Gewitterrisiko'); if (!empty($cv2['hail_risk']) && in_array((string)$cv2['hail_risk'], array('medium','high'), true)) stp_awp_summary_add_unique($parts, 'Hagel möglich'); if (!empty($cv2['winter_thunder_possible'])) stp_awp_summary_add_unique($parts, 'Wintergewitter möglich'); } if (!empty($canonical['icing_v2']) && is_array($canonical['icing_v2'])) { $ice = $canonical['icing_v2']; if (!empty($ice['blitzeis_risk']) && (string)$ice['blitzeis_risk'] === 'very_high') { stp_awp_summary_add_unique($parts, 'Blitzeisgefahr'); } elseif (!empty($ice['glatteis_risk']) && in_array((string)$ice['glatteis_risk'], array('high','very_high'), true)) { stp_awp_summary_add_unique($parts, 'Glatteisgefahr'); } elseif (!empty($ice['frost_signal'])) { stp_awp_summary_add_unique($parts, 'Frost möglich'); } if (!empty($ice['freezing_rain_risk']) && (string)$ice['freezing_rain_risk'] === 'high') stp_awp_summary_add_unique($parts, 'gefrierender Regen möglich'); } if (!empty($canonical['operational_flags_v2']) && is_array($canonical['operational_flags_v2'])) { $ops = $canonical['operational_flags_v2']; if (!empty($ops['rain_to_snow_transition'])) stp_awp_summary_add_unique($parts, 'Übergang von Regen zu Schnee'); if (!empty($ops['stau_active'])) stp_awp_summary_add_unique($parts, 'Staulage aktiv'); } return $parts; } function stp_awp_build_summary_line_v2($condition, $temp, $wind, $canonical){ $parts = array(); $condition = trim((string)$condition); if ($condition !== '') $parts[] = $condition; if ($temp !== null && $temp !== '') $parts[] = round((float)$temp) . '°C'; if ($wind !== null && $wind !== '') $parts[] = 'Wind ' . round((float)$wind) . ' km/h'; $v2parts = stp_awp_build_v2_summary_parts($canonical); foreach ($v2parts as $item){ stp_awp_summary_add_unique($parts, $item); } return trim(implode(' · ', $parts)); } Industrie - SchneeToni
Dienstag, 15. Oktober 2024

Industrieschnee unter dem Nebel: Schneefall unten, Traumwetter oben?

Kann es wirklich sein, dass unter einer dichten Nebeldecke Industrieschnee fällt, während darüber strahlend blauer Himmel herrscht? Dieses aussergewöhnliche Phänomen, bei dem unten winterliche Schneeverhältnisse herrschen und oben traumhaftes Wetter genossen wird, ist meteorologisch gut erklärbar. Wir tauchen in die spannende Welt des Industrieschnees ein und klären, wie solche Kontraste entstehen. Was ist Industrieschnee? Industrieschnee […]