Pilvipeittoisuuden arvioiminen METAR-datasta
Rannanpää, Jarno (2022-04-28)
Rannanpää, Jarno
J. Rannanpää
28.04.2022
© 2022 Jarno Rannanpää. Ellei toisin mainita, uudelleenkäyttö on sallittu Creative Commons Attribution 4.0 International (CC-BY 4.0) -lisenssillä (https://creativecommons.org/licenses/by/4.0/). Uudelleenkäyttö on sallittua edellyttäen, että lähde mainitaan asianmukaisesti ja mahdolliset muutokset merkitään. Sellaisten osien käyttö tai jäljentäminen, jotka eivät ole tekijän tai tekijöiden omaisuutta, saattaa edellyttää lupaa suoraan asianomaisilta oikeudenhaltijoilta.
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:oulu-202204281753
https://urn.fi/URN:NBN:fi:oulu-202204281753
Tiivistelmä
Työn tarkoituksena oli arvioida paikallista pilvipeittoisyyttä Oulun lentoaseman tuottamasta METAR-datasta käyttäen AWK-kieltä sekä UNIX-pohjaisia komentorivityökaluja. Kahdesti tunnissa lähetettäviä METAR-tiedotteita analysoitiin vuosikymmenen 2010–2020 ajalta. Käsiteltävien rivien määrä liikkui sadoissa tuhansissa. Suuren datamäärän käsittely asetti omat vaatimuksensa tehokkaiden työkalujen käytölle.
Työn alussa käydään läpi METAR-viestien rakenne. Lisäksi selvitetään pilvipeittoisyyden laskeminen sekä itse laskemisen tekninen haaste. Viestit on alun perin suunniteltu ihmissilmän luettavaksi, eivätkä ne sen vuoksi noudata tarkkaa rakennetta tai mittaa, vaikka informaation järjestys pääsääntöisesti onkin vakioitu. Mm. pilvipeitteisyys on koodattu viesteihin kirjainlyhentein ja ilmoitettu eri korkeuksien osapeittoina. Nämä osapeittoisyydet tuli paikantaa erimittaisista viesteistä sekä laskea edelleen kokonaispilvipeitteisyydeksi. Työn oleellisena osana oli selvittää AWK-kielen ja tyypillisten UNIX-pohjaisten komentorivityökalujen käyttöä tällaisen haasteen ratkaisemiseksi.
Konstruktio-osassa esitellään tarvittava koodaus pilvipeittoisyyden arvioimiseksi. Kaikki tarvittava koodaus on esitetty työn liitteissä. Työn viimeisessä käytännön osassa jouduttiin perehtymään myös epätäydellisen datan korjaamiseen; alkuperäisiä METAR-tiedotteita puuttui (jääneet mahdollisesti lähettämättä esimerkiksi huoltokatkoksen takia), jonka lisäksi esiintyi saman viestin monikertoja. Lopuksi kehitetyn koodauksen jatkokäyttöä arvioitiin. Koodin ja sen toiminnan lisäksi esitettiin graafinen esimerkkiesitys pilvisyydestä.
Työhön sovelletut työkalut osoittautuivat erittäin tehokkaiksi suuren datamäärän käsittelyyn sekä siinä toistuvien rakenteiden paikantamiseen, olkoonkin, että itse data oli rakenteeltaan hyvin epäsäännöllistä. The work aimed to evaluate local total cloudiness by using open data — in this case METAR messages from Oulu airport which are sent twice per hour. Data set of one whole decade 2010–2020 was analyzed. The tools to be used were specified being AWK language and typical UNIX shell tools. The number of message lines to be handled within the data was hundreds of thousands. Thus, specific tools for large amount of data were needed.
In the beginning of the work report, the structure of METAR messages is explained. Then, the logic how the total cloudiness is calculated is explored and the practical technical challenge further explained. In brief, sky coverage is coded with letter-based acronyms for several sky levels in messages that do not follow strict length nor structure; the order of the information typically still remains the same — respectively. These sub-levels were needed to be located throughout the data set and then further calculated as a total cloudiness of the sky. Core part of the work was to evaluate and execute AWK language and UNIX-based shell tools to solve the problem-field.
In the construction part of the work the needed coding to calculate total cloudiness out of the data set is presented. All needed coding is given in appendixes. In this last part of the work, non-perfect storage (or lack of existence) of data was observed (possibly due to messages never sent due to service breaks, etc.). Multiple entries of same data also existed. External time data set was used to help to fix the found imperfection. The function of fundamental parts of the code are explained and possible further usage of cloudiness information evaluated for possible further studies to come. Finally, graphical example is represented for better understanding how the cloudiness data could be applied.
The tools used to solve the problem were proven to be effective for the purpose, especially, for the big amount of data and for locating repeated structures from the data set. This, regardless of the data being irregular and with changing lengths.
Työn alussa käydään läpi METAR-viestien rakenne. Lisäksi selvitetään pilvipeittoisyyden laskeminen sekä itse laskemisen tekninen haaste. Viestit on alun perin suunniteltu ihmissilmän luettavaksi, eivätkä ne sen vuoksi noudata tarkkaa rakennetta tai mittaa, vaikka informaation järjestys pääsääntöisesti onkin vakioitu. Mm. pilvipeitteisyys on koodattu viesteihin kirjainlyhentein ja ilmoitettu eri korkeuksien osapeittoina. Nämä osapeittoisyydet tuli paikantaa erimittaisista viesteistä sekä laskea edelleen kokonaispilvipeitteisyydeksi. Työn oleellisena osana oli selvittää AWK-kielen ja tyypillisten UNIX-pohjaisten komentorivityökalujen käyttöä tällaisen haasteen ratkaisemiseksi.
Konstruktio-osassa esitellään tarvittava koodaus pilvipeittoisyyden arvioimiseksi. Kaikki tarvittava koodaus on esitetty työn liitteissä. Työn viimeisessä käytännön osassa jouduttiin perehtymään myös epätäydellisen datan korjaamiseen; alkuperäisiä METAR-tiedotteita puuttui (jääneet mahdollisesti lähettämättä esimerkiksi huoltokatkoksen takia), jonka lisäksi esiintyi saman viestin monikertoja. Lopuksi kehitetyn koodauksen jatkokäyttöä arvioitiin. Koodin ja sen toiminnan lisäksi esitettiin graafinen esimerkkiesitys pilvisyydestä.
Työhön sovelletut työkalut osoittautuivat erittäin tehokkaiksi suuren datamäärän käsittelyyn sekä siinä toistuvien rakenteiden paikantamiseen, olkoonkin, että itse data oli rakenteeltaan hyvin epäsäännöllistä.
In the beginning of the work report, the structure of METAR messages is explained. Then, the logic how the total cloudiness is calculated is explored and the practical technical challenge further explained. In brief, sky coverage is coded with letter-based acronyms for several sky levels in messages that do not follow strict length nor structure; the order of the information typically still remains the same — respectively. These sub-levels were needed to be located throughout the data set and then further calculated as a total cloudiness of the sky. Core part of the work was to evaluate and execute AWK language and UNIX-based shell tools to solve the problem-field.
In the construction part of the work the needed coding to calculate total cloudiness out of the data set is presented. All needed coding is given in appendixes. In this last part of the work, non-perfect storage (or lack of existence) of data was observed (possibly due to messages never sent due to service breaks, etc.). Multiple entries of same data also existed. External time data set was used to help to fix the found imperfection. The function of fundamental parts of the code are explained and possible further usage of cloudiness information evaluated for possible further studies to come. Finally, graphical example is represented for better understanding how the cloudiness data could be applied.
The tools used to solve the problem were proven to be effective for the purpose, especially, for the big amount of data and for locating repeated structures from the data set. This, regardless of the data being irregular and with changing lengths.
Kokoelmat
- Avoin saatavuus [32008]