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));
}
Schneemengen Alpen - SchneeToni
Freitag, 20. September 2024
Nordstaulagen sind für die Schneemengen in den Alpen von entscheidender Bedeutung. Diese Wetterlagen treten auf, wenn feuchte Luftmassen aus nördlicher Richtung auf die Alpen treffen, wo sie aufsteigen und abkühlen. Dies führt zu starken Schneefällen, besonders in Tälern und Skigebieten auf der Nordseite der Alpen. Die geografische Lage, Höhe und Ausrichtung spielen dabei eine wesentliche […]