Dit is een vervolg van METAR verwerken voor luchtvaart1.

Deze oefening is optioneel!

ElementsyntaxVertalingUitleg
EBBR Bestaat altijd uit 4 letters Brussel Zaventem Luchthaven: ICAO code
150950Z Bestaat altijd uit 6 cijfers + 'Z' aanduiding voor zulu tijd (=UTC tijd) 15de dag van de maand, 09u50 UTC Tijdstip: DDUUMMZ Staat voor dag van de maand + uur en minuut van uitgave in zulu tijd
02011KT Bestaat altijd uit 5 cijfers + 'KT' aanduiding voor knopen Wind vanuit 20° met een sterkte van 11 knopen. Wind: wordt aangeven met een richting (3 cijfers) en een sterkte in knopen (2 cijfers)
8500 Bestaat altijd uit 4 cijfers Zichtbaarheid is 8.5 km. Zichtbaarheid: de afstand van zichtbaarheid wordt aangeven in meter. Wanneer deze waarde gelijk is aan 9999, betekent dit zichtbaarheid >10km.
RA+ Bestaat altijd uit 2 letters + een optionele +/- karakter Het regent zwaar Weerfenomeen: worden beschreven met codes: "Het regent" (RA), "Het mist" (BR), "Het sneeuwt" (SN), "Het vriest" (FZ).
De optionele + of - ernaast geven zwaar of licht aan.
BKN038 Bestaat altijd uit 3 letters en 3 cijfers. met aanzienlijke wolken op 3800 voet Wolkenformaties: de eerste 3 letters geven aan weinig (FEW = few), verspreide (SCT =scattered), aanzienlijke (BKN = broken) of overtrokken (OVC = overcast).
De 3 laatste cijfers bepalen de hoogte van de wolken in honderden voet.
Q1028 Begint altijd met een Q en bestaat verder uit 4 cijfers. 1028 hectopascal QNH: luchtdruk op zeespiegelniveau in hectopascal

 

Er was gevraagd om minstens vijf logische functies toe te voegen. Gebruik voor deze oefening de oplossing als start. Die oplossing bevat vijf logische functies: check_luchthaven(ICAO), check_tijdstip(tijdstip), check_wind(wind), check_zichtbaarheid(zichtbaarheid), check_weerfenomeen(weerfenomeen), check_wolkenformaties(wolkenformatie), check_luchtdruk(luchtdruk)

Die logische functies worden nu aangepast. Van zodra er een fout wordt opgemerkt in het formaat moet de functie een exceptie opwerpen.
Het is dan niet langer nodig om True/False terug te geven. De return-waarde wordt gewijzigd naar de string die in het weerbericht moet worden toegevoegd.

We gebruiken dan ook een aangepaste naam voor de nieuwe functies: parse_luchthaven(ICAO), parse_tijdstip(tijdstip), parse_wind(wind), parse_zichtbaarheid(zichtbaarheid), parse_weerfenomeen(weerfenomeen), parse_wolkenformaties(wolkenformatie), parse_luchtdruk(luchtdruk)

Elke functie controleert of het formaat van de parameter correct is, werpt een exceptie op van zodra er een fout wordt opgemerkt, en geeft een string terug die in het weerbericht moet worden toegevoegd indien het formaat correct is.

Voeg toe slot de functie verwerk(bericht) die een volledig metar-bericht analyseert en verwerkt. Deze functie gebruikt de aangepaste functies, en werpt een exceptie op voor elke fout. Indien het bericht correct kan verwerkt worden, geeft de functie het weerbericht terug, zoals in oefening Metar verwerken voor luchtvaart2.

Foutberichten

Voorbeelden met foutberichten

>>> verwerk("EGGL 021050Z 01025 9999 FZ FEW085 Q1035")
Exception: Fout gevonden in input: Wind niet correct
>>> verwerk("KLAX 021050Z 01025KT Q1035")
Exception: Fout gevonden in input: Inputformaat niet correct  
>>> verwerk("OMDB 021050Z 01025KT CAVOK 1020")
Exception: Fout gevonden in input: Luchtdruk niet correct