This is an old revision of the document!
kvAgregated
Introduksjon
Dette programmet mottar observasjoner fra kvalobs og genererer aggregerte verdier på grunnlag av disse. De aggregerte verdiene sendes så tilbake til kvalobs.
Følgende liste viser hvilke parametre fra kvalobs som generer hva:
Fra | Til | Når |
TAN | TAN_12 | 06:00 og 18:00 |
TAX | TAX_12 | 06:00 og 18:00 |
TGN | TGN_12 | 06:00 og 18:00 |
RR_01 | RR_1 | Hver time |
RR_1 | RR_12 | 06:00 og 18:00 |
RA | RR_12 | 06:00 og 18:00 |
RR_12 | RR_24 | 06:00 |
TA og TAN_12 | TAM_24 | 23:00 |
UU | UUM_24 | 23:00 |
NN | NNM_24 | 23:00 |
PR og TA | PO | Hver time |
OT_1 | OT_24 | Midnatt |
Merk at det også genereres aggregerte verdier av de aggregerte verdiene, så dersom for eksempel en stasjon kun rapporterer RR_1 vil både RR_12 og RR_24 aggregeres.
Det er også verdt å merke seg at aggregeringene oppdateres etterhvert som grunnlagsdata oppdateres, så dersom for eksempel en observasjon av RR_1 endres av HQC, vil aggregerte verdier av RR_12 oppdateres tilsvarende. HQC kan endre på aggregerte verdier, men hvis grunnlagsdata endres, vil ny aggregering bli gjort og raden overskrives (med fhqc=0).
Aggregatoren beregner både originalverdi og korrigertverdi, og legger det inn i databasen, uavhengig av om det fantes aggregerte verdier der fra før. Original og korrigert verdi beregnes hver for seg, med samme algoritme.
Aggregerte parametre
De aggregerte parametrene vil ha lik stasjonsid, sensor og level som de parametrene som aggregeres. typeid, derimot, vil endres til å bli lik den negative verdien av den originale typeid. Dette medfører at aggregerte verdier lett kan skilles fra ikke-aggregerte verdier i kvalobs.
De aggregerte verdiene får kontrollflagg fylt ut med bare null-verdier, med unntak av fagg, og fmis, som settes i henhold til flaggdokumentet. Som ellers i kvalobs beregnes useinfo ut ifra kontrollinfo.
Aggregerte parametre og kvalobs
Det er viktig å merke seg at siden de aggregerte parametrene får negativ typeid, blir de av kvalobs oppfattet som forskjellige stasjoner fra “grunnlagsstasjonene”. Dette, sammen med at stasjoner med negativ typeid ikke fins i obs_pgm, medfører at det ikke blir gjort noen kvalitetskontroll av de aggregerte verdiene.
Oppsett før kjøring
For å kjøre kvAgregated må sqlite3 være installert.
Under installasjon kjøres skriptet kvAgregateDbInit. Dette skriptet lager en cachedatabase for aggregatoren. For at den skal kunne brukes, må aggregatoren ha skriverettigheter dit. Databasen legges i fila {localstatedir}/lib/kvagregated/database.sqlite. localstatedir er normalt området /var eller /usr/local/var på maskinen. For å gi kvalobsbrukeren skriverettigheter til denne kan man for eksempel si:
chmod kvalobs:kvalobs /var/lib/kvagregated/database.sqlite
Dette skjer automatisk dersom aggregatoren er installert via en debian-pakke (som den nå er på produksjonsmaskinene).
Start av kvAgregated
Når kvAgregated startes vil den i begynne med å hente ned data fra kvalobs for de siste 24 timene. Dette er resurskrevende, og programmet bør ikke startes mens kvalobs har mye annet å gjøre, dvs at hver hele og halve time bør unngås for oppstart.
Etter oppstarten vil aggregerte data genereres fortløpende, etterhvert som grunnlagsdata kommer inn.
kvAgregated tar flere kommandolinjeargumenter. For å få en liste over disse, kan du kjøre følgende kommando:
kvAgregated --help
Opsjonene til kommandolinja lar deg styre aggregeringen på forskjellige måter. For eksempel kan du begrense hvilke stasjoner eller parametre som skal aggregeres, eller du kan få aggregatoren til å gå igjennom, og reprosessere gammel data.
Feilsituasjoner
Hvis kvalobs går ned kan det være en god ide å også restarte kvAgregated.
Idet aggregatoren begynner å kjøre igjen, vil den automatisk gå igjennom data for de siste tre timene, for å se om det har kommet noe nytt å aggregere siden den gikk ned.
Hvis aggregatorene har vært lengre nede enn tre timer, må kommandolinjeopsjoner settes for å få aggregatoren til å prosessere data lengre bak enn tre timer. Kjør kvAgregated --help for detaljer.
Spesielle regler
RR_1 fra RR_01
Siden det ikke kommer inn minuttverdier for nedbør når det ikke har regnet, må aggregering av minuttnedbør behandles anderledes enn andre verdier.
Når det faktisk kommer data for minuttnedbør, beregnes RR_1 som vanlig. Fra sommer 2011 prepareres datainput til kvalobs med 0.0 i første minutt i timen - slik at alle timer aggregeres. Hvis dette av en eller anne grunn ikke skjer, må kvdrift kjøre en jobb, som legger inn RR_01=0.0 på første minutt i timen der hvor det mangler aggregert RR_1-data i databasen - aggregator kjøres så manuelt for perioden.
RA og RR_1 fra samme stasjon
Hvis en stasjon rapporterer både RA og RR_1, vil aggregering av RR_12 fra RR_1 prioriteres over aggregering fra RA.
RR_12 fra RA
RR_12 vil ikke aggregeres fra RA dersom RA-verdien har minket betraktelig siden sist aggregering (for eksempel dersom målebøtta har blitt tømt).
Følgende korrigeringsalgoritme er implementert:
- Hvis RR_12(t) = RA(t)-RA(t-12) <= 0 Sett RR_12(t) = 0
- Hvis RR_12(t) = RA(t)-RA(t-12) > 0 og RA(t-12)-RA(t-24) <= -100 sett RR_12(t) = RA(t)-RA(t-12)
ellers:
- Hvis RR_12(t) = RA(t)-RA(t-12) > 0 og RA(t)-RA(t-24) <= 0 Sett RR_12(t) = 0
- Hvis RR_12(t) = RA(t)-RA(t-12) > 0 og RA(t)-RA(t-24) > 0 og RA(t-12)-RA(t-24)>=0 sett RR_12(t) = RA(t)-RA(t-12)
- Hvis RR_12(t) = RA(t)-RA(t-12) > 0 og RA(t)-RA(t-24) >=0 og RA(t-12)-RA(t-24) < 0 sett RR_12(t) = RA(t)-RA(t-24)
OT_24 fra OT_1
For stasjoner som sender inn minuttverdier for OT_1 benyttes kun minutt = 00 for å beregne OT_24.
Middelverdier
Noen døgnmiddelverdier (TA_24 og UU_24, men ikke NN_24) beregnes ved hjelp av Köppens formel. Konstanter for å gjøre disse beregningene hentes fra kvalobs-tabellen station_metadata, hvor metadatatypename=koppen_MÅNED, for eksempel koppen_06 for verdier som skal brukes i juni.
Trykk
Det beregnes også PO utfra PR i aggregatoren. Stasjonsspesifikke konstanter hentes fra tabellen station_metadata i kvalobs-databasen.
Aggregert PO legges ikke inn i databasen hvis den aggregerte verdien er veldig nær den rapporterte originalverdien for PO.
Algoritme for beregning av lufttrykket PO på stasjonen (QFE) når lufttrykket redusert til havets nivå PR (QFF) er kjent
PO = paramid 173
PR = paramid 178
TA = paramid 211
UM = paramid 284
TM = paramid 285
Forutsetninger
PR - Reduseet lufttrykk ved observasjonstidspunktet er kjent. TA - Lufttemperaturen på stasjonen, ved observasjonstidspunktet, er kjent. UM - Årsmiddelverdi av luftfuktigheten på stasjonen er kjent. TM - Årsmiddelverdi av lufttemperaturen på stasjonen er kjent. Hp - Referansehøyden for lufttrykk på stasjonen er kjent.
Hp ligger i stinfosys.station.hp Um og Tm ligger i stinfosys.station_info.description (med code='Tl' og docformatid=0), men kan også genereres fra KLIMA eller DVH10.
Stasjonsvise vedier av Um, Tm, Hp må ligge som metadata i Kvalobs og Histkvalobs. Disse må oppdateres og være klargjort for å inneholde historikk (for Histkvalobs).
Beregning etter Metode 0 (ingen inversjonskorreksjon) eller Metode 1 (inversjonskorreksjon) er kjent. Stasjonsliste for Metode 1 må lages i Stinfosys – med historikk hvis det endres. Metode 1 er ikke tatt i bruk.
Algoritme
Hvis Metode 0:
PO = PR / e^(Hp/Y) e^ betyr “e opphøyd i”
Y = (Cu+0.00325*Hp+273.2+TA)*29.29 Cu=Um*(2.5*10^(-5)*Hp + 0.10701)*0.0611213*e^(17.5043*Tm/(241.2+Tm))
Hvis Metode 1 og TA < 1.5 (er ikke tatt i bruk):
PO = PR / e^(Hp/Y) e^ betyr “e opphøyd i”
Y = (Cu+0.00325*Hp+273.2+(TA*0.315)+1)*29.29 Cu=Um*(2.5*10^(-5)*Hp + 0.10701)*0.0611213*e^(17.5043*Tm/(241.2+Tm))
Setting av flagg:
Controlinfo og useinfo settes lik flaggverdiene knyttet til PR.