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));
}
X.com - SchneeToni
Mittwoch, 2. Oktober 2024
SchneeToni vereint alles, was ein echter Schneefan braucht. Auf schneetoni.ch findest du umfassende Berichte, spannende Bilder und Videos sowie Livestreams mit exklusiven Hintergrundinfos. Begleite mich auf meinen Social-Media-Plattformen für Updates, Ankündigungen und persönlichen Austausch. 1. schneetoni.ch – Dein zentrales Schnee- und Wetterportal Die Website schneetoni.ch ist der absolute Mittelpunkt meiner digitalen Präsenz. Sie ist der […]