# MAKAHO : Analyse de tendances hydrologiques
## Ou comment faire le pont

Louis Héraut ¹, Michel Lang¹, Ignazio Giuntoli²,
Benjamin Renard³, Éric Sauquet¹,
Jean-Philippe Vidal¹, Antoine Bard⁴

1. INRAE, UR RiverLy, Villeurbanne, France

2. CNR-ISAC, Bologne, Italie

3. INRAE, UMR RECOVER, Aix-en-Provence, France

4. EDSB, Briançon, France

<figure><img src="image_1.png" /></figure>

louis.heraut@inrae.fr

<figure><img src="image_2.png" /></figure>

github.com/super-lou
# 1 DES TRAVAUX SCIENTIFIQUES À L'APPLICATION WEB
# 1 DES TRAVAUX SCIENTIFIQUES À L'APPLICATION WEB

## 1.1 L'hydrométrie en France

L'HydroPortail (anciennement Banque Hydro)

\# Site de référence d'accès aux données hydrométriques et hydrologiques [1]

<figure><img src="image_3.png" /></figure>

<figure><img src="image_4.png" /></figure>

~ 6000 stations hydrométriques
Des données sélectionnées avec "soin"

# Réseau de Référence pour la Surveillance des Étiages (RRSE) [2]

→ 230 stations hydrométriques :

- peu influencées par les activités humaines

- de bonne qualité de mesure

- avec une profondeur historique de plus de 40 ans

# Couverture temporelle maximale des débits à partir de 1968 [3]

<figure><img src="image_5.png" /></figure>

<footnote>[2] I. Giuntoli, Benjamin Renard, Jean-Philippe Vidal, A. Bard. Low Flows in France and their relationship to large scale climate indices. *Journal of Hydrology*, 2013, 482, p. 105 - p. 118. (10.1016/j.jhydrol.2012.12.038). (hal-00833431)</footnote>

<footnote>[3] I. Giuntoli, Benjamin Renard. Identification des impacts hydrologiques du changement climatique : constitution d'un réseau de référence pour la surveillance des étiages. [Rapport de recherche] irstea. 2010, pp.106. (hal-02595597)</footnote>
## 1.2 Petit résumé de l'analyse de tendance

### Le régime hydrologique

* Saisonnalité annuelle des phénomènes de hautes eaux, moyennes eaux et basses eaux

→ L'objectif est d'isoler une composante de l'hydrologie pour pouvoir étudier son évolution temporelle

<figure><img src="image_6.png" /></figure>
## Agrégation temporelle

* Sélection d'un phénomène hydrologique spécifique dans l'année (ex : crue, étiage d'hiver ou d'été)

* Appliquer une fonction sur les données échantillonnées par pas de temps régulier

<figure><img src="image_7.png" /></figure>
L'estimation d'une tendance

# Application du test de Mann-Kendall modifié pour mettre en évidence l'existence ou non d'une tendance [4]

# Estimation de l'intensité de l'évolution linéaire avec l'estimateur de Sen [5]

<figure><img src="image_8.png" /></figure>

→ Évolution linéaire + info. sur la significativité de la tendance à un risque donné (ex : 1%, 5% ou 10%)

<footnote>[4] Hamed, K. H. & Rao, A. R. (1998) A modified Mann-Kendall trend test for autocorrelated data. Journal of Hydrology, 204, 182-196.</footnote>

<footnote>https://doi.org/10.1016/S0022-1694(97)00125-X</footnote>

<footnote>[5] Sen, Pranab Kumar (1968), "Estimates of the regression coefficient based on Kendall's tau", *Journal of the American Statistical Association*, **63** (324): 1379–1389, doi:10.2307/2285891, JSTOR 2285891, MR 0258201.</footnote>
## 1.3 L'analyse de tendance au cours du temps

<figure><img src="image_9.png" /><figcaption>fig. 1 Significativité du débit moyen annuel (QA) en 2006 dans la thèse de B.Renard [6]</figcaption></figure>

<figure><img src="image_10.png" /><figcaption>fig. 2 Analyse de tendance du QA en 2012 dans un rapport pour l'ONEMA [7]</figcaption></figure>

<figure><img src="image_11.png" /><figcaption>fig. 3 Analyse de tendance du QA en 2020 sur MAKAHO [8]</figcaption></figure>

→ Nécessité d'actualiser les analyses de tendance

<footnote>[6] Benjamin Renard. Détection et prise en compte d'éventuels impacts du changement climatique sur les extrêmes hydrologiques en France. Sciences de l'environnement. Thèse de doctorat, INP Grenoble, 2006. Français. (NNT : ). (tel-02588353)</footnote>

<footnote>[7] Ignazio Giuntoli, Pascal Maugis, Benjamin Renard. Évolutions observées dans les débits des rivières en France. 2012. (hal-02936887)</footnote>

<footnote>[8] Louis Heraut, Michel Lang, Benjamin Renard, Jean-Philippe Vidal, Eric Sauquet, et al. MAKAHO. 2022. (hal-04837537)</footnote>
# 1.4 MAKAHO : l'interface d'un package R

<figure><img src="image_12.png" /></figure>

Package R
Offre une solution simple et efficace pour agréger et analyser la stationnarité de séries temporelles

github.com/super-lou/EXstat

<figure><img src="image_13.png" /></figure>

Shiny app
Analyse de tendances hydrologiques sur le réseau hydrométrique de référence

makaho.sk8.inrae.fr

<figure><img src="image_14.png" /></figure>
<figure><img src="image_15.png" /></figure>

<figure><img src="image_16.png" /></figure>

makaho.sk8.inrae.fr

<figure><img src="image_17.png" /></figure>
2 DE LA STATION À L'ANALYSE GRANDE ÉCHELLE
# 2 DE LA STATION À L'ANALYSE GRANDE ÉCHELLE

## 2.1 Les représentations graphiques multi-échelles

### Le fond de carte

* Les plus

* Implémentation directe

* De nombreuses fonctionnalités interactives disponibles

<figure><img src="image_18.png" /></figure>

> library(shiny)

> library(leaflet)

# Define the UI

> ui <- fluidPage(
  leafletOutput("map", width="100%", height="600px")
)

# Define the server logic

> server <- function(input, output, session) {
  output$map <- renderLeaflet({
    leaflet() %>%
    addTiles() %>%
    setView(lng=2.213749, lat=46.727638, zoom=6)
  })
}

# Run the app

> shinyAppui=ui, server=server)
# 2 DE LA STATION À L'ANALYSE GRANDE ÉCHELLE

## 2.1 Les représentations graphiques multi-échelles

### Le fond de carte

#### Les plus

* # Implémentation directe

* # De nombreuses fonctionnalités interactives disponibles

#### Les moins

* # Pas si esthétique par défaut

* # Difficile de choisir ses markers

* # Impossible d'exporter une carte

<figure><img src="image_19.png" /></figure>

<figure><img src="image_20.png" /></figure>

marker
895 éléments

<figure><img src="image_21.png" /></figure>

big_21_# fddc5c_# BF812D.svg 929 o

big_21_# fddc5c_# e08765.svg 929 o

big_24_# 171717_# 2e2e2e.svg 943 o

big_24_# 808080_# 2166AC.svg 943 o

big_24_# 808080_# BC66A5.svg 943 o

big_21_# fddc5c_# c05fbe.svg 929 o

big_21_# fddc5c_# EAC5DD.svg 929 o

big_24_# 808080_# 2A6863.svg 943 o

big_24_# 808080_# 4393C3.svg 943 o

big_24_# 808080_# BCE6DB.svg 943 o

big_21_# fddc5c_# C7EAES5.svg 929 o

big_21_# fddc5c_# edbaa7.svg 929 o

big_24_# 808080_# 003C30.svg 943 o

big_24_# 808080_# 35978F.svg 943 o

big_24_# 808080_# BF812D.svg 943 o

big_21_# fddc5c_# CD5629.svg 929 o

big_21_# fddc5c_# edd1ec.svg 929 o

big_24_# 808080_# 7ACEB9.svg 943 o

big_24_# 808080_# 053061.svg 943 o

big_24_# 808080_# c05fbe.svg 943 o

big_21_# fddc5c_# D1E5F0.svg 929 o

big_21_# fddc5c_# EFE0B0.svg 929 o

big_24_# 808080_# 7F4A23.svg 943 o

big_24_# 808080_# 60265e.svg 943 o

big_24_# 808080_# C7EAES5.svg 943 o

big_21_# fddc5c_# D4B86A0.svg 929 o

big_21_# fddc5c_# EFE2E9.svg 929 o

big_24_# 808080_# 8C510A.svg 943 o

big_24_# 808080_# 67001F.svg 943 o

big_24_# 808080_# CD5629.svg 943 o

big_21_# fddc5c_# D6604D0.svg 929 o

big_21_# fddc5c_# F2D7B5.svg 929 o

big_24_# 808080_# 8f3c1d0.svg 943 o

big_24_# 808080_# 193830.svg 943 o

big_24_# 808080_# D1E5F0.svg 943 o
# 2 DE LA STATION À L'ANALYSE GRANDE ÉCHELLE

## 2.1 Les représentations graphiques multi-échelles

### Le fond de carte

**Les plus**

* # Implémentation directe

* # De nombreuses fonctionnalités interactives disponibles

**Les moins**

* # Pas si esthétique par défaut

* # Difficile de choisir ses markers

* # Impossible d'exporter une carte

<figure><img src="image_22.png" /></figure>

```r
# Draw.svg icon with ggplot2
```

```r
> ggplot2(...)
```

```r
# Create Leaflet icon
```

```r
> markerList <- icons(madeIcon("path/to/icon.svg"),
> iconAnchorX=16, iconAnchorY=16)
```

```r
# Add and remove marker base on your need
```

```r
> map <- removeMarker(map, layerId=Code)
```

```r
> map <- addMarkers(map,
```

```r
group="NS",
lng=Lon[okN21],
lat=Lat[okN21],
icon=markerListN21,
layerId=Code[okN21],
options=
  markerOptions(zIndexOffset=2000))
```
# Les graphiques

* Librairie graphique esthétique

* Permissif tout en restant simple

* Permet des animations et de l'interactivité

<figure><img src="image_23.png" /></figure>

```r
# Add marker with hover to trend graph
> add_trace(fig2, type="scatter",
  mode="markers", x=x, y=y,
  marker=list(color="grey50"),
  xhoverformat="%Y",
  yhoverformat=".3r",
  hovertemplate=paste0(
    "année %{x}<br>",
    "<b>", varLabel, "</b> %{y}",
    unitLabel, "<extra></extra>")
  hoverlabel=list(bgcolor=color,
    font=list(size=12,
      family="Helvetica",
      bordercolor="white")
```

<figure><img src="image_24.png" /></figure>

<figure><img src="image_25.png" /></figure>

<figure><img src="image_26.png" /></figure>
## 2.2 La réutilisation : communications et analyses

### Appui à la communication

* # Utile pour se retrouver autour d'un support

* # Permet de partager les données aisément

* # Outil de fact checking efficace

<figure><img src="image_27.png" /><figcaption>fig. 4 Appui pour la communication avec des médias (Éric Sauquet)</figcaption></figure>

<figure><img src="image_28.png" /><figcaption>fig. 5 Utilisation lors d'école d'été
(Jean-Philippe Vidal)</figcaption></figure>
# Analyses et rapports

## # Fournir des données pour leur réutilisation

## # Permet d'illustrer simplement des rapports

<figure><img src="image_29.png" /></figure>

OEB
OBSERVatoire
DE L'ENVIRONNEMENT
EN BRETAGNE

Accueil / Nos thématiques
/ Sécheresses en Bretagne : vulnérabilités et changement climatique

### SÉCHERESSES EN BRETAGNE :
VULNÉRABILITÉS ET CHANGEMENT
CLIMATIQUE

Par Adeline Louvigny (réactrice scientifique OEB), Elisabeth Colnard (chargée data Climat OEB), Pierre d'Armentières (chargé de mission Adaptation climat OEB) en collaboration avec Ronan Abhervé (Université Rennes 1), Luc Aquilina (Université Rennes 1), Franck Baraer (Météo France), Élodie Bardon (Creseb), Alexandre Boisson (BRGM), Lola Corre (Météo France), Vincent Dubreuil (Université Rennes 2, HCBC), Gérard Gruau (Université Rennes 1), Romain Pansard (Creseb)

Mise à jour : 06 septembre 2023

Temps de lecture : 22 minute(s)

niveau de lecture

<figure><img src="image_30.png" /></figure>

<figure><img src="image_31.png" /></figure>

\# changement climatique \#eau

<figure><img src="image_32.png" /><figcaption>### fig. 7 Rapport pour le partage durable de l'eau (EPTB Rance Frémur) [12]</figcaption></figure>

<figure><img src="image_33.png" /></figure>

Accueil > Environnement > Eau

Actualité

Nos parutions

Régions

Communes v

Sport

Annonces v

### CARTES. Après un hiver particulièrement sec en France, quel est l'état de nos ressources en eau ?

Des nappes phréatiques à des niveaux « préoccupants », des cours d'eau déjà à sec... L'hiver 2023 s'est terminé en laissant planer la crainte d'une pénurie d'eau pour cet été. En ce début de printemps, dans quel état se trouvent les ressources en eau en France ? Ouest France fait le point ce mercredi 22 mars à l'occasion de la journée mondiale de l'eau.

Ouest-France
Léa BOISTAULT et **Ting Qu**
Publie le 22/03/2023 à 07h00

Abonnez-vous

<figure><img src="image_34.png" /></figure>

LIRE PLUS TARD

<figure><img src="image_35.png" /></figure>

AVERTISSEUR

Newsletter
Déoryptons :
l'environnement

<figure><img src="image_36.png" /></figure>

Une vue aérienne de la Loire depuis Varades (Loire-Atlantique) le 6 mars 2023. | FRANCK DUBRAY / ARCHIVES
OUEST FRANCE

<caption>### fig. 8 Article sur l'état de la ressource en eau (journal Ouest-France) [13]</caption>

[11] Rapport Sécheresse, Observatoire de l'Environnement en Bretagne, https://bretagne-environnement.fr/article/secheresses-vulnerabilites-adaptation-climat-bretagne

[12] Partage durable de l'eau, Rapport EPTB Rance Frémur baie de Beaussais, http://www.sagerancefremur.com/mediastore/11/16964_1_FROriginal.pdf

[13] Carte de Ouest France, https://www.ouest-france.fr/environnement/eau/cartes-apres-un-hiver-particulièrement-sec-en-france-quel-est-letat-de-nos-ressources-en-eau-9a5851ce-c4b1-11ed-93d7-4c4cd65beb9c
3 DU DATA SCIENTIST AU DEV FULL STACK
# 3 DU DATA SCIENTIST AU DEV FULL STACK

## 3.1 La programmation réactive en R

```r
# reactiveValues for global current parameterization
> rv <- reactiveValues(variable=FALSE
  event=NULL, # ... long list of
  period=NULL, # 70 parameters
```

```r
# reactive for temporary parametrization before actualisation
```

```r
> variable <- reactive({
  if (is.null(input$variable.choice)) {
    default_variable
  } else {
    input$variable.choice
  }
})
```

```r
# Actualisation of parameters for the new analysis
```

```r
> observeEvent({
  input$actualise_button
}, {
  if (!is null(data()) & !is null(meta()) & !variable()) {
    rv$actualise <- TRUE
  }
})
```

```r
> observeEvent rv$actualise, {
  if (rv$actualise) {
    rv$variable <- variable() # ... following the update
  }
}
```

### L'efficacité du framework

```r
# Utilisation intuitive des reactive()
et des observeEvent()
```

```r
# Permet une intégration transparente
de code R pré-existant
```

→ Une courbe d'apprentissage très douce
# 3 DU DATA SCIENTIST AU DEV FULL STACK

## 3.1 La programmation réactive en R

### L'efficacité du framework

```r
# Utilisation intuitive des reactive()
et des observeEvent()
```

```r
# Permet une intégration transparente
de code R pré-existant
```

→ Une courbe d'apprentissage très douce

### Framework = cadre

```r
# On se heurte vite aux limitations des outils
```

```r
# Débogage vite complexe dans
des fichiers volumineux
```

```r
# Structure réactive très sensible aux ajouts
```

→ Sortir du cadre est extrêmement coûteux

```r
# reactiveValues for global current parameterization
> rv <- reactiveValues(variable=FALSE
                       event=NULL, # ... long list of
                       period=NULL, # 70 parameters
```

```r
# reactive for temporary parametrization before actualisation
```

```r
> variable <- reactive({
    if (is.null(input$variable.choice)) {
        default_variable
    } else {
        input$variable.choice
    }
})
```

```r
# Actualisation of parameters for the new analysis
```

```r
> observeEvent({
    input$actualise_button
}, {
    if (!is null(data()) & !is null(meta()) & !variable()) {
        rv$actualise <- TRUE
    }
})
```

```r
> observeEvent rv$actualise, {
    if (rv$actualise) {
        rv$variable <- variable() # ... following the update
    }
}
```
## 3.3 to Shiny or not to Shiny

<figure><img src="image_37.png" /></figure>

### to Shiny if ...

* # Mettre un pied dans le monde du développement web

* # Converger rapidement vers une app

* # Faire des tableaux de bord de graphiques interactifs

* # Faire des interfaces à des packages R pré-existant

<figure><img src="image_38.png" /></figure>

makaho.sk8.inrae.fr

### not to Shiny if ...

* Code dans d'autres langages que R #

* Un besoin d'interface personnalisée #

* Une application avec du trafic simultané #

* De gros jeux de données à interfacer #

* Des données sécurisées à exposer en ligne #

<figure><img src="image_39.png" /></figure>

python™

<figure><img src="image_40.png" /></figure>

<figure><img src="image_41.png" /></figure>

<figure><img src="image_42.png" /></figure>
# 4 DE LA SCIENCE À LA SCIENCE OUVERTE
# 4 DE LA SCIENCE À LA SCIENCE OUVERTE

## 4.1 Pas d'excuse pour ne pas partager

```perl
# Custom README with the csv data and the LICENCE in a zip
> observeEvent(input$download_data_button, {
    readme <- readLines(readme_path)
    readme <- gsub("[[DATE[]]", Sys.time(), readme)
    # ...
    writeLines(readme, readme_tmp_path)

    paths <- c(data_paths, licence_path, readme_tmp_path)
    zip.zipfile="MAKAHO_analyse.zip",
               files=paths, flags="-r9Xj")

    output$downloadData w- downloadHandler(
        filename <- function () outfile,
        content <- function (file) file.copy(outpath, file)
    )

    jsinject <- "setTimeout(function()
                 {window.open($'#downloadData'
                             .attr('href'))}, 100);"
    session$sendCustomMessage(type="jsCode",
                              list(value=jsinject))
})
```

### Partager les données

* # Convertir les tibbles en csv

* # Créer un README sur mesure

* # Ajouter une LICENCE

* # Zipper avec les données

* # Télécharger dans le navigateur
## 4.2 Le prix Science Ouverte

<figure><img src="image_43.png" /></figure>

MINISTÈRE
CHARGÉ
DE L'ENSEIGNEMENT
SUPÉRIEUR
ET DE LA RECHERCHE

Liberté

Égalité

Fraternité

### Prix Science Ouverte 2024
des Données de la Recherche

\# Dans la catégorie : "Créer les conditions de la réutilisation" [14]

<figure><img src="image_44.png" /></figure>

Merci !

<figure><img src="image_45.png" /></figure>