Commit d4e59c10 authored by Dorchies David's avatar Dorchies David
Browse files

refactor: change merge_reaches to merge method for Reachtxt objects

1 merge request!10Resolve "Crash de Talweg sur les distances de lit majeur"
Pipeline #34179 passed with stage
in 2 minutes and 27 seconds
Showing with 23 additions and 17 deletions
+23 -17
...@@ -4,6 +4,7 @@ S3method(SicInput,POSIXt) ...@@ -4,6 +4,7 @@ S3method(SicInput,POSIXt)
S3method(SicInput,data.frame) S3method(SicInput,data.frame)
S3method(SicInput,matrix) S3method(SicInput,matrix)
S3method(SicInput,numeric) S3method(SicInput,numeric)
S3method(merge,ReachTxt)
S3method(merge,SicInput) S3method(merge,SicInput)
export(SicInput) export(SicInput)
export(SicLocation) export(SicLocation)
...@@ -19,7 +20,6 @@ export(get_result) ...@@ -19,7 +20,6 @@ export(get_result)
export(get_result_tree) export(get_result_tree)
export(get_section_centers) export(get_section_centers)
export(loadConfig) export(loadConfig)
export(merge_reaches)
export(read_bin_result_matrix) export(read_bin_result_matrix)
export(set_boundary_ZQ) export(set_boundary_ZQ)
export(set_initial_conditions) export(set_initial_conditions)
......
#' Merge several *ReachTxt* objects into one #' Merge several *ReachTxt* objects into one
#' #'
#' @param ... *ReachTxt* objects #' @param x First *ReachTxt* object to merge
#' @param y Second *ReachTxt* object to merge
#' @param ... Other *ReachTxt* objects to merge
#' #'
#' @return a *ReachTxt* object (See [create_uniform_reach_txt] and [dem_to_reach]) containing the merged reaches. #' @return a *ReachTxt* object (See [create_uniform_reach_txt] and [dem_to_reach]) containing the merged reaches.
#' @export #' @export
...@@ -28,9 +30,9 @@ ...@@ -28,9 +30,9 @@
#' maj_reach <- dem_to_reach_txt(dem, node_coords, space_step, section_width, major_bed = TRUE) #' maj_reach <- dem_to_reach_txt(dem, node_coords, space_step, section_width, major_bed = TRUE)
#' #'
#' # Merge reaches into one #' # Merge reaches into one
#' reach <- merge_reaches(min_reach, maj_reach) #' reach <- merge(min_reach, maj_reach)
merge_reaches <- function(...) { merge.ReachTxt <- function(x, y = NULL, ...) {
reaches <- list(...) reaches <- c(list(x, y), list(...))
lapply(reaches, function(reach) { lapply(reaches, function(reach) {
if (!inherits(reach, "ReachTxt")) stop("Parameters must be of class ReachTxt") if (!inherits(reach, "ReachTxt")) stop("Parameters must be of class ReachTxt")
}) })
......
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
#' maj_reach <- dem_to_reach_txt(dem, node_coords, space_step, section_width, major_bed = TRUE) #' maj_reach <- dem_to_reach_txt(dem, node_coords, space_step, section_width, major_bed = TRUE)
#' #'
#' # Merge minor and major beds and split into 2 reaches #' # Merge minor and major beds and split into 2 reaches
#' reach <- merge_reaches(min_reach, maj_reach) #' reach <- merge(min_reach, maj_reach)
#' reaches <- split_reach(reach, seq(0, 10000, 5000)) #' reaches <- split_reach(reach, seq(0, 10000, 5000))
#' #'
#' \dontrun{ #' \dontrun{
......
% Generated by roxygen2: do not edit by hand % Generated by roxygen2: do not edit by hand
% Please edit documentation in R/merge_reaches.R % Please edit documentation in R/merge_reaches.R
\name{merge_reaches} \name{merge.ReachTxt}
\alias{merge_reaches} \alias{merge.ReachTxt}
\title{Merge several \emph{ReachTxt} objects into one} \title{Merge several \emph{ReachTxt} objects into one}
\usage{ \usage{
merge_reaches(...) \method{merge}{ReachTxt}(x, y = NULL, ...)
} }
\arguments{ \arguments{
\item{...}{\emph{ReachTxt} objects} \item{x}{First \emph{ReachTxt} object to merge}
\item{y}{Second \emph{ReachTxt} object to merge}
\item{...}{Other \emph{ReachTxt} objects to merge}
} }
\value{ \value{
a \emph{ReachTxt} object (See \link{create_uniform_reach_txt} and \link{dem_to_reach}) containing the merged reaches. a \emph{ReachTxt} object (See \link{create_uniform_reach_txt} and \link{dem_to_reach}) containing the merged reaches.
...@@ -38,5 +42,5 @@ section_width = 5000 ...@@ -38,5 +42,5 @@ section_width = 5000
maj_reach <- dem_to_reach_txt(dem, node_coords, space_step, section_width, major_bed = TRUE) maj_reach <- dem_to_reach_txt(dem, node_coords, space_step, section_width, major_bed = TRUE)
# Merge reaches into one # Merge reaches into one
reach <- merge_reaches(min_reach, maj_reach) reach <- merge(min_reach, maj_reach)
} }
...@@ -41,7 +41,7 @@ section_width = 5000 ...@@ -41,7 +41,7 @@ section_width = 5000
maj_reach <- dem_to_reach_txt(dem, node_coords, space_step, section_width, major_bed = TRUE) maj_reach <- dem_to_reach_txt(dem, node_coords, space_step, section_width, major_bed = TRUE)
# Merge minor and major beds and split into 2 reaches # Merge minor and major beds and split into 2 reaches
reach <- merge_reaches(min_reach, maj_reach) reach <- merge(min_reach, maj_reach)
reaches <- split_reach(reach, seq(0, 10000, 5000)) reaches <- split_reach(reach, seq(0, 10000, 5000))
\dontrun{ \dontrun{
......
...@@ -5,7 +5,7 @@ profT <- list( ...@@ -5,7 +5,7 @@ profT <- list(
ZF = 100, ZF = 100,
ZB = 100 + 2 ZB = 100 + 2
) )
min_reach <- create_uniform_reach_txt(abscissas = seq(0, 10000, 100), min_reach <- create_uniform_reach_txt(abscissas = seq(0, 10000, 500),
upstream_bed_elevation = 10 + 2000 * 0.002, upstream_bed_elevation = 10 + 2000 * 0.002,
slope = 0.002, slope = 0.002,
section_type = "T", section_type = "T",
...@@ -15,12 +15,12 @@ min_reach <- create_uniform_reach_txt(abscissas = seq(0, 10000, 100), ...@@ -15,12 +15,12 @@ min_reach <- create_uniform_reach_txt(abscissas = seq(0, 10000, 100),
data("floodam_ead_dem") data("floodam_ead_dem")
dem <- terra::rast(floodam_ead_dem) dem <- terra::rast(floodam_ead_dem)
node_coords <- matrix(c(102550, 102550, 110000, 100000), ncol = 2) node_coords <- matrix(c(102550, 102550, 110000, 100000), ncol = 2)
space_step = 100 space_step = 500
section_width = 5000 section_width = 5000
maj_reach <- dem_to_reach_txt(dem, node_coords, space_step, section_width, major_bed = TRUE) maj_reach <- dem_to_reach_txt(dem, node_coords, space_step, section_width, major_bed = TRUE)
test_that("merge_reaches should work", { test_that("merge.ReachTxt should work", {
reach <- merge_reaches(min_reach, maj_reach) reach <- merge(min_reach, maj_reach)
expect_s3_class(reach, "ReachTxt") expect_s3_class(reach, "ReachTxt")
expect_length(reach, length(min_reach) + length(maj_reach)) expect_length(reach, length(min_reach) + length(maj_reach))
}) })
...@@ -19,7 +19,7 @@ section_width = 5000 ...@@ -19,7 +19,7 @@ section_width = 5000
maj_reach <- dem_to_reach_txt(dem, node_coords, space_step, section_width, major_bed = TRUE) maj_reach <- dem_to_reach_txt(dem, node_coords, space_step, section_width, major_bed = TRUE)
# Merge minor and major beds and split into 2 reaches # Merge minor and major beds and split into 2 reaches
reach <- merge_reaches(min_reach, maj_reach) reach <- merge(min_reach, maj_reach)
reaches <- split_reach(reach, seq(0, 10000, 5000)) reaches <- split_reach(reach, seq(0, 10000, 5000))
test_that("Geometry Import works", { test_that("Geometry Import works", {
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment