TigerJython4Kids
HomeTurtlegrafikRobotikDatenbanken
labyrinth

ARBEITSBLATT 4: WETTERDATEN AUS DEM INTERNET

 

 

EINLEITUNG

 


Mit Hilfe von Wetter-Sprites und Daten aus dem Internet erstellst du deine eigene Wetterkarte. Die aktuellen Daten kannst du kostenlos vom Wetterserver https://openweathermap.com abfragen.


 

AUFGABE 1: WETTERSYMBOLE POSITIONIEREN

 

In einer einfachen Schweizerkarte sollst an der Position einiger Städte (z.B. Genf, Bern, Lausanne, Zuerich, Luzern Basel, Winterthur, Chur, Lugano usw.) die passenden Wetter-Symbole anzeigen. Dazu verwendest du folgende Sprites:

sunny.png lightcloudy.png mostlycloudy.png cloudy.png rain.png strongrain.png snow.png

Die Wetter-Sprites und eine einfache Schweizerkarte kannst du unter sprites.zip herunterladen. Packe diese zip-Datei aus und speichere den Ordner sprites im Unterverzeichnis /bin des TigerJython-Installationsverzeichnisses. Dann werden die Bilder automatisch in deine Programme eingefügt.

Selbstverständlich kannst du auch eigene Bilder erstellen oder eine andere Landeskarte verwenden. Diese musst du im Untererzeichnis /bin/sprites des Installationsverzeichnisses speichern. Das untenstehende Programm zeigt das Symbold sunny.png an der Position von Genf und das Symbol rain.png an der Position von Bern.

from gturtle import *

makeTurtle()
hideTurtle()
drawImage("sprites/ch.gif")
setPos(-365, -155)
drawImage("sprites/sunny.png")
setPos(-150, 40)
drawImage("sprites/rain.png")
► In Zwischenablage kopieren

Das Turtlefenster ist 800x600 Pixel gross, der Punkt (0, 0) ist in der Mitte des Fensters. Der Befehl drawImage("sprite/ch.gif") stellt das Bild ch/gif an der Position (0, 0) dar. drawImage("sprites/sunny.gif") stellt das Bild sunny.png an der Position, die man mit dem Befehl setPos(-365, -155) gesetzt hat, dar.

Um die Koordinaten der Städte zu finden, kannst das untenstehende Programm verwenden. Bei einem Mausklick in die Karte werden unten im TigerJython-Fenster die Koordinaten des Mausklicks angezeigt. Du kannst in einer anderen Schweizerkarte schauen, wo sich die Städte etwa befinden.

from gturtle import *                      

def onMousePressed(x, y):
   print(x, y)
   setPos(x, y)
   dot(20)                      

makeTurtle(mousePressed = onMousePressed)
hideTurtle()
drawImage("sprites/ch.gif")


 

AUFGABE 2: WETTERDATEN ABFRAGEN

 

Das Modul weather stellt Befehle zur Verfügung, mit welchen du Browserabfragen auf dem Wetterdatenserver https://openweathermap.com durchgeführen kannst. Der Wetterdatenserver sammelt die Wetterdaten in über 200 000 Städten der ganzen Welt und aktualisiert sie jede Stunde. Folgende Daten können abgefragt werden:

"temp"

Temperatur in °C

"pressure"

Luftdruck in hPa

"humidity"

Luftfeuchtigkeit in %

"temp_min"

Tagesminimum der Temperatur

"temp_max"

Tagesmaximum der Temperatur

"description"

Wetterlage in Worten

"sunrise"

Sonnenaufgang in Ortszeit

"sunset"

Sonnenuntergang in Ortszeit

"datetime"

Datum und Zeit des Ortes

Der Befehlt weather.request(city, key) erzeugt einen Wetterdaten-Request beim Wetterserver für den gegebenen Ort. Dabei wird ein Authorisierungsschlüssel verwendet. Diesen kann man kostenfrei beim Wetterserver beziehen. Wird der Parameter key weggelassen, so wird der Standardschlüssel (defaultKey) verwendet, der maximal 60 Anfragen pro Minute erlaubt. Als Ergenis dieser Abfrage erhält man eine Liste (info) mit den oben aufgeführten Werten, wobei auf nur einzelne Werte verwenden kann.

In diesem Beispiel wird die aktuelle Temperatur in Genf und Bern abgefragt und im Ausgabefenster angezeigt.

 

from gturtle import *
import weather

def printWeather(city):
    info = weather.request(city)
    print(city,": temp =",info["temp"])
    
cities = ["Genf","Bern"]

for city in cities:
    printWeather(city)  
    delay(100)
► In Zwischenablage kopieren

a) Ergänze das Progrmm so, dass die Temperatur in den Städten Genf, Bern, Lausanne, Basel Luzern, Zürich, Winterthur, Chur und Lugano angezeigt werden. Es ist vorteilhaft alle Städte in einer Liste zusammenzufassen und die Wetterabfrage mit einer Funktion printWeather() für alle Städte der Liste durchzuführen.

b) Ergänze das Programm so, dass nicht nur die Temperatur, sondern auch der Luftdruck, Luftfeuchtigkeit und die Wetterlage angezeigt werden.

c) Der Wetterserver erfasst die Daten 200 000 Orten in der ganzen Welt. Erstelle eine Abfrage für weitere Schweizerstädte, bzw. für andere bekannte Städte in Europa.


 

AUFGABE 3: WETTERKARTE MIT INTERNETDATEN

 

Erstelle eine Wetterkarte, in welcher die Wetter-Symbole mittels der aktuellen Daten, die bei jedem Programmstart automatisch vom Wetterserver abgefragt werden, angezeigt werden. Um den Programmcode zu strukturieren, verwendest du die Funktionen printWeather(city) (siehe Aufgabe 2), drawWeather(city) und pos(city), die du für jede Stadt der Liste cities aufrufst. Die untenstehenden Vorlagen für die Funktionen muss du noch ergänzen.

def drawWeather(city):
    info = weather.request(city)    
    if info["description"] == "clear sky":
        drawImage("sprites/sunny.png")
    elif info["description"] in ["few clouds", "scattered clouds"]:
        drawImage("sprites/lightcloudy.png") 
    elif info["description"] in ["rain", "light rain", "moderate rain"]:
        drawImage("sprites/rain.png")    
    ...                

def pos(city):
    if city == "Genf":
        setPos(-365, -155)
    elif city == "Lausanne":
        setPos(-250, -85)
    elif city == "Bern":
        setPos(-150, 40)


 

AUFGABE 4: WETTERKARTE EUROPA

 

Erstelle eine einfache Europa-Karte und der Grösse von maximal 800x600 Pixel und speichere sie im gif oder png-Format im Unterverzeichnis /bin/sprites der TigerJython-Installationsverzeichnisses.
Positioniere die passenden Wetter-Sprites in einigen bekannte europäischen Städten.