Vädret i METAR-format

Det här är en gammal sida som jag skrev 2004..! Den handlar om hur jag gick tillväga för att hämta in och lagra väderrapporter. Mycket av det som står här är fortfarande aktuellt, så sidan får leva kvar ett tag till.
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.

För 24-timmarsdiagram och månadsstatistik använder jag ett norskt bibliotek för Javascript som heter Highcharts. Sifferdata skickas från min server till din webbläsare som själv ritar grafiken.

När det gäller väderkartan sänds liknande sifferdata och en statisk bakgrundsbild (kartan). Lite hemsnickrad Javascript ser till att siffror och symboler plottas på rätt plats på kartan.

Programvaror

Hela processen är Microsoft-fri. Alla program som används för att samla in, bearbeta och presentera data är öppen källkod. Linux, Apache, Perl, Highcharts, MySQL och PHP finns alla att hämta hem från nätet. Inklusive källkod, om man är av den läggningen.