-
Notifications
You must be signed in to change notification settings - Fork 4
$presentweather()
Die Wettervorhersage und auch manche Meßgeräte liefern einen Code "ww" für das aktuelle Wetter, wie er von der WMO standardisiert worden ist. Diesen Codes ist jeweils ein passendes Icon zugeordnet. Auch für die Wolkenbedeckung "N" sind entsprechende Icons definiert.
Die Searchlist-Erweiterung $presentweather()
liefert Wettersymbole aus verschiedenen Symbolsätzen nach dem Wetterzustand "ww" bzw. "wawa" und der Wolkenbedeckung "N". Symbole, die als Bilddateien (.png) vorliegen, müssen auf der Website abgelegt und mittels <img>
eingebunden werden. Die Symbole von Erik Flowers sind ein Zeichensatz (Font), der im <head>
der HTML-Seite mittels <link>
eingebunden werden muß. Die WMO-Symbole und SVG-Icons sind Vektorgraphiken (SVG), die von $presentweather()
direkt eingebunden werden. Ein Beispiel ist unten angegeben.
Die Liste ist für eine direkte Darstellung an dieser Stelle zu lang. Eine Übersicht bietet die Wiki-Seite Wettersymbole (Icons) und die Übersichtsseite Wetterzustand. Hier sind nur Beispiele angegeben.
SVG-Icons
Glatteis | Nebel | Niesel | gefrierender Niesel | Regen | gefrierender Regen | Schneeregen | Schnee | Hagel | Gewitter | Wind, Sturm | Tornado |
---|---|---|---|---|---|---|---|---|---|---|---|
24 | 40...49 | 50...55 | 56, 57 | 60...65 | 66, 67 | 68, 69 | 70...75 | 87...90 | 91...99 | 30...39, 18 | 19 |
WMO-Symbole
WMO-Code-Tabelle 4677 ww | WMO-Code-Tabelle 4680 wawa |
---|---|
In skin.conf
ist folgende Eintragung nötig:
[CheetahGenerator]
search_list_extensions = user.weathercodes.WeatherSearchList
...
Gibt es die Zeile search_list_extensions
schon, ist der Wert am Schluß mit Komma getrennt anzufügen.
$presentweather()
wird als Platzhalter (tag) verwendet. Als Parameter werden je nach gewünschter Darstellung der Wetterzustand "ww" (alternativ "wawa") oder die Wolkenbedeckung "N" oder auch beide übergeben. Gibt es das Symbol (Icon) in einer Tag- und einer Nacht-Variante, muß auch diese Information als Parameter übergeben werden. Welcher Symbolsatz verwendet werden soll, wird durch Punkt getrennt als Attribut angefügt:
$presentweather(ww=Wetterzustand, wawa=Wetterzustand, n=Wolkenbedeckung, night=Tag_Nacht_Auswahl, ...).attr
Die Parameter sind:
-
ww
: der Wettercode ww oder eine Liste von Wettercodes, von denen der "schlimmste" verwendet wird -
n
: die Wolkenbedeckung in Prozent (nur bei $ww<4 nötig und bei $ww==18 möglich) -
night
:True
, wenn das Nachtsymbol verwendet werden soll -
wawa
: der Wettercode wawa oder eine Liste von Wettercodes, von denen der "schlimmste" verwendet wird - Im Falle von
station
alsattr
können weitere Parameter hinzugefügt werden, die Meßgrößen bestimmen, die mit in die Darstellung aufgenommen werden sollen.
Alle Parameter sind optional. Wenigstens einer von den Parametern
ww
, n
und wawa
muß ungleich None
sein. Wenn sowohl ww
als
auch wawa
vorhanden sind, wird ww
verwendet und wawa
ignoriert.
n
wird verwendet, wenn ww
und wawa
None
oder kleiner 4 sind.
attr
ist eine der folgenden Möglichkeiten:
-
ww
: der Wettercode, der aus der Liste herausgesucht wurde -
text
: Beschreibung des zugehörigen Wetterereignisses -
belchertown_icon
: Dateiname des Icons aus dem Belchertown-Icon-Satz -
dwd_icon
: Dateiname des Icons aus dem DWD-Icon-Satz -
aeris_icon
: Dateiname des Icons aus dem Aeris-Icon-Satz -
wi_icon
: Icon aus dem Icon-Satz von Erik Flowers -
svg_icon
: Wetter-Icon im SVG-Format -
svg_icon($width=128,$x=None,$y=None,$with_tooltip=True)
: Wetter-Icon im SVG-Format mit Größenangabe und Koordinaten -
svg_icon_filename
: Dateiname des SVG-Icons aus dem Wettersymbolesatz in weathericons -
wmo_symbol
: Symbol der Meteorologen für den Wetterzustand -
wmo_symbol($width,color=$color)
: Symbol der Meteorologen für den Wetterzustand mit Größenangabe und optionaler Farbangabe. -
n
: Wolkenbedeckung in Prozent (nur wenn nurn
übergeben wurde) -
okta
: Wolkenbedeckung in Okta (nur wenn nurn
übergeben wurde) -
station
: Erzeugung des Stationsmodells für Wetterkarten als SVG-Graphik
Die Dateinamen werden zusammen mit dem HTML-Tag <img>
verwendet,
zum Beispiel:
<img src="$relative_url/images/$presentweather(ww=$ww,n=$n,night=$night).belchertown_icon" />
wmo_symbol
, svg_icon
und station
werden dagegen direkt verwendet, zum Beispiel:
$presentweather(ww=$ww,n=$n,night=$night).wmo_symbol(width=30)
Wird eine Farbe angegeben, wird das ganze Symbol einfarbig in dieser Farbe dargestellt. Wird keine Farbe angegeben, wird das Symbol in der Originalfarbgebung (ggf. mehrfarbig) dargestellt.
Ebenso wird wi_icon
direkt verwendet, zum Beispiel:
$presentweather(ww=$ww,n=$n,night=$night).wi_icon
-
Regen
Anstelle der Zahl 61 kann eine Variable benutzt werden. Dateinamen werden zusammen mit
<img>
verwendet<img src="$station.station_url/images/$presentweather(ww=61).svg_icon_filename" />
Ergebnis:
-
wolkiges Wetter
Anstelle der Zahl kann eine Variable benutzt werden, die die aktuelle Wolkenbedeckung in Prozent enthält. SVG-Graphiken werden direkt eingefügt.
$presentweather(n=50,night=False).svg_icon $presentweather(n=50,night=False).text
Ergebnis:
wolkig -
WMO-Symbol für Regen nach Gewitter
Anstelle der Zahl 91 kann auch hier eine Variable genutzt werden.
width=50
skaliert die Graphik auf eine Größe von 50px.$presentweather(ww=91).wmo_symbol(width=50)
Ergebnis:
Als Beispiel dient hier ein Template, das eine Tabelle der ganzen Symbole erzeugt, die mit $presentweather()
dargestellt werden können. Das ist natürlich nicht der eigentliche Verwendungszweck, bietet aber die Gelegenheit, alle Möglichkeiten zu zeigen.
<!DOCTYPE html>
#set $font_url = '//fonts.googleapis.com/css?family=Roboto%3A300%2C400%2C700&ver=1.0'
#set $wi_url = '//cdnjs.cloudflare.com/ajax/libs/weather-icons/2.0.9/css/weather-icons.min.css?ver=4.7.4'
#set $bootstrap_url = '//stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css'
#set global $belchertown_icon_url = "https://www.woellsdorf-wetter.de/images"
#set global $dwd_icon_url = "https://www.woellsdorf-wetter.de/dwd/wettericons"
#set global $aeris_icon_url = "https://cdn.aerisapi.com/wxicons/v2"
#set custom_css_exists = True
<html lang="$lang">
<head>
<link rel='stylesheet' href='$font_url' type='text/css' media='all' />
<link rel='stylesheet' href='$wi_url' type='text/css' media='all' />
<link rel='stylesheet' href='$bootstrap_url' type='text/css' media='all' />
<style>
html {
}
body {
font-family: Roboto, sans-serif;
font-size: 18px;
font-weight: 300;
line-height: 1.625;
margin: 0;
}
table {
border-collapse: collapse;
border-spacing: 0;
#line-height: 2;
width: 100%;
}
tbody {
}
th {
/* top right bottom left */
padding: 0.25em 0.5em 0.25em 0.5em;
}
td {
/* top right bottom left */
padding: 0.25em 0.5em 0.25em 0.5em;
}
.wi-size {
font-size: 35px;
line-height: 1;
}
</style>
</head>
<body>
<h1>Wettersymbole für \$presentweather()</h2>
<h2>Wetterzustand</h2>
<table class="table-striped" cellpadding="5px">
<tr>
<th>ww</th>
<th>Belchertown</th>
<th>DWD</th>
<th>Aeris</th>
<th>E. Flowers</th>
<th>WMO</th>
<th>ww</th>
<th>Beschreibung</th>
</tr>
#for $ww in range(0,100)
<tr>
<td>$('%02d' % $ww)</td>
<td>
#if $ww>3 and $ww not in (5,6,7,8,14,15,16,20,21,22,23,24,25,26,27,28,29)
#set $fn=$presentweather($ww).belchertown_icon
<img src="$belchertown_icon_url/$fn" width="50px" title="$fn" />
#else if $ww==0
#set $fn=$presentweather($ww,n=0,night=False).belchertown_icon
<img src="$belchertown_icon_url/$fn" width="50px" title="$fn" />
#set $fn=$presentweather($ww,n=0,night=True).belchertown_icon
<img src="$belchertown_icon_url/$fn" width="50px" title="$fn" />
#else
<span title="Bei diesem Code ist das passende
Bewölkungssymbol nach dem
Parameter n darzustellen.">Bewölkung</span>
#end if
</td>
<td>
#if $ww>3
#set $fn=$presentweather($ww).dwd_icon
<img src="$dwd_icon_url/$fn" width="40px" title="$fn" />
#else if $ww==0
#set $fn=$presentweather($ww,n=0).dwd_icon
<img src="$dwd_icon_url/$fn" width="40px" title="$fn" />
#else
<span title="Bei diesem Code ist das passende
Bewölkungssymbol nach dem
Parameter n darzustellen.">Bewölkung</span>
#end if
</td>
<td>
#if $ww>3
#set $fn=$presentweather($ww).aeris_icon
<img src="$aeris_icon_url/$fn" width="40" title="$fn" />
#else if $ww==0
#set $fn=$presentweather($ww,n=0,night=False).aeris_icon
<img src="$aeris_icon_url/$fn" width="40" title="$fn" />
#set $fn=$presentweather($ww,n=0,night=True).aeris_icon
<img src="$aeris_icon_url/$fn" width="40" title="$fn" />
#else
<span title="Bei diesem Code ist das passende
Bewölkungssymbol nach dem
Parameter n darzustellen.">Bewölkung</span>
#end if
</td>
<td>
#if $ww>3
<span class="wi-size">$presentweather($ww).wi_icon</span>
#else if $ww==0
<span class="wi-size">$presentweather($ww,n=0,night=False).wi_icon
$presentweather($ww,n=0,night=True).wi_icon</span>
#end if
</td>
<td>$presentweather($ww).wmo_symbol(width=40)</td>
<td>$('%02d' % $ww)</td>
<td>$presentweather($ww).text</td>
</tr>
#end for
</table>
<h2>Bewölkung</h2>
<table class="table-striped" cellpadding="5px">
<tr>
<th>N</th>
<th>Belchertown</th>
<th>DWD</th>
<th>Aeris</th>
<th>E. Flowers</th>
<th>WMO</th>
<th>Okta</th>
<th>Beschreibung</th>
</tr>
#for $n in (0,12.5,25,37.5,50,62.5,75,87.5,100,112.5,125):
<tr>
<td>$presentweather(n=$n).n</td>
<td>
#set $fn=$presentweather(n=$n,night=False).belchertown_icon
<img src="$belchertown_icon_url/$fn" width="50px" title="$fn" />
#set $fn=$presentweather(n=$n,night=True).belchertown_icon
<img src="$belchertown_icon_url/$fn" width="50px" title="$fn" />
</td>
<td>
#set $fn=$presentweather(n=$n).dwd_icon
<img src="$dwd_icon_url/$fn" width="40px" title="$fn" />
</td>
<td>
#set $fn=$presentweather(n=$n,night=False).aeris_icon
<img src="$aeris_icon_url/$fn" width="40" title="$fn" />
#set $fn=$presentweather(n=$n,night=True).aeris_icon
<img src="$aeris_icon_url/$fn" width="40" title="$fn" />
</td>
<td>
<span class="wi-size">$presentweather(n=$n,night=False).wi_icon</span>
<span class="wi-size">$presentweather(n=$n,night=True).wi_icon</span>
</td>
<td>$presentweather(n=$n).wmo_symbol(width=30)</td>
<td>$presentweather(n=$n).okta</td>
<td>$presentweather(n=$n).text</td>
</tr>
#end for
</table>
</body>
</html>
Das Ergebnis ist hier zu sehen.