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));
}
Bobsla - SchneeToni
Dienstag, 1. Oktober 2024
Bobsla, eine seltene Wintersportattraktion, ist in Filzbach auf dem Kerenzerberg zuhause. Mit einer atemberaubenden Landschaft, einer Seilbahn, die kürzlich ihr 30. Jubiläum feierte, und optimalen Winterbedingungen ist Filzbach die Hochburg des Bobsla-Fahrens in der Schweiz. Was ist Bobsla? Bobsla ist ein aufregendes, elektrisches Wintersportgerät, das eine Mischung aus Bob und E-Schlitten darstellt. Es wurde entwickelt, […]