Información del Automated Surface Observing System (AOS)

Librerías

library(riem)
library(tidyverse)
library(lubridate)
library(ggplot2)
library(plotly)

Buscar la red (país), ejemplo México y copiar CODE.

view(riem_networks())
#MX_ASOS

Buscar la estación (ciudad)-Ejemplo: Monterrey y copiar ID

view(riem_stations("MX__ASOS"))
#MMMY

Obtener información

monterrey<-riem_measures("MMMY")

Entender información

str(monterrey)
## tibble [77,961 x 32] (S3: tbl_df/tbl/data.frame)
##  $ station          : chr [1:77961] "MMMY" "MMMY" "MMMY" "MMMY" ...
##  $ valid            : POSIXct[1:77961], format: "2014-01-01 00:16:00" "2014-01-01 00:49:00" ...
##  $ lon              : num [1:77961] -100 -100 -100 -100 -100 ...
##  $ lat              : num [1:77961] 25.8 25.8 25.8 25.8 25.8 ...
##  $ tmpf             : num [1:77961] 48.2 48.2 48.2 46.4 46.4 46.4 46.4 46.4 46.4 46.4 ...
##  $ dwpf             : num [1:77961] 46.4 46.4 46.4 46.4 46.4 44.6 44.6 44.6 44.6 44.6 ...
##  $ relh             : num [1:77961] 93.5 93.5 93.5 100 100 ...
##  $ drct             : num [1:77961] 0 120 120 120 110 100 110 130 60 0 ...
##  $ sknt             : num [1:77961] 0 3 5 6 5 5 4 3 3 0 ...
##  $ p01i             : num [1:77961] 0 0 0 0 0 0 0 0 0 0 ...
##  $ alti             : num [1:77961] 30.3 30.3 30.3 30.3 30.3 ...
##  $ mslp             : num [1:77961] NA NA NA NA NA ...
##  $ vsby             : num [1:77961] 4 3 1 0.25 0.12 0.12 0.06 0.06 0.06 0.12 ...
##  $ gust             : num [1:77961] NA NA NA NA NA NA NA NA NA NA ...
##  $ skyc1            : chr [1:77961] "SCT" "SCT" "SCT" "VV " ...
##  $ skyc2            : chr [1:77961] "BKN" "BKN" "BKN" NA ...
##  $ skyc3            : chr [1:77961] "OVC" "OVC" "OVC" NA ...
##  $ skyc4            : chr [1:77961] NA NA NA NA ...
##  $ skyl1            : num [1:77961] 700 300 200 200 100 100 100 100 100 100 ...
##  $ skyl2            : num [1:77961] 1200 400 300 NA NA NA NA NA NA NA ...
##  $ skyl3            : num [1:77961] 4000 900 500 NA NA NA NA NA NA NA ...
##  $ skyl4            : num [1:77961] NA NA NA NA NA NA NA NA NA NA ...
##  $ wxcodes          : chr [1:77961] NA "BR" "BR" "FG" ...
##  $ ice_accretion_1hr: logi [1:77961] NA NA NA NA NA NA ...
##  $ ice_accretion_3hr: logi [1:77961] NA NA NA NA NA NA ...
##  $ ice_accretion_6hr: logi [1:77961] NA NA NA NA NA NA ...
##  $ peak_wind_gust   : logi [1:77961] NA NA NA NA NA NA ...
##  $ peak_wind_drct   : logi [1:77961] NA NA NA NA NA NA ...
##  $ peak_wind_time   : logi [1:77961] NA NA NA NA NA NA ...
##  $ feel             : num [1:77961] 48.2 47.2 45.6 42.9 43.5 ...
##  $ metar            : chr [1:77961] "MMMY 010016Z 00000KT 4SM SCT007 BKN012 OVC040 09/08 A3028 RMK 8/5// BR" "MMMY 010049Z 12003KT 3SM BR SCT003 BKN004 OVC009 09/08 A3028 RMK 8/5// -DZ OCNL" "MMMY 010116Z 12005KT 1SM BR SCT002 BKN003 OVC005 09/08 A3028 RMK 8/6// -DZ OCNL" "MMMY 010120Z 12006KT 1/4SM FG VV002 08/08 A3029 RMK 8//// BC FG MOV SE/NW" ...
##  $ snowdepth        : logi [1:77961] NA NA NA NA NA NA ...
summary(monterrey)
##    station              valid                          lon        
##  Length:77961       Min.   :2014-01-01 00:16:00   Min.   :-100.1  
##  Class :character   1st Qu.:2016-03-11 07:40:00   1st Qu.:-100.1  
##  Mode  :character   Median :2018-05-06 17:40:00   Median :-100.1  
##                     Mean   :2018-05-11 11:21:04   Mean   :-100.1  
##                     3rd Qu.:2020-07-03 16:41:00   3rd Qu.:-100.1  
##                     Max.   :2022-09-19 23:40:00   Max.   :-100.1  
##                                                                   
##       lat             tmpf             dwpf            relh       
##  Min.   :25.78   Min.   : 23.00   Min.   :-5.80   Min.   :  2.32  
##  1st Qu.:25.78   1st Qu.: 64.40   1st Qu.:51.80   1st Qu.: 48.05  
##  Median :25.78   Median : 73.40   Median :62.60   Median : 69.14  
##  Mean   :25.78   Mean   : 72.49   Mean   :57.98   Mean   : 65.06  
##  3rd Qu.:25.78   3rd Qu.: 80.60   3rd Qu.:68.00   3rd Qu.: 83.32  
##  Max.   :25.78   Max.   :111.20   Max.   :86.00   Max.   :163.20  
##                  NA's   :89       NA's   :1686    NA's   :1741    
##       drct            sknt             p01i        alti            mslp       
##  Min.   :  0.0   Min.   : 0.000   Min.   :0   Min.   : 0.04   Min.   : 913.2  
##  1st Qu.: 70.0   1st Qu.: 4.000   1st Qu.:0   1st Qu.:29.88   1st Qu.:1011.4  
##  Median :110.0   Median : 5.000   Median :0   Median :29.97   Median :1014.5  
##  Mean   :130.7   Mean   : 5.819   Mean   :0   Mean   :29.98   Mean   :1015.3  
##  3rd Qu.:160.0   3rd Qu.: 8.000   3rd Qu.:0   3rd Qu.:30.07   3rd Qu.:1018.4  
##  Max.   :360.0   Max.   :98.000   Max.   :0   Max.   :30.81   Max.   :1103.4  
##  NA's   :72      NA's   :72                   NA's   :26      NA's   :66962   
##       vsby             gust           skyc1              skyc2          
##  Min.   : 0.000   Min.   : 13.00   Length:77961       Length:77961      
##  1st Qu.: 6.000   1st Qu.: 20.00   Class :character   Class :character  
##  Median :10.000   Median : 24.00   Mode  :character   Mode  :character  
##  Mean   : 9.124   Mean   : 24.65                                        
##  3rd Qu.:12.000   3rd Qu.: 28.00                                        
##  Max.   :40.000   Max.   :210.00                                        
##  NA's   :31       NA's   :75505                                         
##     skyc3              skyc4               skyl1           skyl2      
##  Length:77961       Length:77961       Min.   :    0   Min.   :    0  
##  Class :character   Class :character   1st Qu.: 1500   1st Qu.: 2000  
##  Mode  :character   Mode  :character   Median : 3000   Median : 6000  
##                                        Mean   : 5388   Mean   : 8015  
##                                        3rd Qu.: 7000   3rd Qu.:10000  
##                                        Max.   :37000   Max.   :30000  
##                                        NA's   :23051   NA's   :51698  
##      skyl3           skyl4         wxcodes          ice_accretion_1hr
##  Min.   :  400   Min.   : 3000   Length:77961       Mode:logical     
##  1st Qu.: 8000   1st Qu.:20000   Class :character   NA's:77961       
##  Median :16000   Median :20000   Mode  :character                    
##  Mean   :14779   Mean   :20656                                       
##  3rd Qu.:20000   3rd Qu.:25000                                       
##  Max.   :30000   Max.   :25000                                       
##  NA's   :73228   NA's   :77766                                       
##  ice_accretion_3hr ice_accretion_6hr peak_wind_gust peak_wind_drct
##  Mode:logical      Mode:logical      Mode:logical   Mode:logical  
##  NA's:77961        NA's:77961        NA's:77961     NA's:77961    
##                                                                   
##                                                                   
##                                                                   
##                                                                   
##                                                                   
##  peak_wind_time      feel           metar           snowdepth     
##  Mode:logical   Min.   :  9.11   Length:77961       Mode:logical  
##  NA's:77961     1st Qu.: 64.40   Class :character   NA's:77961    
##                 Median : 73.40   Mode  :character                 
##                 Mean   : 73.16                                    
##                 3rd Qu.: 83.29                                    
##                 Max.   :131.06                                    
##                 NA's   :1744

Filtrar información - Ejemplo: Septiembre 2022

este_mes<-subset(monterrey, valid >= as.POSIXct("2022-09-01 00:00") & valid <= as.POSIXct("2022-09-07 23:59"))

Graficar-Ejemplo: Humedad Relativa durante Septiembre 2022

plot(este_mes$valid,este_mes$relh)

Promediar información por día

 promedio <- monterrey %>%
  mutate(date=ymd_hms(valid), date=as.Date(date)) %>% 
  group_by(date) %>% 
  summarize_if(is.numeric, ~mean(.,na.rm=TRUE))

tibble(promedio)
## # A tibble: 3,151 x 18
##    date         lon   lat  tmpf  dwpf  relh  drct  sknt  p01i  alti  mslp  vsby
##    <date>     <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
##  1 2014-01-01 -100.  25.8  50.7  47.5  90.2  90.3  2.42     0  30.2 1023.  2.29
##  2 2014-01-02 -100.  25.8  53.9  47.4  81.3 238.   8.13     0  30.2 1024.  8.48
##  3 2014-01-03 -100.  25.8  45.5  34.4  69.0  97.2  4.16     0  30.4 1030. 15   
##  4 2014-01-04 -100.  25.8  44.8  36    71.7  78.9  2.22     0  30.1 1022. 15   
##  5 2014-02-07 -100.  25.8  37.6  36.3  95.3  82.6  2.96     0  30.2 1026.  1.78
##  6 2014-02-08 -100.  25.8  44.8  41.5  90.0 100    2.74     0  30.2 1023.  1.81
##  7 2014-02-09 -100.  25.8  53.8  44.7  77.1 212.   5.38     0  30.1 1019.  6.46
##  8 2014-02-10 -100.  25.8  62.5  54.0  77.8 158.   7.68     0  29.9 1014.  7.27
##  9 2014-02-11 -100.  25.8  50.5  45.6  83.9 228.   7.58     0  30.0 1019.  6.81
## 10 2014-02-12 -100.  25.8  45.5  35.1  69.0 229.   8.85     0  30.2 1023.  9.56
## # ... with 3,141 more rows, and 6 more variables: gust <dbl>, skyl1 <dbl>,
## #   skyl2 <dbl>, skyl3 <dbl>, skyl4 <dbl>, feel <dbl>

Agregar columnas de grados centígrados

centigrados<- promedio 
centigrados$tmpc<-(centigrados$tmpf-32)/1.8
str(centigrados)
## tibble [3,151 x 19] (S3: tbl_df/tbl/data.frame)
##  $ date : Date[1:3151], format: "2014-01-01" "2014-01-02" ...
##  $ lon  : num [1:3151] -100 -100 -100 -100 -100 ...
##  $ lat  : num [1:3151] 25.8 25.8 25.8 25.8 25.8 ...
##  $ tmpf : num [1:3151] 50.7 53.9 45.5 44.8 37.6 ...
##  $ dwpf : num [1:3151] 47.5 47.4 34.4 36 36.3 ...
##  $ relh : num [1:3151] 90.2 81.3 69 71.7 95.3 ...
##  $ drct : num [1:3151] 90.3 238.3 97.2 78.9 82.6 ...
##  $ sknt : num [1:3151] 2.42 8.13 4.16 2.22 2.96 ...
##  $ p01i : num [1:3151] 0 0 0 0 0 0 0 0 0 0 ...
##  $ alti : num [1:3151] 30.2 30.2 30.4 30.1 30.2 ...
##  $ mslp : num [1:3151] 1023 1024 1030 1022 1026 ...
##  $ vsby : num [1:3151] 2.29 8.48 15 15 1.78 ...
##  $ gust : num [1:3151] NaN 27.1 NaN NaN NaN ...
##  $ skyl1: num [1:3151] 1527 7150 12000 1700 348 ...
##  $ skyl2: num [1:3151] 8400 10812 NaN NaN 580 ...
##  $ skyl3: num [1:3151] 9080 20000 NaN NaN NaN ...
##  $ skyl4: num [1:3151] NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
##  $ feel : num [1:3151] 49.8 53.6 44.1 43.4 34.9 ...
##  $ tmpc : num [1:3151] 10.36 12.17 7.52 7.11 3.09 ...
centigrados$feelc<-(centigrados$feel-32)/1.8
str(centigrados)
## tibble [3,151 x 20] (S3: tbl_df/tbl/data.frame)
##  $ date : Date[1:3151], format: "2014-01-01" "2014-01-02" ...
##  $ lon  : num [1:3151] -100 -100 -100 -100 -100 ...
##  $ lat  : num [1:3151] 25.8 25.8 25.8 25.8 25.8 ...
##  $ tmpf : num [1:3151] 50.7 53.9 45.5 44.8 37.6 ...
##  $ dwpf : num [1:3151] 47.5 47.4 34.4 36 36.3 ...
##  $ relh : num [1:3151] 90.2 81.3 69 71.7 95.3 ...
##  $ drct : num [1:3151] 90.3 238.3 97.2 78.9 82.6 ...
##  $ sknt : num [1:3151] 2.42 8.13 4.16 2.22 2.96 ...
##  $ p01i : num [1:3151] 0 0 0 0 0 0 0 0 0 0 ...
##  $ alti : num [1:3151] 30.2 30.2 30.4 30.1 30.2 ...
##  $ mslp : num [1:3151] 1023 1024 1030 1022 1026 ...
##  $ vsby : num [1:3151] 2.29 8.48 15 15 1.78 ...
##  $ gust : num [1:3151] NaN 27.1 NaN NaN NaN ...
##  $ skyl1: num [1:3151] 1527 7150 12000 1700 348 ...
##  $ skyl2: num [1:3151] 8400 10812 NaN NaN 580 ...
##  $ skyl3: num [1:3151] 9080 20000 NaN NaN NaN ...
##  $ skyl4: num [1:3151] NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
##  $ feel : num [1:3151] 49.8 53.6 44.1 43.4 34.9 ...
##  $ tmpc : num [1:3151] 10.36 12.17 7.52 7.11 3.09 ...
##  $ feelc: num [1:3151] 9.87 12.01 6.71 6.36 1.6 ...

Filtrar información-Ejemplo: 2022

este_año<-centigrados[centigrados$date>="2022-01-01"& centigrados$date<="2022-09-07",]

Graficar-Ejemplo: Temperatura promedio septiembre 2022

plot(este_año$date, este_año$tmpc, type="l", main="Temperatura Promedio en Monterrey durante 2022", xlab="Fecha", ylab="°C")

Conclusión

Conocer las herramientas que utilizamos permite que nuestros límites sean cada vez más lejanos. R nos permite acceder a información de gran valor como la disponible en el Automated Surface Observing System (AOS). Nos permite explorar datos de forma gratuita, sencilla y de gran valor.

LS0tDQp0aXRsZTogIkNsaW1hIg0KYXV0aG9yOiAiSmF2aWVyIEF5YWxhLUEwMDgyMzk1OCINCmRhdGU6ICcyMDIyLTA5LTA4Jw0Kb3V0cHV0Og0KICBodG1sX2RvY3VtZW50Og0KICAgIHRvYzogdHJ1ZQ0KICAgIHRvY19mbG9hdDogdHJ1ZQ0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCi0tLQ0KPGNlbnRlcj4NCjxpbWcgc3JjPSJDOi8vVXNlcnMvL2phdmF3Ly9PbmVEcml2ZSAtIEluc3RpdHV0byBUZWNub2xvZ2ljbyB5IGRlIEVzdHVkaW9zIFN1cGVyaW9yZXMgZGUgTW9udGVycmV5Ly9Mb2dvIElURVNNIHNtYWxsLnBuZyI+DQo8L2NlbnRlcj4gIA0KDQpgYGB7Y3NzLCBlY2hvPUZBTFNFfQ0KaDEsIGg0IHsNCiAgdGV4dC1hbGlnbjogY2VudGVyOw0KfQ0KDQpoMSwgaDIsIGgzIHsNCiAgY29sb3I6ICMwNjFGNkI7DQp9DQpgYGANCg0KIyMgSW5mb3JtYWNpw7NuIGRlbCBBdXRvbWF0ZWQgU3VyZmFjZSBPYnNlcnZpbmcgU3lzdGVtIChBT1MpICANCg0KDQojIyMgTGlicmVyw61hcyAgDQpgYGB7ciBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KbGlicmFyeShyaWVtKQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KGx1YnJpZGF0ZSkNCmxpYnJhcnkoZ2dwbG90MikNCmxpYnJhcnkocGxvdGx5KQ0KYGBgDQoNCg0KIyMjIEJ1c2NhciBsYSByZWQgKHBhw61zKSwgZWplbXBsbyBNw6l4aWNvIHkgY29waWFyIENPREUuDQpgYGB7cn0NCnZpZXcocmllbV9uZXR3b3JrcygpKQ0KI01YX0FTT1MNCg0KYGBgDQoNCiMjIyBCdXNjYXIgbGEgZXN0YWNpw7NuIChjaXVkYWQpLUVqZW1wbG86IE1vbnRlcnJleSB5IGNvcGlhciBJRA0KYGBge3J9DQp2aWV3KHJpZW1fc3RhdGlvbnMoIk1YX19BU09TIikpDQojTU1NWQ0KYGBgDQoNCiMjIyBPYnRlbmVyIGluZm9ybWFjacOzbg0KYGBge3J9DQptb250ZXJyZXk8LXJpZW1fbWVhc3VyZXMoIk1NTVkiKQ0KYGBgDQoNCiMjIyBFbnRlbmRlciBpbmZvcm1hY2nDs24NCmBgYHtyfQ0Kc3RyKG1vbnRlcnJleSkNCnN1bW1hcnkobW9udGVycmV5KQ0KYGBgDQoNCiMjIyBGaWx0cmFyIGluZm9ybWFjacOzbiAtIEVqZW1wbG86IFNlcHRpZW1icmUgMjAyMg0KYGBge3J9DQplc3RlX21lczwtc3Vic2V0KG1vbnRlcnJleSwgdmFsaWQgPj0gYXMuUE9TSVhjdCgiMjAyMi0wOS0wMSAwMDowMCIpICYgdmFsaWQgPD0gYXMuUE9TSVhjdCgiMjAyMi0wOS0wNyAyMzo1OSIpKQ0KYGBgDQoNCiMjIyBHcmFmaWNhci1FamVtcGxvOiBIdW1lZGFkIFJlbGF0aXZhIGR1cmFudGUgU2VwdGllbWJyZSAyMDIyDQpgYGB7cn0NCnBsb3QoZXN0ZV9tZXMkdmFsaWQsZXN0ZV9tZXMkcmVsaCkNCmBgYA0KDQojIyMgUHJvbWVkaWFyIGluZm9ybWFjacOzbiBwb3IgZMOtYQ0KYGBge3J9DQogcHJvbWVkaW8gPC0gbW9udGVycmV5ICU+JQ0KICBtdXRhdGUoZGF0ZT15bWRfaG1zKHZhbGlkKSwgZGF0ZT1hcy5EYXRlKGRhdGUpKSAlPiUgDQogIGdyb3VwX2J5KGRhdGUpICU+JSANCiAgc3VtbWFyaXplX2lmKGlzLm51bWVyaWMsIH5tZWFuKC4sbmEucm09VFJVRSkpDQoNCnRpYmJsZShwcm9tZWRpbykNCmBgYA0KDQojIyMgQWdyZWdhciBjb2x1bW5hcyBkZSBncmFkb3MgY2VudMOtZ3JhZG9zDQpgYGB7cn0NCmNlbnRpZ3JhZG9zPC0gcHJvbWVkaW8gDQpjZW50aWdyYWRvcyR0bXBjPC0oY2VudGlncmFkb3MkdG1wZi0zMikvMS44DQpzdHIoY2VudGlncmFkb3MpDQoNCmNlbnRpZ3JhZG9zJGZlZWxjPC0oY2VudGlncmFkb3MkZmVlbC0zMikvMS44DQpzdHIoY2VudGlncmFkb3MpDQpgYGANCg0KIyMjIEZpbHRyYXIgaW5mb3JtYWNpw7NuLUVqZW1wbG86IDIwMjINCmBgYHtyfQ0KZXN0ZV9hw7FvPC1jZW50aWdyYWRvc1tjZW50aWdyYWRvcyRkYXRlPj0iMjAyMi0wMS0wMSImIGNlbnRpZ3JhZG9zJGRhdGU8PSIyMDIyLTA5LTA3IixdDQpgYGANCg0KIyMjIEdyYWZpY2FyLUVqZW1wbG86IFRlbXBlcmF0dXJhIHByb21lZGlvIHNlcHRpZW1icmUgMjAyMg0KYGBge3J9DQpwbG90KGVzdGVfYcOxbyRkYXRlLCBlc3RlX2HDsW8kdG1wYywgdHlwZT0ibCIsIG1haW49IlRlbXBlcmF0dXJhIFByb21lZGlvIGVuIE1vbnRlcnJleSBkdXJhbnRlIDIwMjIiLCB4bGFiPSJGZWNoYSIsIHlsYWI9IsKwQyIpDQpgYGANCg0KIyMjIENvbmNsdXNpw7NuICANCkNvbm9jZXIgbGFzIGhlcnJhbWllbnRhcyBxdWUgdXRpbGl6YW1vcyBwZXJtaXRlIHF1ZSBudWVzdHJvcyBsw61taXRlcyBzZWFuIGNhZGEgdmV6IG3DoXMgbGVqYW5vcy4gKipSKiogbm9zIHBlcm1pdGUgYWNjZWRlciBhIGluZm9ybWFjacOzbiBkZSBncmFuIHZhbG9yIGNvbW8gbGEgZGlzcG9uaWJsZSBlbiBlbCAqKkF1dG9tYXRlZCBTdXJmYWNlIE9ic2VydmluZyBTeXN0ZW0gKEFPUykqKi4gTm9zIHBlcm1pdGUgZXhwbG9yYXIgZGF0b3MgZGUgZm9ybWEgZ3JhdHVpdGEsIHNlbmNpbGxhIHkgZGUgZ3JhbiB2YWxvci4gDQoNCg0K