Danych Meteorologicznych Sylwester Arabas (ćwiczenia do wykładu dra Krzysztofa Markowicza) Instytut Geofizyki, Wydział Fizyki Uniwersytetu Warszawskiego 3 października 2008 r.
O prowadzącym Czym się zajmuję więcej informacji na http://www.igf.fuw.edu.pl/ slayoo/ Kontakt pocztowy: sarabas@igf.fuw.edu.pl osobisty: pok. 424A, IV piętro budynku IGF na Pasteura
Termin i miejsce ćwiczeń piątek 16:15 18:00 (14:15 16:00 gdy nie ma seminarium) Pasteura 7, sala 406, z przerwą, możliwa zmiana terminu Formuła ćwiczeń wspólne pisanie programów do analizy i wizualizacji danych meteorologicznych metodami omawianymi na wykładzie Zadania domowe po każdych ćwiczeniach, obowiązkowe, punktowane: 0 brak 1 poprawny wynik 2 poprawny wynik, udokumentowany, czytelny kod, ciekawe pomysły, coś od siebie itp. tydzień na rozwiązanie, omawiane na kolejnych ćw.
Zasady zaliczenia ćwiczeń obecność i punkty z zadań domowych Materiały do ćwiczeń i aktualności http://www.igf.fuw.edu.pl/ slayoo/mpdm2008/
Środowisko pracy i narzędzia http://www.gnuplot.info/ GNU Data Language (składnia IDL) http://gnudatalanguage.sourceforge.net/ GNU AWK (składnia AWK) http://www.gnu.org/software/gawk/
Co się może przydać w sieci IGF szyfrowane połączenie z atutem z przekazywaniem X11 $ man ssh $ ssh -Y atut.igf.fuw.edu.pl edytor Vim $ man vim $ vimtutor $ vim I tryb edycji dd usunięcie linii /ciąg wyszukiwanie ciąg X shift-g przejście do linii X :w plik zapis do plik :q wyjście z edytora drukowanie na drukarce HPLJ2300 na IV p. $ lpr -PHPLJ2300 plik.[pdf,ps]
Atmosfera Wzorcowa ISA ciśnienie hydrostatyczne i liniowe profile temperatury: dt dh [ K h 0 [km] km ] T 0[C] p 0 [hpa] 0,000-6,5 15,0 1013,25 11,000 0,0-56,5 226,32 20,000 1,0-56,5 54,749 32,000 2,8-44,5 8,6802 47,000 0,0-2,5 1,1091 51,000-2,8-2,5 0,66939 71,000-2,0-58,5 0,039564 84,852-86,2 0,003734 (http://en.wikipedia.org/wiki/international Standard Atmosphere) polecenie: wykreślić profil z wysokością temperatury ISA
przykładowe rozwiązanie (a) ISA T.csv # profil temperatury ISA # h [m],t [C] 0,15 11000,-56.5 20000,-56.5 32000,-44.5 47000,-2.5 51000,-2.5 71000,-58.5 84852,-86.2 zad1.1a.gpi # autor: Sylwester Arabas (sarabas@igf.fuw.edu.pl) # MPDM zadanie 1.3 (rozwi!zanie a) # ustawienia formatu i nazwy pliku wynikowego set term postscript color lw 3 solid font 16 enhanced set output 'zad1.3a.eps' set size ratio 2 # ustawienia osi, siatki etc set xlabel "temperatura [C]" set ylabel "wysoko"# [km]" set grid set yrange [0:84.852] # polskie litery w kodowaniu ISO-8859-2 set encoding iso_8859_2 set datafile separator "," plot 'ISA_T.csv' \ using 2:($1/1000) \ with lines lw 6 \ title "profil ISA" pod powłoką $ gnuplot zad1.1a.gpi $ ps2pdf zad1.1a.eps zad1.1a.pdf
przykładowe rozwiązanie (b) # autor: Sylwester Arabas (sarabas@igf.fuw.edu.pl) # MPDM zadanie 1.3 (rozwi!zanie b) # ustawienia formatu i nazwy pliku wynikowego set term postscript color lw 3 solid font 16 enhanced set output 'zad1.3b.eps' set size ratio 2 # ustawienia osi, siatki etc set xlabel "temperatura [C]" set ylabel "wysoko"# [km]" set grid set xrange [-100:20] set yrange [0:84.852] # polskie litery w kodowaniu ISO-8859-2 set encoding iso_8859_2 # definicje funkcji wyznaczaj!cych profile temp. ISA_T_0_1(h) = 15.0-6.5 * (h - 0) ISA_T_1_2(h) = -56.5-0.0 * (h - 11) ISA_T_2_3(h) = -56.5 + 1.0 * (h - 20) ISA_T_3_4(h) = -44.5 + 2.8 * (h - 32) ISA_T_4_5(h) = - 2.5 + 0.0 * (h - 47) ISA_T_5_6(h) = - 2.5-2.8 * (h - 51) ISA_T_6_7(h) = -58.5-2.0 * (h - 71) ISA_T(h) = \ h < 11? ISA_T_0_1(h) : \ h < 20? ISA_T_1_2(h) : \ h < 32? ISA_T_2_3(h) : \ h < 47? ISA_T_3_4(h) : \ h < 51? ISA_T_4_5(h) : \ h < 71? ISA_T_5_6(h) : \ ISA_T_6_7(h) # wykres parametryczny set parametric set trange [0:84.852] plot \ ISA_T_0_1(t),t with lines lt 2 t "", \ ISA_T_1_2(t),t with lines lt 2 t "", \ ISA_T_2_3(t),t with lines lt 2 t "", \ ISA_T_3_4(t),t with lines lt 2 t "", \ ISA_T_4_5(t),t with lines lt 2 t "", \ ISA_T_5_6(t),t with lines lt 2 t "", \ ISA_T_6_7(t),t with lines lt 2 t "", \ ISA_T(t),t with lines lt 1 lw 6 title "profil ISA"
dane z pomiarów na dachu IGF (fot. Michał Posyniak)
polecenia pobranie danych ze stacji meteo i radiometrów IGF dla dnia 27 września 2008 r. (http://metobs.igf.fuw.edu.pl/) wykreślenie (na jednym wykresie) serii czasowych wartości temperatury, temperatury punktu rosy i strumieni promieniowania krótko- i długofalowego z uwzględnieniem: przerwy w zbiorze danych (brak prądu w IGF) legendy i opisów osi (proponowane X czas, Y1 temperatura, Y2 strumień prom.) wyliczenia temperatury punktu rosy jako funkcji temperatury i wilgotności względnej (wzór Magnusa)
przykładowy wynik
przykładowy kod źródłowy 1/2 zad1.1.gpi (str. 1/2) # autor: Sylwester Arabas <sarabas@igf.fuw.edu.pl> # MPDM #!cie"ki do plików z danymi i definicje kolumn data_meteo = 'meteodata-meteo-2008-09-27' data_radio = 'meteodata-radio-2008-09-27' col_t = 2 col_t = 8 col_rh = 10 col_sw = 8 col_lw = 9 # Wzór Magnusa na temperatur# punktu rosy A = 17.27 B = 237.7 gmma(t, RH) = A * T / (B + T) + log(rh/100) dewpoint(t, RH) = B * gmma(t, RH) / (A - gmma(t, RH)) # ustawienia formatu i nazwy pliku wynikowego set term postscript color lw 3 solid font 16 enhanced set output 'zad1.1.eps'
przykładowy: kod źródłowy 2/2 zad1.1.gpi str. 2/2 # polskie litery, opis wykresu i osi, ustawienie siatki set encoding iso_8859_2 set title "Wyniki pomiarów na stacji meteo IGF UW (czas lokalny UTC+2)" set ylabel "temperatura [C]" set y2label "strumie! promieniowania [W m^{-2}]" # format czasu w plikach (xtics w sekundach) set timefmt "%Y\t%m\t%d\t%H\t%M\t%S" set xdata time set xtics 10800 # ustawienia siatki, legendy i osi set grid set key bottom right set y2tics set y2range [800:0] set yrange [2:18] # rysowanie wykresów (column()) powoduje przerywanie linii po napotkaniu NaN! plot \ data_radio u col_t:(column(col_lw)) axis x1y2 w filledcurves x2 t "prom. d"ugofalowe" lt 5, \ data_radio u col_t:(column(col_sw)) axis x1y2 w filledcurves x2 t "prom. krótkofalowe" lt 3, \ data_meteo using col_t:(column(col_t)) with lines title "temperatura" lt 4, \ data_meteo u col_t:(dewpoint(column(col_t), column(col_rh))) w lines t "temp. punktu rosy" lt 1
Zadanie domowe dane z sondażu aerologicznego pobranie danych z dowolnego sondażu aerologicznego (http://weather.uwyo.edu/)
Zadanie domowe polecenia wykonanie, przy pomocy gnuplota, wykresu profili temperatury (osie x1y1, np. styl points) i ciśnienia (osie x2y1, np. styl points, inny kolor) z wysokością, naniesionych na profile tych parametrów w Atmosferze Standardowej (np. stylem lines) spakowanie wykresu w formacie PDF wraz z kodem źródłowym skryptu gnuplota do archiwum tar i skompresowanie gzipem, przesłanie archiwum e-mailem przed następnymi ćwiczeniami
Zadanie domowe przykładowy wynik
: składnia i operatory zmienne całkowite i zmiennoprzecinkowe (rzecz. i zespolone) gnuplot> a = 1 gnuplot> a = 1. gnuplot> a = sqrt(-1) gnuplot> a = NaN gnuplot> print a komentarze gnuplot> # tekst komentarza funkcje własne i wbudowane gnuplot> help functions gnuplot> linia(x) = x * a + b gnuplot> s = sin(x) operatory gnuplot> help operators [unary,binary,ternary]
: pliterki, znaki specjalne, formatowanie rozszerzone Ustawianie kodowania polskich znaków ISO-8859-2 gnuplot> set encoding iso 8859 2 gnuplot> set title Pchnąć w tę łódź jeża lub ośm skrzyń fig. Przydatne znaki specjalne \n nowa linia {/Symbol X} grecki odpowiednik X (np. m µ, G Γ) Formatowanie rozszerzone: indeksy, znaki spec. (np. r v [µm 3 ]) gnuplot> set term [postscript,x11,png] enhanced gnuplot> help enhanced gnuplot> set xlabel r v [{/Symbol m} mˆ 3]
: wykresy parametryczne, w tym x(y) wykreślenie koła gnuplot> set parametric gnuplot> plot sin(t),cos(t) wykreślenie funkcji x(y) gnuplot> set parametric gnuplot> plot f(t), t
Narzędzia UNIXowe: tar, wget, epstopdf tar archiwizacja (i kompresja) danych $ man tar $ tar cvf nazwa archiwum.tar katalog do zarchiwizowania $ tar xvf nazwa archiwum.tar $ tar cvzf nazwa archiwum.tar.gz katalog do zarchiwizowania $ tar xvzf nazwa archiwum.tar.gz $ tar cvjf nazwa archiwum.tar.bz2 katalog do zarchiwizowania $ tar xvjf nazwa archiwum.tar.bz2 wget pobieranie plików protokołami http i ftp $ man wget $ wget http://www.igf.fuw.edu.pl/ slayoo/mpdm2008/... ps2pdf konwersja PS do PDF $ man ps2pdf $ ps2pdf wykres.eps
Grafika rastrowa a wektorowa która do czego rastrowa wektorowa 300 250 (http://en.wikipedia.org/wiki/lenna) Formaty godne polecenia: PNG (kompresja bezstratna) JPG (kompresja stratna tylko do zdjęć!!!) opad [mm] 200 150 100 50 0 sty lut mar kwi maj cze lip sie wrz paź lis gru (Dane dla Wagadugu, Burkina Faso) Formaty godne polecenia: SVG (Inkscape, Firefox etc) PS/PDF (tzw. zamknięte, można w nich zawrzeć grafikę wekt. i rastrową)