AgRoMeteorologiaINTA / siga

Paquete que descarga y lee datos del Sistema de Información y Gestión Agrometeorológica del INTA
https://github.com/AgRoMeteorologiaINTA/agromet
Other
1 stars 0 forks source link

DESCARGA DE DATOS ME DA ERROR #3

Closed NatiGattinoni closed 5 months ago

NatiGattinoni commented 3 years ago

Aquí yo otra vez, tuve el siguiente error, les dejo las lineas que corrí

estaciones <- siga_metadatos() %>% filter(id == "NH0446") datos <- siga_descargar(ids=estaciones, dir= "DATOS/") probando la URL 'http://siga.inta.gov.ar/document/series/NH0446.xls' Content type 'application/vnd.ms-excel' length 8718336 bytes (8.3 MB) downloaded 8.3 MB

Error: filepath: C:\Users\Nati-Juan\AppData\Local\Temp\RtmpKcDlGs\NH0446.xls libxls error: Unable to open file

si me dirijo al filepath, se encuentra el archivo pero no me deja abrirlo (me tira error), y les consulto porque no me deja guardarlo en el directorio que le puse o si o si va al temp?

saludos

paocorrales commented 3 years ago

Hola Nati,

Me parece que el problema es que cuando Elio armó la función usó estaciones cuyas bases de datos tienen 30 columnas pero justo esta tienen 34. Saber cuantas columnas tiene y de que tipo de dato ayuda a la lectura. Si la función no tiene esta información, lee todas las columnas como character y luego hay que cambiar el tipo de dato de cada una a mano.

Capaz a @eliocamp se le ocurre alguna solución elegante pero tal vez podemos agregar un argumento para que modifique o no el tipo de columna. Por supuesto, lo ideal es que todos los archivos tengan la misma estructura pero imagino que eso no es una opción!

paocorrales commented 3 years ago

Nati hay alguna chance de que nos pases lo nombres de todas las posibles columnas (y el tipo de dato cada una)? En este caso el archivo tiene 34 columnas, hay archivos con más columnas o ese es el máximo?

NatiGattinoni commented 3 years ago

@paocorrales si bien no he podido consultarle al responsable del sistema, he verificado (descargando series al azar) que las estaciones convencionales (cuyo nombre empieza con NH) poseen 34 columnas y las automáticas 30 columnas.

te debo el nombre y el tipo de datos.

yabellini commented 3 years ago

El nombre es la primera filita del archivo que uno se descarga. No creo que cambien. Tal vez podríamos verificar con esas mismas series al azar que descargaste Nati.

Con respecto del tipo de dato, de acuerdo al nombre de la columna y la variable podríamos determinarlo.

paocorrales commented 3 years ago

Si vemos que hay un patrón entre los archivos de las estaciones automáticas y las convencionales podríamos armar dos funciones o agregar un argumento a la función para "avisar" si son datos de un tipo u el otro. Lo malo es que datos de estaciones automaticas y convencionales no se van a poder juntar autimaticamente.

eliocamp commented 3 years ago

Luego de mirar esto con más detenimiento y darnos cuenta de que los arhivos de excel con los datos también tenían una hoja de metadatos hicimos algunos cambios. Decinos qué te parece y si te anda bien.

Todo esto corre con la última versión en github.

library(siga) 
packageVersion("siga")
#> [1] '0.0.1.9000'

siga_estaciones() te devuelve inforamción de las estaciones disponibles.

estaciones <- siga_estaciones()
#> Descargando estaciones y guardando en /tmp/Rtmp4gGgqt/siga_metadatos.csv.
head(estaciones)
#>       id             nombre   tipo   localidad  provincia    lat    lon altura
#> 1: 91012            Strobel Omixom Sin asignar Entre Rios -32.05 -60.60      0
#> 2: 91023         El Redomon Omixom Sin asignar Entre Rios -31.08 -58.28      0
#> 3: 91024           Basualdo Omixom Sin asignar Entre Rios -30.29 -58.66      0
#> 4: 91001       Hernandarias Omixom Sin asignar Entre Rios -31.20 -59.97      0
#> 5: 91026          Oro Verde Omixom Sin asignar Entre Rios -31.85 -60.52      0
#> 6: 91027 Don Cristobal 2da. Omixom Sin asignar Entre Rios -32.07 -60.00      0
#>    ubicacion      desde      hasta
#> 1:  Diamante 2017-03-31 2019-01-12
#> 2: Concordia 2017-03-31 2019-01-12
#> 3: Feliciano 2017-03-31 2019-01-12
#> 4:    Parana 2017-03-31 2019-01-12
#> 5:    Parana 2017-03-31 2019-01-12
#> 6:    Nogoya 2017-03-31 2019-01-12

ids <- estaciones[1:2, ]

siga_datos() descarga los datos de las estaciones seleccionadas

head(siga_datos(ids))
#>       id      fecha temperatura_abrigo_150cm temperatura_abrigo_150cm_maxima
#> 1: 91012 2017-03-31                       NA                              NA
#> 2: 91012 2017-04-01                 24.71165                              NA
#> 3: 91012 2017-04-02                 18.99201                           21.44
#> 4: 91012 2017-04-03                 18.25680                           24.03
#> 5: 91012 2017-04-04                 21.26083                           28.65
#> 6: 91012 2017-04-05                 22.56437                           28.15
#>    temperatura_abrigo_150cm_minima temperatura_intemperie_5cm_minima
#> 1:                              NA                                NA
#> 2:                              NA                                NA
#> 3:                           17.21                                NA
#> 4:                           13.37                                NA
#> 5:                           16.02                                NA
#> 6:                           16.37                                NA
#>    temperatura_intemperie_50cm_minima temperatura_suelo_5cm_media
#> 1:                                 NA                          NA
#> 2:                                 NA                          NA
#> 3:                                 NA                          NA
#> 4:                                 NA                          NA
#> 5:                                 NA                          NA
#> 6:                                 NA                          NA
#>    temperatura_suelo_10cm_media temperatura_inte_5cm
#> 1:                           NA                   NA
#> 2:                           NA                   NA
#> 3:                           NA                   NA
#> 4:                           NA                   NA
#> 5:                           NA                   NA
#> 6:                           NA                   NA
#>    temperatura_intemperie_150cm_minima humedad_suelo
#> 1:                                  NA            NA
#> 2:                                  NA            NA
#> 3:                                  NA            NA
#> 4:                                  NA            NA
#> 5:                                  NA            NA
#> 6:                                  NA            NA
#>    precipitacion_pluviometrica precipitacion_cronologica
#> 1:                          NA                        NA
#> 2:                         0.4                       0.0
#> 3:                        57.8                      58.0
#> 4:                         0.2                       0.2
#> 5:                         0.0                       0.2
#> 6:                         0.2                       0.0
#>    precipitacion_maxima_30minutos heliofania_efectiva heliofania_relativa
#> 1:                             NA                  NA                  NA
#> 2:                             NA                  NA                  NA
#> 3:                             NA                  NA                  NA
#> 4:                             NA                  NA                  NA
#> 5:                             NA                  NA                  NA
#> 6:                             NA                  NA                  NA
#>    tesion_vapor_media humedad_media humedad_media_8_14_20 rocio_medio
#> 1:                 NA            NA                    NA          NA
#> 2:           18.41241            64                    60    16.18307
#> 3:           18.79310            90                    92    16.50643
#> 4:           18.86353            90                    90    16.48865
#> 5:           22.11961            84                    82    19.00320
#> 6:           18.39121            76                    72    15.92787
#>    duracion_follaje_mojado velocidad_viento_200cm_media direccion_viento_200cm
#> 1:                      NA                           NA                       
#> 2:                      NA                           NA                      C
#> 3:                      NA                           NA                      C
#> 4:                      NA                           NA                      C
#> 5:                      NA                           NA                      C
#> 6:                      NA                           NA                      C
#>    velocidad_viento_1000cm_media direccion_viento_1000cm
#> 1:                            NA                        
#> 2:                            NA                       C
#> 3:                            NA                       C
#> 4:                            NA                       C
#> 5:                            NA                       C
#> 6:                            NA                       C
#>    velocidad_viento_maxima presion_media radiacion_global horas_frio
#> 1:                      NA            NA               NA         NA
#> 2:                      NA            NA               NA          0
#> 3:                      NA            NA               NA          0
#> 4:                      NA            NA               NA          0
#> 5:                      NA            NA               NA          0
#> 6:                      NA            NA               NA          0
#>    unidades_frio
#> 1:            NA
#> 2:     -23.40603
#> 3:     -18.26002
#> 4:     -13.94401
#> 5:     -20.16902
#> 6:     -19.58802

Mirando los archivos de excel, nos dimos cuenta que tienen una segunda hoja con metadatos (datos de ubicación, nombre, etc…). Esos se pueden obetener con siga_metadatos()

siga_metadatos(ids)
#>       id     nombre descripcion   localidad  provincia      lon      lat
#> 1: 91012    Strobel          NA Sin asignar Entre Rios -32.0540 -60.6044
#> 2: 91023 El Redomon          NA Sin asignar Entre Rios -31.0765 -58.2838

La función siga_descargar() permite bajar los datos sin leerlos. Esto sirve por si querés tener un script que actualiza una versión local de la base de datos.

archivos <- siga_descargar(ids)
archivos
#>       id                     datos                           metadatos
#> 1: 91012 /tmp/Rtmp4gGgqt/91012.csv /tmp/Rtmp4gGgqt/91012_metadatos.csv
#> 2: 91023 /tmp/Rtmp4gGgqt/91023.csv /tmp/Rtmp4gGgqt/91023_metadatos.csv
#>    descargado
#> 1:       TRUE
#> 2:       TRUE

Lo que vimos es que hay estaciones disponibles en SIGA pero que no están en la lista de estaciones que provee el propio SIGA.

any(estaciones$id == "A872700")
#> [1] FALSE

head(siga_datos("A872700"))
#>         id      fecha temperatura_abrigo_150cm temperatura_abrigo_150cm_maxima
#> 1: A872700 2015-07-22                       NA                              NA
#> 2: A872700 2016-02-11                       NA                              NA
#> 3: A872700 2016-02-12                 28.53055                            40.3
#> 4: A872700 2016-02-13                 25.79237                            34.3
#> 5: A872700 2016-02-14                 23.47916                            38.6
#> 6: A872700 2016-02-15                 25.83333                            37.7
#>    temperatura_abrigo_150cm_minima temperatura_intemperie_5cm_minima
#> 1:                              NA                                NA
#> 2:                              NA                                NA
#> 3:                            20.6                                NA
#> 4:                            20.0                                NA
#> 5:                            11.2                                NA
#> 6:                            16.2                                NA
#>    temperatura_intemperie_50cm_minima temperatura_suelo_5cm_media
#> 1:                                 NA                          NA
#> 2:                                 NA                          NA
#> 3:                                 NA                          NA
#> 4:                                 NA                          NA
#> 5:                                 NA                          NA
#> 6:                                 NA                          NA
#>    temperatura_suelo_10cm_media temperatura_inte_5cm
#> 1:                           NA                   NA
#> 2:                           NA                   NA
#> 3:                     27.13403                   NA
#> 4:                     27.93750                   NA
#> 5:                     27.26597                   NA
#> 6:                     28.11806                   NA
#>    temperatura_intemperie_150cm_minima humedad_suelo
#> 1:                                  NA            NA
#> 2:                                  NA            NA
#> 3:                                  NA            NA
#> 4:                                  NA            NA
#> 5:                                  NA            NA
#> 6:                                  NA            NA
#>    precipitacion_pluviometrica precipitacion_cronologica
#> 1:                          NA                        NA
#> 2:                          NA                        NA
#> 3:                           0                         0
#> 4:                           0                         0
#> 5:                           0                         0
#> 6:                           0                         0
#>    precipitacion_maxima_30minutos heliofania_efectiva heliofania_relativa
#> 1:                             NA                  NA                  NA
#> 2:                             NA                  NA                  NA
#> 3:                              0                  NA                  NA
#> 4:                              0                  NA                  NA
#> 5:                              0                  NA                  NA
#> 6:                              0                  NA                  NA
#>    tesion_vapor_media humedad_media humedad_media_8_14_20 rocio_medio
#> 1:                 NA            NA                    NA          NA
#> 2:                 NA            NA                    NA          NA
#> 3:           22.68346            63                    56    19.50295
#> 4:           15.08237            52                    47    12.67884
#> 5:           13.62302            54                    48    11.50500
#> 6:           18.47927            59                    54    16.21515
#>    duracion_follaje_mojado velocidad_viento_200cm_media direccion_viento_200cm
#> 1:                      NA                           NA                       
#> 2:                      NA                           NA                       
#> 3:                      NA                           NA                      C
#> 4:                      NA                           NA                      C
#> 5:                      NA                           NA                      C
#> 6:                      NA                           NA                      C
#>    velocidad_viento_1000cm_media direccion_viento_1000cm
#> 1:                            NA                        
#> 2:                            NA                        
#> 3:                            NA                       C
#> 4:                            NA                       C
#> 5:                            NA                       C
#> 6:                            NA                       C
#>    velocidad_viento_maxima presion_media radiacion_global horas_frio
#> 1:                      NA            NA               NA         NA
#> 2:                      NA            NA               NA         NA
#> 3:                      NA            NA               NA          0
#> 4:                      NA            NA               NA          0
#> 5:                      NA            NA               NA          0
#> 6:                      NA            NA               NA          0
#>    unidades_frio
#> 1:            NA
#> 2:            NA
#> 3:     -23.90403
#> 4:     -22.65903
#> 5:     -14.11001
#> 6:     -22.24403
siga_metadatos("A872700")
#>         id                   nombre                  descripcion localidad
#> 1: A872700 Zampalito - EEA Consulta Finca Perdimar (Perdimar SA) Tupungato
#>    provincia       lon       lat
#> 1:   Mendoza -33.48483 -69.05206

Created on 2021-08-10 by the reprex package (v2.0.0)

paocorrales commented 5 months ago

Vuelo a esto un tiempito despues :)

Aprovechando que la web está otra vez activa, intenté usar el paquete y me encontré con el mismo error que inició este hilo. Estoy sufriendo una compu con Windows y creo que gracias a eso apareció.

La nueva versión del paquete debería resolver el problema. Cierro el issue pero si aparece algo nuevo, avisen!