Title: | Lee y Manipula Datos de Suelo de SISINTA |
---|---|
Description: | Permite descargar y manipular datos de perfiles de suelo disponibles en la plataforma SISINTA. |
Authors: | Yanina Bellini Saibene [cre, ctb], Elio Campitelli [aut] , Paola Corrales [aut] |
Maintainer: | Yanina Bellini Saibene <[email protected]> |
License: | GPL (>= 3) |
Version: | 0.0.0.9000 |
Built: | 2024-11-15 05:22:45 UTC |
Source: | https://github.com/INTA-Suelos/SISINTAR |
La función anidar_horizontes
permite organizar la información de uno
o más perfiles y sus horizontes en un data.frame. Cada fila se corresponde con
un perfil y los datos de los horizontes se guardan en una columna de data.frames
llamada horizonte
.
desanidar_horizontes
realiza la operación contraria.
anidar_horizontes(perfiles) desanidar_horizontes(perfiles)
anidar_horizontes(perfiles) desanidar_horizontes(perfiles)
perfiles |
un data.frame con perfiles (salida de |
Un data.frame anidado. El resultado tiene una fila por cada perfil y una columna por cada dato del perfil más una columna llamada "horizontes" que contiene un data.frame con los horizontes de cada perfil.
anidados <- anidar_horizontes(perfiles) # igual a perfiles salvo posiblemente por el orden de las columnas desanidados <- desanidar_horizontes(anidados)
anidados <- anidar_horizontes(perfiles) # igual a perfiles salvo posiblemente por el orden de las columnas desanidados <- desanidar_horizontes(anidados)
Transforma uno másperfiles de SISINTA en formato data.frame en un objeto
SoilProfileCollection del paquete aqp
.
as_SoilProfileCollection(perfiles)
as_SoilProfileCollection(perfiles)
perfiles |
data.frame con perfiles descargados o leidos con
la función |
un objeto aqp::SoilProfileCollection
coleccion <- as_SoilProfileCollection(perfiles)
coleccion <- as_SoilProfileCollection(perfiles)
Buscar perfiles en base a ubicación y fechas
buscar_perfiles( rango_lon = NULL, rango_lat = NULL, rango_fecha = NULL, clase = NULL, serie = NULL, actualizar_cada = 30 )
buscar_perfiles( rango_lon = NULL, rango_lat = NULL, rango_fecha = NULL, clase = NULL, serie = NULL, actualizar_cada = 30 )
rango_lon , rango_lat
|
vectores numéricos con los límites de longitud y latitud. La longitud tiene que estar entre -180º y 180º. Los límites se definen como el mínimo y el máximo valor de cada vector. |
rango_fecha |
vector tipo Date o que se puede cohercer a fecha con
|
clase |
vector de caracteres para filtrar la clase del perfil. La función lo trata como una expresión regular que no distingue mayúsculas y minúsculas. Si es un vector de longitud mayor a 1, se filtran las clases que coincidan con al menos uno de los elementos (es decir, filtra con O). |
serie |
vector con nombres de series. El nombre debe ser el mismo que aparece en la serie. Si alguna serie no se encuentra, la función tira error. |
actualizar_cada |
valor numérico que define cada cuantos días se actualiza el archivo con la información de la base de datos (no usado) |
Un data.frame con los perfiles que cumplen las condiciones de búsqueda
## Not run: centro <- buscar_perfiles(rango_lat = c(-45, -30)) with(centro, plot(lon, lat)) recientes <- buscar_perfiles(rango_fecha = c("2010-01-01", "2025-01-01")) with(recientes, plot(lon, lat)) # Perfiles donde la clase contiene "hapludol" o "natralbol" buscar_perfiles(clase = c("hapludol", "natralbol")) # Perfiles de la serie Ramallo buscar_perfiles(serie = "Ramallo") ## End(Not run)
## Not run: centro <- buscar_perfiles(rango_lat = c(-45, -30)) with(centro, plot(lon, lat)) recientes <- buscar_perfiles(rango_fecha = c("2010-01-01", "2025-01-01")) with(recientes, plot(lon, lat)) # Perfiles donde la clase contiene "hapludol" o "natralbol" buscar_perfiles(clase = c("hapludol", "natralbol")) # Perfiles de la serie Ramallo buscar_perfiles(serie = "Ramallo") ## End(Not run)
Evalúa conexión con el servidor de SISINTA
check_sisinta()
check_sisinta()
Un valor lógico indicando si se puede establecer conexión con el servidor
La función exporta uno o más perfiles de SISINTA descargados o leidos
con get_perfiles()
a un archivo excel donde los datos
de sitio están en una hoja llamada "sitios" y los horizontes, en una hoja
llamada "horizontes".
exportar_excel(perfiles, archivo)
exportar_excel(perfiles, archivo)
perfiles |
un data.frame con perfiles (salida de |
archivo |
la ruta al archivo de salida. |
Devuelve la ruta al archivo de forma invisible.
archivo <- tempfile(fileext = ".xlsx") exportar_excel(perfiles, archivo)
archivo <- tempfile(fileext = ".xlsx") exportar_excel(perfiles, archivo)
La función exporta uno o más perfiles de SISINTA descargados o leidos
con get_perfiles()
en formato shapefile. !!! REQUIERE NOMBRES DE
COLUMNAS MÁS CORTOS
exportar_shapefile(perfiles, archivo)
exportar_shapefile(perfiles, archivo)
perfiles |
un data.frame con perfiles (salida de |
archivo |
la ruta al archivo de salida. |
archivo <- tempfile(fileext = ".shp") # exportar_shapefile(perfiles, archivo)
archivo <- tempfile(fileext = ".shp") # exportar_shapefile(perfiles, archivo)
Obtiene datos de perfiles.
Por defecto, primero intenta leer datos existentes en dir
, si no existen,
usa los datos incluidos en el paquete, y si no existen, trata de descargarlos
desde SISINTA. Esto garantiza reproducibilidad del proyecto o bajo mismas
versiones del paquete y minimiza la dependencia de una conexión a internet.
get_perfiles( perfil_ids, dir = tempdir(), refresh = FALSE, parar_en_error = FALSE, credenciales = NULL )
get_perfiles( perfil_ids, dir = tempdir(), refresh = FALSE, parar_en_error = FALSE, credenciales = NULL )
perfil_ids |
vector numérico de ids de perfiles de suelo.
Alternativamente puede ser un data.frame con una columna llamada
|
dir |
directorio donde se guardan los datos de perfiles o donde se leen perfiles ya descargados. Por defecto, los perfiles descargados se guardan en una carpeta temporal. |
refresh |
boleano, fuerza descargar datos de SISINTA. |
parar_en_error |
tirar un error si algún perfil no está disponible en vez de seguir intentando con los siguientes. |
credenciales |
una lista con elementos "usuario" y "pass". |
Un data.frame.
## Not run: get_perfiles(c(3238, 4634, 4609)) get_perfiles(4609, credenciales = list(usuario = "usuario", pass = "pass")) ## End(Not run)
## Not run: get_perfiles(c(3238, 4634, 4609)) get_perfiles(4609, credenciales = list(usuario = "usuario", pass = "pass")) ## End(Not run)
La función revisa si el perfil tiene valor faltante en la variable
profundidad_inferior
e imputa un valor dado por profundidad_superior
más una constante definida por el argumento profundidad
.
imputar_profundidad_inferior(perfiles, profundidad = 5)
imputar_profundidad_inferior(perfiles, profundidad = 5)
perfiles |
un data.frame con perfiles (salida de |
profundidad |
la profundidad asumida de la ultima capa |
Un data.frame con las mismas filas y columnas que el objeto de entrada.
perfil <- subset(perfiles, perfil_id == 3238) imputar_profundidad_inferior(perfil) imputar_profundidad_inferior(perfil, profundidad = 10)
perfil <- subset(perfiles, perfil_id == 3238) imputar_profundidad_inferior(perfil) imputar_profundidad_inferior(perfil, profundidad = 10)
SISINTAR implementa dos métodos de interpolación para obtener horizontes estandarizados de las distintas variables disponibles. Estos métodos devuelven una función que recibe los límites superior e inferior de cada capa, las observaciones a interpolar y los horizontes o profundidades a los que se quiere interpolar cada variable.
interpolar_concatenar(sep = "|") interpolar_spline(lambda = 0.1) interpolar_promedio_ponderado()
interpolar_concatenar(sep = "|") interpolar_spline(lambda = 0.1) interpolar_promedio_ponderado()
sep |
separador utilizado para concatenar los valores únicos de cada capa. |
lambda |
parámetro lambda de suavizado. |
interpolar_promedio_ponderado
utiliza un promedio ponderado para calcular los valores
interpolados en las capas definidas.
interpolar_spline
utiliza la funcione spline que preserva la masa de acuerdo a
Bishop T.F.A. el. al. (1999).
Bishop T.F.A. el. al. (1999) Modelling soil attribute depth functions with equal-area quadratic smoothing splines. https://doi.org/10.1016/S0016-7061(99)00003-8
La función genera perfiles normalizados a partir de horizontes estandarizados utilizando alguno de los métodos disponibles.
interpolar_perfiles( perfiles, variables, horizontes = 30, metodo = interpolar_promedio_ponderado(), metodo_categorico = interpolar_concatenar(), parar_en_error = FALSE )
interpolar_perfiles( perfiles, variables, horizontes = 30, metodo = interpolar_promedio_ponderado(), metodo_categorico = interpolar_concatenar(), parar_en_error = FALSE )
perfiles |
un data.frame con datos de perfiles |
variables |
un vector de texto con los nombres de las variables a interpolar |
horizontes |
un vector numérico que determina los horizontes a usar para la interpolación o un numérico único que determina la resolución en centímetros. |
metodo , metodo_categorico
|
el método de interpolación utilizado para
variables continuas y categóricas, respectivamente. Ver |
parar_en_error |
tirar un error si algún perfil tiene una profundidad máxima que es menor a la indicada. Si es FALSE, interpola hasta la máxima profundidad disponible y tira un warning. |
Un data.frame con los datos interpolados.
interpolar_perfiles(perfiles, c("sum_bases", "cic")) ## Not run: # interpolar_spline() no acepta valores faltantes en las profundidades. # Para imputar, ver imputar_profundidad_inferior(). interpolar_perfiles(perfiles, c("sum_bases", "cic"), metodo = interpolar_spline()) ## End(Not run) # Horizontes cada 10 centímetros entre 0 y 100. interpolar_perfiles(perfiles, c("sum_bases", "cic"), seq(0, 100, 10))
interpolar_perfiles(perfiles, c("sum_bases", "cic")) ## Not run: # interpolar_spline() no acepta valores faltantes en las profundidades. # Para imputar, ver imputar_profundidad_inferior(). interpolar_perfiles(perfiles, c("sum_bases", "cic"), metodo = interpolar_spline()) ## End(Not run) # Horizontes cada 10 centímetros entre 0 y 100. interpolar_perfiles(perfiles, c("sum_bases", "cic"), seq(0, 100, 10))
Esta función interna es utilizada por get_perfiles()
para acceder a la web de
SISINTA con usuario y contraseña y poder descargar los perfiles no púplicos.
log_in(usuario, pass)
log_in(usuario, pass)
usuario |
string, usualmente el mail. |
pass |
string, contraseña asociada. |
Perfiles de ejemplo
perfiles
perfiles
An object of class data.frame
with 18 rows and 105 columns.
Esta función permite separar el data.frame que genera get_perfiles()
que contiene
la información del sitio y sus horizontes en dos data.frames organizados en una lista.
separar_perfiles(perfiles)
separar_perfiles(perfiles)
perfiles |
un data.frame con perfiles (salida de |
Una lista con dos elementos. El elemento sitios
, es un data.frame con
la información de los sitios y el elemneto horizontes
es un data.frame
con la información de horizontes.
separar_perfiles(perfiles)
separar_perfiles(perfiles)