GRIB-format

På SMHI (och andra meteorologiska institut) sparas modelldata i något som kallas GRIB-format och är definierat av WMO. Formatet har nyligen reviderats. Den nya versionen kallas GRIB2 och den gamla GRIB1. Historiska analysdata som SMHI levererar är i GRIB1-format.

GRIB är ett binärt dataformat för data på ett beräkningsbart gridnät. Filen innehåller mestadels kod som kombineras med externa metadata för att rätt kunna läsa ut och tolka datasetet i GRIB-filen. Här finner du en översiktlig beskrivning av GRIB-formatet.

Nedladdningsbara meteorologiska modeller har ett roterat latitud/longitud gridnät (eller så kallad Lambert-projektion) medan oceanografiska modeller har ett reguljärt latitud/longitud gridnät.

För att kunna läsa data på GRIB-format behöver du:

  • Program för att öppna och avkoda GRIB-fil
  • Översätta möjliga roterade koordinater (och lambert)
  • Rotera möjliga roterade vindar
  • Kodtabell för att tolka parameternummer

Program för läsande av GRIB-fil

För att kunna läsa GRIB-packad data behövs program för att packa upp GRIB-filen och tolka data. Vid SMHI används mestadels program framtagna av ECMWF.

Dokumentation av den senaste varianten av programpaket (ecCodes) samt möjlighet att ladda ned källkoden finns på ECMWF:s hemsida för ecCodes.

Andra program för läsning, skrivning och visualisering av data på GRIB-format finns att tillgå.

Roterade koordinater

De meteorologiska modeller som kan hämtas som ”Öppna data” har data lagrat på ett roterat gridnät eller i så kallad Lambert-projektion. Roterade koordinater innebär att man flyttar sydpolen från lat/lon -90/0. Skälet till rotationen är att man genom att flytta ekvatorn till Sveriges latitud får mindre skillnad i avståndet mellan gridpunkter i norra och södra delen av modellområdet än vid oroterat gridnät.

I de fall då gridnätet är roterat kan koordinaterna i gridnätet behöva beräknas om till reguljär latitud och longitud. Detta kan göras med hjälp av den exempelkod som finns nedan. All indata som behövs finns som metadata i GRIB-filen.

Exempelkod för omräkning av Lambert-projektion till reguljär latitud och longitud kommer inom kort.

Rotera vinden

Vinden beskrivs i de nedladdningsbara GRIB-filerna som U/V (ost/nord) relaterat till det underliggande gridnätet. Är gridnätet roterat är även vinden roterad och för att bli korrekt i ett reguljärt gridnät behöver en omräkning ske. Exempelkod för detta finns nedan.

Parameter-koder

Metadata för att beskriva vad en parameterkod betyder finns beskrivet i en extern fil. Olika tabeller översätter olika modellers parametrar. Vilken tabellversion som används i en fil anges av metadata-nyckeln table2Version i sektion 1 i GRIB-filen.

Kodtabeller för de modeller som finns nedladdningsbara kan laddas ner som en textfil:

Kodlista Arome (3 kB, txt)

Kodlista Arome (3 kB, txt)

Gammal kodlista Mesan (1 kB, txt)

Kodlista PMP (2 kB, txt)

Kodlista Hiromb (1 kB, txt)

Gridnät för vindberäkningar

Det finns en skillnad i hur beräkningar av vinden sker på olika nivåer. U och V beräknas på olika typer av ARAKAWA-grid beroende på typ av nivå.

Vinden på 10-meters nivå beräknas enligt ARAKAWA C medan vinden på modellnivåer (indicatorOfTypeOfLevel=109) beräknas enligt ARAKAWA A.

Exempel på rotation och område

En modells hörnkoordinater (beräknat i modellens projektion) och rotation finns beskrivet i form av metadata i GRIB-meddelandet. I GRIB edition 1 anges detta (värden tagna från PMP) bl.a. med metadata ur sektion 2:

latitudeOfFirstGridPointInDegrees = -6.749

longitudeOfFirstGridPointInDegrees = -7.775

latitudeOfSouthernPoleInDegrees = -30

longitudeOfSouthernPoleInDegrees = 15

De två första värdena anger i PMP:s fall sydvästra hörnet i modellens projektion (roterad latitud/longitud i PMP). De två sista talar om till vilka koordinater sydpolen har flyttats till i samband med rotationen.

Omräkning mellan roterad och reguljär projektion är komplicerad. Som ett förenklat sett att förklara områdets storlek kan man tänka sig att skärningen mellan nollmeridianen och ekvatorn genom rotation flyttats till 15° ost och 60° nord.

Exempelkod för omräkning mellan roterad och reguljär projektion finns i nedanstående fil. Tänk på att vindkomponenterna (u och v) också måste räknas om. Även kod för detta finns i filen.

Roterad till reguljär (Javascript) (8 kB, js)