GRIB API oktatóanyag >> filter tool

A parancs lefuttat egy általunk megírt scriptet egy vagy több GRIB fájlon. A script ún. szabályokat tartalmaz (angolul "rules"), ezért "rules fájl"-nak (röviden RF) nevezzük ezeket a scripteket. A grib_filter többféle feladatra használható, például leválaszthatunk egy nagyobb GRIB állományból adatokat és egy kisebb fájlt hozunk létre, vagy egy fájlba statisztikát készíthetünk a GRIB fájl adataiból, stb.

A script fájlt C-hez hasonló nyelvben kell megírni, viszont csak néhány parancsot használhatunk. Fontos, hogy nem kell külön ciklusokat írni, mivel minden parancs végigfut az egész fájl minden egyes táviratán.

Használat

grib_filter [beállítások] rules_file grib_fájl grib_fájl ...

Beállítások

-f

Akkor is lefuttatja a parancsot, ha hibát talál.


-o output_grib_file

Ha szükséges kimeneti GRIB fájl, akkor így adhatjuk meg a nevét. Ha nem használjuk, akkor filtered.out lesz a kimeneti fájl neve.


-M

Kikapcsolja a multi-grib támogatást.


-V

Verziószám.


-G

A GTS fejléc másolása.


-7

Nincs hibaüzenet, ha a rossz méretű a kimeneti fájl.


-v

Részletek közlése ("bőbeszédű" mód).


Oldal tetejére


A rules fájlok felépítése gyakorlati példákkal szemléltetve

Általános szabályok

Parancs Jelölés Példa
parancs vége ; print "komment";
grib kulcsok [ ]-ben print "[level]";
egyenlő ==
egyező szöveg is
nem egyenlő !=
vagy ||
és &&
nem !

-print

A standard kimenetre kiírja az idézőjelben lévő kulcsoknak megfelelő tartalmat. A zárójelben megadhatjuk a kimeneti fájl nevét. Ha nem adunk meg fájl-t, a képernyőre írja ki a szöveget.

Példa: Írassuk ki egy GRIB fájl táviratainak dátumát a képernyőre. A rules fájl (jelen esetben rf1) tartalma:

print "[year] [month] [day]";

Az utasítás, amivel ezt végrehajthatjuk:

grib_filter rf1 ex1.grb

Az eredmény:

1981 10 1
1981 10 1
1981 10 2
1981 10 2
1981 10 3
1981 10 3
1981 10 4
1981 10 4
1981 10 5
1981 10 5
1981 10 6
1981 10 6
1981 10 7
1981 10 7
1981 10 8
1981 10 8
1981 10 9
1981 10 9
1981 10 10
1981 10 10
1981 10 11
1981 10 11

Látható, hogy kétszer szerepelnek a dátumok, mert az ex1.grb 2 változót tartalmaz.

-write

Az aktuális GRIB-et kiírja az idézőjelben meghatározott fájlnévvel egy fájlba. Fontos, hogy különböző kulcs érékekhez külön fájlt hoz létre.

Az RF fájl szintaktikája:

write "file_[key]";

Példa: Hozzunk létre minden egyes magassági szintre egy GRIB fájlt egy eredeti fájlból!

rf2 tartalma:

write "out[level].grb";

Futtatása:

grib_filter rf2 example.grb

A parancs eredményeképpen a következő állományok keletkeznek: out200.grb out300.grb out500.grb

-append

Az aktuális GRIB-et hozzáteszi egy meglévő GRIB-hez.

Szintaktikája:

append "filename_[key]";
append;

Pl. az rf3 tartalma:

append;

Futtatás:

grib_filter rf3 out.* -o out.grb

Ha az előző példa eredményfájljait használjuk bemenetként, az eredeti fájllal (example.grb) megegyező tartalmú lesz a parancs végrehajtása közben keletkező új fájl, az out.grb.

-if

Feltételes elágazás. Ha a zárójelben írt feltételek teljesülnek, a {} közötti parancsok lefutnak.

Szintaxis:

if (kifejezés) [else{utasítások; }] {
utasítások;
utasítások;
}

Példa: Irassuk ki az 1981.10.06. és 1981.10.11 közötti napok dátumát!

Rules file (rf3) tartalma:

if (year==1981&&month==10&&day>5&&day<12){
print "[dataDate]";
}

Futtatás:

grib_filter rf3 ex1.grb

Eredmény:

19811006
19811006
19811007
19811007
19811008
19811008
19811009
19811009
19811010
19811010
19811011
19811011

-set

Megváltoztathatjuk egy a GRIB fájlban már létező kulcs értékét, de csak az éppen futtatott scripten belül lesz érvényes a módosítás, tehát nem változtatja meg magának a GRIB fájlnak a tartalmát.

set keyname = keyvalue;

Példa: Írjuk át egy GRIB fájl minden napját 11-re!

Rules fájl (rf4) tartalma:

set day=11;
print "[day]";

Futtatás:

grib_filter rf4 ex1.grb

Eredmény:

11
11
11
11
11
...

-transient

Létrehoz egy a felhasználó által definiált változót, amely később úgy használható, mintha egy kulcs lenne.

Példa: Hozzunk létre egy "filename" nevű változót! Írassuk ki ezt a változót a képernyőre!

Rules fájl (rf5) tartalma:

transient filename="f1.grib"
print "[filename]"

Futtatás:

grib_filter rf5 ex1.grb

Eredmény:

f1.grib
f1.grib
f1.grib
f1.grib
f1.grib
... (22-szer)

Látható, hogy 22 alkalommal futott le az rf5, hiszen 11 nap (napi egy érték) és 2 változó van a GRIB fájlban.

-switch

A switch függvény egy változó értékét vizsgálja, és a megadott esetek (case-ek) közül azt hajtja végre amely, megegyezik a változóval.

Használat:

switch (változó){
case (érték1):
parancsok;
case (érték2):
parancsok;
}

Meg lehet adni több kulcsot is a switch sorban, ekkor a case sorokban mátrix-szerűen kell meghatározni az egyes kombinációkra vonatkozó parancsokat.

Példa.

Rules file (rf6) tartalma:

if (day>8){
switch (day){
case (9):
print "kilenc";
case (10):
print "tiz";
case (11):
print "tizenegy";
} }
Futtatás:
grib_filter rf6 ex1.grb
Eredmény:
kilenc
kilenc
tiz
tiz
tizenegy
tizenegy

Oldal tetejére >> Vissza a főoldalra