This package aims to estimate discharge time series of ungauged catchments (non-instrumented catchment where discharge is therefore not available) using hydrological observation of neighbouring gauged catchments (instrumented catchment where discharge is available). The hydrological modelling is based on a description of catchment geomorphology that can be assessed at any location. An inversion of this model at gauged locations allows estimating the net rainfall that makes the transfer of observed discharge easier to ungauged locations.

An object of class transfR needs to be created first with the
function `as_transfr()`

. It will also be used to gather all
the catchment attributes and intermediary results from the different
steps. This object needs to be created from two users inputs:

- a spatio-temporal object (stars object) that is describing both
discharge and the corresponding spatial support (outlet, centroid or
catchment boundary); see vignette
*Preparation of input data: creation of a stars object*. - raster maps of hydraulic length (stars or matrix object) for each
catchment describing the flow path length from each pixel to the outlet
within the river network (Cudennec et al. 2004;
Aouissi et al. 2013); see vignette
*Preparation of input data: geomorphological analysis with whitebox*.

This package does not provide functions to create these two inputs. It needs to be prepared beforehand by the user. Several GIS softwares offer possibilities to extract them from a digital elevation model such as GRASS toolkits (Jasiewicz and Metz 2011), Whitebox GAT (see Lindsay (2016) or WhiteboxTools), TauDEM (D. Tarboton, Utah State University) or online services (Squividant et al. (2015) for catchment delineation only). The vignettes mentioned above give some guidance on the preparation of input data.

The ‘Oudon’ example dataset contains these two inputs with hourly
discharge observation of 6 sub-catchments (Oudon French river) with
their respective catchment boundary and maps of their hydraulic length.
All catchments are gauged, however, in this example, we will use the
first 3 as gauged catchments and the last 3 as ungauged catchments. Note
that, in order to evaluate the methodology, the package can also perform
a leave-one-out analysis by considering each gauged catchment as
ungauged one after another and without the need of creating the
following `sim`

object (set `cv=TRUE`

when using
`mixr()`

function, step 6).

```
library(transfR)
data(Oudon)
<- as_transfr(st = Oudon$obs[,,1:3], hl = Oudon$hl[1:3]) #gauged catchments
obs <- as_transfr(st = Oudon$obs[,,4:6], hl = Oudon$hl[4:6]) #catchments considered as ungauged sim
```

The package also offers simple plots for transfR objects.

`plot(x = obs, i = 1, attribute = "Qobs", format = "%b %d")`

```
plot(obs$hl[[1]], axes = T, main = "Hydraulic length of gauged catchment 1 [m]",
downsample=1,col=hcl.colors(n=20,palette="Blues"))
```

The streamflow velocity (`uc`

) is the unique parameter of
the transfer function that needs to be estimated. It allows assessing
the travel time from each pixel of the map of hydraulic length
(`hl`

) to the outlet, and then to create the unit hydrograph
(`uh`

). Here we will use the function `velocity()`

to estimate an average streamflow velocity from a regionalisation
established over the Loire River [de Lavenne et
al. (2016); see help of the function for details]. If the input
of `velocity()`

is a transfR object, the velocity will be
computed for each catchment.

```
<- velocity(obs, method = "loire2016")
obs $uc
obs#> Units: [m/s]
#> M3771810 M3774010 M3823010
#> 0.544 0.329 0.424
<- velocity(sim, method = "loire2016")
sim $uc
sim#> Units: [m/s]
#> M3834030 M3851810 M3711810
#> 0.277 0.660 0.349
```

Assuming a description of the flow path length (`hl`

) and
a streamflow velocity (`uc`

), the transfer function of the
river network can be built based on the unit hydrograph theory. This is
done using the function `uh()`

that requires these two
inputs. If the input of `uh()`

is a transfR object the unit
hydrograph will be computed for each catchments.

```
<- uh(obs)
obs <- uh(sim)
sim plot(obs, i = 1, attribute = "uh")
```

To solve the inversion, an *a priori* on the net rainfall
needs to be provided. We will estimate this *a priori* through
the specific discharge simply delayed by a lagtime using functions
`lagtime()`

and `rapriori()`

.

```
<- lagtime(obs)
obs <- rapriori(obs) obs
```

Using the results of previous steps, the inversion can finally be
computed in order to estimate net rainfall time series of each gauged
catchment that best reconstitute the observed discharge according to the
transfer function. This is done following the inversion theory [Tarantola and Valette (1982); Menke (1989); Boudhraâ et
al. (2018); see help of `inversion()`

for more
details] (see help of `inversion()`

for more details). If the
inputs of `inversion()`

is a transfR object, the net rainfall
will be estimated for each gauged catchment sequentially.

`<- inversion(obs, parallel = TRUE, cores=2) obs `

The net rainfall of an ungauged catchment is an average value of
neighbouring gauged catchments. This average can be weighted by the
inverse of the distance between the gauged catchment and the ungauged
catchment. The distance between two catchments is the rescaled Ghosh
distance (using the function `hdist()`

) as defined by de Lavenne et al. (2016). The function
`transfr()`

is then using this distance matrix to estimate
the net rainfall time series at every ungauged location.

```
<- hdist(x = obs, y = sim, method = "rghosh", parallel = TRUE, cores=2)
mdist <- mixr(obs = obs, sim = sim, mdist = mdist) sim
```

A discharge time series at ungauged locations can finally be
simulated through a convolution between the unit hydrograph and the net
rainfall time series of each catchment. This is done with the function
`convolution()`

. In this example, it is possible to compare
discharge simulation and discharge observation because ungauged
locations were deliberately defined from gauged locations (as defined in
step 1.). Note that the beginning and the end of the simulation are cut
because of the warmup and cooldown periods needed for the inversion.

```
<- convolution(sim)
sim plot(x = sim, i = 1, attribute = c("Qobs","Qsim"),
ylab = expression(paste("Discharge [",m^3/s,"]")),
col = c("#a6bddb","#045a8d"), format = "%b %d")
```

Aouissi, Jallel, Jean-Christophe Pouget, Houda Boudhraâ, Guillaume
Storer, and Christophe Cudennec. 2013. “Joint Spatial, Topological
and Scaling Analysis Framework of River-Network Geomorphometry.”
*Géomorphologie : Relief, Processus, Environnement*
19 (1): 7–16. https://doi.org/10.4000/geomorphologie.10082.

Boudhraâ, Houda, Christophe Cudennec, Hervé Andrieu, and Mohamed
Slimani. 2018. “Net Rainfall Estimation by the Inversion of a
Geomorphology-Based Transfer Function and Discharge
Deconvolution.” *Hydrological Sciences Journal* 63 (2):
285–301. https://doi.org/10.1080/02626667.2018.1425801.

Cudennec, C., Y. Fouad, I. Sumarjo Gatot, and J. Duchesne. 2004.
“A Geomorphological Explanation of the Unit Hydrograph
Concept.” *Hydrological Processes* 18 (4): 603–21. https://doi.org/10.1002/hyp.1368.

de Lavenne, A., J. O. Skøien, C. Cudennec, F. Curie, and F. Moatar.
2016. “Transferring Measured Discharge Time Series: Large-Scale
Comparison of Top-Kriging to Geomorphology-Based Inverse
Modeling.” *Water Resources Research* 52 (7): 5555–76. https://doi.org/10.1002/2016WR018716.

Jasiewicz, JarosŁaw, and Markus Metz. 2011. “A New
GRASS GIS Toolkit for Hortonian Analysis of
Drainage Networks.” *Computers &
Geosciences* 37 (8): 1162–73. https://doi.org/10.1016/j.cageo.2011.03.003.

Lindsay, J. B. 2016. “Whitebox GAT: A Case Study in
Geomorphometric Analysis.” *Computers &
Geosciences* 95 (October): 75–84. https://doi.org/10.1016/j.cageo.2016.07.003.

Menke, W. 1989. *Geophysical Data Analysis: Discrete Inverse
Theory*. Vol. 45. Academic Press.

Squividant, H., R. Bera, P. Aurousseau, and C. Cudennec. 2015.
“Online Watershed Boundary Delineation: Sharing Models Through
Spatial Data Infrastructures.” *Proceedings of the
International Association of Hydrological Sciences* 368: 144–49. https://doi.org/10.5194/piahs-368-144-2015.

Tarantola, A., and B. Valette. 1982. “Inverse Problems= Quest for
Information.” *Journal of Geophysics* 50 (3): 150–70.