Ejemplos de uso

knitr::opts_chunk$set(warning = FALSE, message = FALSE)
library(SISINTAR)
library(dplyr)
#> 
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#> 
#>     filter, lag
#> The following objects are masked from 'package:base':
#> 
#>     intersect, setdiff, setequal, union
#> [1] "No se pudo conectar con SISINTA. El código siguiente no se va a evaluar."

En esta viñeta se presentan distintos ejemplos de uso de las funciones principales del paquete {SISINTA} para trabajar con perfiles de suelo.

Buscar datos disponibles

La función buscar_perfiles() permite buscar perfiles en función de la localización, la fecha y la clase. La primera vez que se corre, descarga el archivo http://sisinta.inta.gob.ar/es/perfiles.geojson.

Si se corre sin argumentos, devuelve todos los perfiles disponibles.

buscar_perfiles() %>% 
  head(10)

Técnicamente, también lista algunos perfiles que no están disponibles públicamente:

buscar_perfiles() %>%
  filter(clase == "No disponible") %>% 
  head(10)

La búsqueda por clase devuelve todos los perfiles que contienen alguno de los términos a buscar. Por ejemplo, la siguiente búsqueda devuelve los perfiles que contengan “hapludol” o “natralbol”.

buscar_perfiles(clase = c("hapludol", "natralbol")) %>% 
  head(10)

También se puede buscar for fechas. La siguiente búsqueda devuelve los perfiles realizados durante 2019.

buscar_perfiles(rango_fecha = c("2019-01-01", "2019-12-31")) %>% 
  head(10)

Y si se busca los perfiles de una o más series en particular. Este campo es un filtro exacto. La serie tiene que existir así como está escrita, en caso contrario la función tira error.

buscar_perfiles(serie = c("Ramallo", "Calabresse")) %>% 
  dplyr::group_by(serie) %>% 
  slice_head(n = 2)

La combinación de criterios de búsqueda devuelve los perfiles que cumplen con ambos criterios. La siguiente búsqueda devuelve perfiles obtenidos en 2019 y que tienen “hapludol” o “natralbol”.

buscar_perfiles(rango_fecha = c("2019-01-01", "2019-12-31"),
                clase = c("hapludol", "natralbol"))

Descarga de datos

Para descargar lo datos de los perfiles se usa la función get_perfiles(). Ésta toma un vector con los ids de los perfiles a descargar.

get_perfiles(c(6653, 6347, 6580)) %>% 
  .[, 1:5] %>% 
  head(10)

Alternativamente, puede tomar un data.frame que tenga una columna llamada “perfil_id”. Esto es así para que se pueda usar directamente la salida de buscar_perfiles() para descargar los perfiles buscados.

buscar_perfiles(rango_fecha = c("2019-01-01", "2019-12-31"),
                clase = c("hapludol", "natralbol")) %>%
  get_perfiles() %>% 
  .[, 1:5] 

get_perfiles() por defecto descarga los datos en una carpeta temporal de modo que si se vuelve a correr la misma línea de código no descarga el o los perfil nuevamente.

# Primera llamada, tarda porque descarga los datos
system.time(get_perfiles(c(3238, 3182)))

# Segunda llamada, levanta los datos de la carpeta temporal
system.time(get_perfiles(c(3238, 3182)))

La carpeta de descarga se puede cambiar con el argumento dir de modo que se puede cambiar a una carpeta permanente de datos dentro de un proyecto. Para forzar la re-descarga de los datos, hay que setear el argumento refresh = TRUE.

Algunos perfiles no se pueden descargar públicamente. Cuando pasa esto, get_perfiles() devuelve un data.frame con los perfiles que sí se pudieron descargar y un warning describiendo qué problemas hubo.

perfiles <- get_perfiles(c(3182, 4609))

Para elevar este warning a un error, hay que setear el argumento parar_en_error a TRUE. En este caso, la función va a tirar error al primer perfil que no pueda descargar.

get_perfiles(c(3182, 4609), parar_en_error = TRUE)

Para convertir los perfiles a un SoilProfileCollection se usa as_SoilProfileCollection(). En este caso convertimos dos perfiles al mismo tiempo.

get_perfiles(c(3355, 3205)) %>%
  as_SoilProfileCollection()

Utilizando la librería {aqp}, se pueden plotear los perfiles.

library(aqp)
get_perfiles(c(3355, 3205)) %>%
  as_SoilProfileCollection() %>%
  plot()

Horizontes estandarizados

La función interpolar_perfiles() permite transformar el perfil en horizontes estandarizados utilizando alguno de los métodos implementados, promedios ponderados o función spline. El argumento variables recibe un vector con las variables a estandarizar y por defecto genera horizontes cada 30 centrímetros.

Por defecto utiliza el método de promedios ponderados interpolar_promedio_ponderado():

get_perfiles(c(3238, 4634)) %>% 
  interpolar_perfiles(variables =  c("sum_bases", "cic"))

También es posible definir los horizontes estandarizados utilizando el argumento horizontes, por ejemplo de 0 a 100, cada 10 centímetros.

get_perfiles(c(3238, 4634)) %>% 
  interpolar_perfiles(variables =  c("sum_bases", "cic"),
                      horizontes = seq(0, 100, 10))

Para utilizar el método de splines, se utiliza la opción metodo = interpolar_spline(). Este método no acepta datos faltantes en las profundidades, así que primero hay que imputar la profundidad inferior.

get_perfiles(c(3238, 4634)) %>% 
  imputar_profundidad_inferior(10) %>%
  interpolar_perfiles(variables = c("sum_bases", "cic"),
                      horizontes = seq(0, 100, 10),
                      metodo = interpolar_spline()) 

Exportar perfiles

La función exportar_excel() permite exportar perfiles de SISINTA en formato MS Excel. Esta función recibe un data.frame con perfiles leidos o el resultado de get_perfiles(). El archivo de excel tendrá dos hojas, la primera con los datos del sitio llamada “sitios” y la segunda con los datos de los horizontes, llamada “horizontes”.

archivo <- tempfile(fileext = ".xlsx") # Temporal para el ejemplo
exportar_excel(get_perfiles(c(3238, 4634)), archivo)