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));
}
Pistenbericht - SchneeToni
Montag, 9. September 2024
Heute, am 9. September 2024, feiere ich den Start meiner neuen Webseite, auf der ich zukünftig regelmässig über die aktuellen Schneeverhältnisse, Strassenzustände und meine Erfahrungen in den schönsten Winterregionen Europas berichten werde. Cervinia, Davos, Elm und Urnerboden stehen dabei im Fokus, denn diese Orte kenne ich wie meine Westentasche. Ab sofort könnt ihr auf SchneeToni.ch […]