Vädret i METAR-format

Nä, jag sitter inte vaken dygnet runt och samlar in väderrapporter. Det jobbet får datorn ta hand om. Är du omåttligt nyfiken på det tekniska kan du läsa hur det går till här nedanför. De som inte är omåttligt nyfikna får inte ut så mycket av den här sidan.

Vädret observeras jorden runt på de flesta flygplatser och en del andra stationer och rapporteras på ett standardiserat sätt, i s.k. Metar-format. Det är ett kompakt format som rymmer mycket information, ofta en hel väderrapport på bara några tiotal tecken. Första gången man ser en METAR-rapport verkar det vara rena grekiskan. Hade det inte gått att lära sig tyda dem hade de inte funnits – flygsäkerheten beror ju bland annat på att människor kan tolka dem.

Källor för METAR-data

En pålitlig källa är NOAA i USA som har Metar-data för hela världen fritt tillgänglig via exempelvis FTP. Svenska och vissa europeiska data finns gripbara på Luftfartsverkets hemsida, men bara som en webb-sida.

Inhämtning av METAR-data

Jag kör en Linux-maskin som två gånger per timme (via cron) startar upp ett perl-skript och hämtar hem de svenska stationernas data från antingen Luftfartsverket eller NOAA. Är den ena nere så är troligen den andra uppe.

Skriptet går igenom varje metar-rad och plockar ut vissa nyckeldata. Vind, temperatur, lufttryck och relativ luftfuktighet kommer som numeriska data och lagras utan vidare åthävor direkt i databasen. Andra uppgifter, t.ex. molntyper och väderfenomen kräver lite digital massage innan de kan lagras. Som databas använder jag MySQL som är gratis, och lätt att använda tillsammans med andra program i Linux.

Översätta METAR till klartext

Tro det eller ej, men det är lättare för en människa än för en dator att tolka en Metar-rapport. Åtminstone känns det så när man ska skriva en Metar-avkodare. Exempel:
ESGP 172150Z 16006KT 9000 BR BKN130 03/02 Q1009
Först kommer en grupp med 4 bokstäver som visar varifrån rapporten kommer. Det är en standardiserad kod enligt ICAO, varje flygplats i världen har sin egen kod. ESGP i exemplet ovan är Säve flygplats på Hisingen i Göteborg. Nästa grupp är tidpunkten för avläsningen, först dag, sedan timme och minut i UTC (GMT).

Vindriktning och vindhastighet följer sedan, på Säve blåste det från syd-sydost (160°) med en hastighet av 6 knop, cirka 3 m/s.

Nästa grupp är sikten, den var 9000 m vid tillfället. BR betyder att det var fuktdis. BKN130 är en molnrapport som betyder brutet molntäcke på en höjd av 13000 fot (ungefär 3200 m). Därefter följer 03/02 som visar att temperaturen upmättes till +3°C och daggpunkten var +2°C. Den sista gruppen, Q1009, är lufttrycket 1009 hPa (millibar).

Presentera avläsningarna

För att visa vädret på webbsidan använder jag PHP som är ett skriptspråk, en blandning av Perl, C och lite till. Det gör ett utmärkt jobb mellan databasen och webbservern (Apache). PHP ställer en SQL-fråga till MySQL (ungefär ”Visa senaste data för alla stationer i Sverige som har lämnat rapport under de senaste 3 timmarna”). När svaret kommer gör PHP om det till HTML- data i tabellform och säger åt Apache att servera det till besökaren.

Diagrammen som man kan klicka fram tas fram på liknande vis, direkt ur databasen. Här tar PHP hjälp av ett grafikprogram som heter Ploticus. PHP plockar fram data från MySQL och skickar dem till Ploticus med ordern ”gör några snygga diagram av dessa siffror”. När bilderna kommer tillbaka i PNG-format skickar PHP dem vidare till Apachen för visning. Svårare än så är det inte.

Programvaror

Hela processen är Microsoft-fri. Alla program som används för att samla in, bearbeta och presentera data är open source. Linux, Apache, Perl, Ploticus, MySQL och PHP finns alla att hämta hem från nätet, inklusive källkod. Det kräver möjligtvis en del mer arbete av användaren, men det är gratis, det är stabilt, och det fungerar bra.