GRIB API oktatóanyag >> GRIB API Fortran interface >> Metaadatok kinyerése

A GRIB önleíró fájlformátum (vagyis ugyanazon állományon belül található az adat és a metaadat is), így a fejlécéből sok információ kinyerhető, hasonlóan az általunk általában használt wgrib-hez, illetve a grib2ctl PERL sripthez. A grib_get_int és a grib_get_real8 sok adatot képes a GRIB-ből lekérni, ehhez a kulcsok megnevezését és a lekért értékek típusát kell tudnunk. Ezeket a lehetőségeket is egyszerűbb egy példán bemutatni:

meta.f

program get
include 'grib_api_f77.h'
integer ifile, iret, igrib, i
real*8 eszak, nyugat, del, kelet
real*8 jDirectionIncrement
real*8 iDirectionIncrement
integer*4 xracspontok, yracspontok
integer*4 adatszam

ifile=10
iret=grib_open_file(ifile,'1.GRIB','r')
call grib_check(iret)
call grib_check( grib_new_from_file(ifile,igrib) )

call grib_check(grib_get_int(igrib,'numberOfPointsAlongAParallel',xracspontok) )
write(*,*) 'X irany=', xracspontok ! x irányú rácspontok száma
call grib_check( grib_get_int(igrib,'numberOfPointsAlongAMeridian',yracspontok) )
write(*,*) 'Y irany=', yracspontok ! y irányú rácspontok száma

C a szelek koordinatai
call grib_check( grib_get_real8(igrib,'latitudeOfFirstGridPointInDegrees',eszak) )
write(*,*) 'eszak=',eszak
call grib_check( grib_get_real8(igrib,'latitudeOfLastGridPointInDegrees',del) )
write(*,*) 'del=',del
call grib_check( grib_get_real8(igrib,'longitudeOfFirstGridPointInDegrees',nyugat) )
write(*,*) 'nyugat=',nyugat
call grib_check( grib_get_real8(igrib,'longitudeOfLastGridPointInDegrees',kelet) )
write(*,*) 'kelet=',kelet

C terbeli felbontas kellene hogy legyen
call grib_check( grib_get_real8(igrib,'jDirectionIncrementInDegrees',jDirectionIncrement) )
write(*,*) 'jDirectionIncrement=',jDirectionIncrement

call grib_check( grib_get_real8(igrib,'iDirectionIncrementInDegrees',iDirectionIncrement) )
write(*,*) 'iDirectionIncrement=',iDirectionIncrement

call grib_check(grib_get_size(igrib,'values',adatszam))
write(*,*) 'adatszam=',adatszam ! hány adat van

call grib_check(grib_release(igrib))
call grib_check(grib_close_file(ifile))
stop
end

Példák metaadatok kinyerésére:

A felső mindenhol a GrADS kontroll fájlja, míg az alsó az előbbi kód lefuttatásával létrehozott kimenet (látszik, hogy ugyanarra az eredményre jutunk, mint a kontroll fájl használata esetén):

Egy egész Földre kiterjedő szélmezőt tartalmazó GRIB (uv500.grb):

undef 9.999E+20
title uv500.grb
dtype GRIB 255
options yrev
ydef 121 linear -90.000000 1.5
xdef 240 linear 0.000000 1.500000
tdef 1 linear 12Z25jul2005 1mo
zdef 1 linear 1 1
vars 2
Uprs 0 131,100,500 ** U velocity [m s**-1]
Vprs 0 132,100,500 ** V velocity [m s**-1]
nimbus:~/GRIBapi/example3$ ./a.out
X irany= 240
Y irany= 121
eszak= 90.000000000000000
del= -90.000000000000000
nyugat= 0.0000000000000000
kelet= 358.50000000000000
jDirectionIncrement= 1.5000000000000000
iDirectionIncrement= 1.5000000000000000
adatszam= 29040

Ez pedig egy európai kivágat jellemzése (ecm.grib):

title ecm.grib
*  produced by grib2ctl v0.9.12.5p33d
dtype grib 255
options yrev
ydef 31 linear 33.750000 0.75
xdef 51 linear 1.500000 0.750000
tdef 1 linear 00Z01nov2010 1mo
zdef 1 linear 1 1
vars 1
Zsfc  0 129,1,0  ** surface Geopotential [m**2 s**-2]
ENDVARS
 X irany=          51
 Y irany=          31
 eszak=   56.250000000000000
 del=   33.750000000000000
 nyugat=   1.5000000000000000
 kelet=   39.000000000000000
 jDirectionIncrement=  0.75000000000000000
 iDirectionIncrement=  0.75000000000000000
 adatszam=        1581

A regular_II típusú (szabályos, a szélességi-hosszúsági fokokhoz igazodó) rácshálózat, ami a GRIB-ek egyik leggyakrabban használt földrajzi rácshálózata, az alábbi ábrával szemléltethető:

Másik fontos típus a redukált Gauss-i rács, amit azért szokták alkalmazni, mert a földrajzi fokhálózat szerint szabályos rács pontjai a sarkoknál besűrűsödnek, és így a kelleténél több információt tárolunk bennük, ráadásul egy ilyen rácsnak a sarkon nem sok értelme van (az összes rácspont ugyanoda esik). Az interneten találhatók ezt szemléltető ábrák is:

regular reduced

Oldal tetejére >> Vissza a főoldalra