Chapitre 3 Traitement des données

Afin de faciliter l’appropriation des outils de traitement, un jeu de données de test a été inclus dans data(chronique_exemple). La structure des tables utilisées à proprement parler est également disponible dans data(chronique_structure_hors_bdd).

C’est à partir du jeu de données data(chronique_exemple) que les exemples suivants de traitement seront présentés.

3.1 Structure des données

Le jeu de données d’exemple est mis en mémoire. La structure des six principales tables est détaillé ci-dessous.

library(aquatools)
data(chronique_structure)

3.1.1 Format au sein de la base de données du RSTMAJ

Les formats présentés ci-dessous sont tels que présents au sein de la base de données PostGIS du RSTMAJ.

La structure des tables est visible via le jeu de données chronique_structure_hors_bdd.

3.1.1.1 Stations

Cette table contient la description des stations, notamment leur nommage homogène au sein du RSTMAJ.

stations_structure_hors_bdd %>% str()
## Classes 'sf' and 'data.frame':   0 obs. of  71 variables:
##  $ id                                           : int 
##  $ chsta_coderhj                                : chr 
##  $ chsta_codemo                                 : chr 
##  $ chsta_codesie                                : chr 
##  $ chsta_mo                                     : chr 
##  $ chsta_milieu                                 : chr 
##  $ chsta_milieucodehydro                        : logi 
##  $ chsta_bassin                                 : chr 
##  $ chsta_sousbassin                             : chr 
##  $ chsta_commune                                : chr 
##  $ chsta_departement                            : chr 
##  $ chsta_codecontextepdpg                       : chr 
##  $ chsta_pays                                   : chr 
##  $ chsta_coord_x                                : num 
##  $ chsta_coord_y                                : num 
##  $ chsta_coord_type                             : chr 
##  $ chsta_fonctionnement                         : chr 
##  $ chsta_transmission                           : chr 
##  $ chsta_suivithermie                           : chr 
##  $ chsta_reseauthermietype                      : chr 
##  $ chsta_suivipiezo                             : chr 
##  $ chsta_suivihydro                             : chr 
##  $ chsta_suivio2                                : chr 
##  $ chsta_suivipluvio                            : chr 
##  $ chsta_altitude                               : num 
##  $ chsta_distancesource                         : num 
##  $ chsta_distancesource_confluencedrainprincipal: num 
##  $ chsta_temperaturemax                         : int 
##  $ chsta_sectionmouillee                        : int 
##  $ chsta_durete                                 : int 
##  $ chsta_largeurlitmineur                       : num 
##  $ chsta_largeurlitetiage                       : num 
##  $ chsta_pente                                  : int 
##  $ chsta_typetheorique                          : chr 
##  $ chsta_surfacebassinversant                   : num 
##  $ chsta_carteign                               : chr 
##  $ chsta_rive                                   : chr 
##  $ chsta_ancrage                                : chr 
##  $ chsta_acces                                  : chr 
##  $ chsta_detailsloc                             : chr 
##  $ chsta_description                            : chr 
##  $ chsta_url                                    : chr 
##  $ chsta_remarques                              : chr 
##  $ chsta_ordretournee                           : int 
##  $ chsta_impacts                                : chr 
##  $ chsta_profsonde                              : num 
##  $ chsta_substrats                              : chr 
##  $ chsta_distberge                              : num 
##  $ chsta_numphoto                               : chr 
##  $ chsta_zcapteur                               : num 
##  $ chsta_zbouchon                               : num 
##  $ chsta_typez                                  : num 
##  $ chsta_hcapteurbouchon                        : chr 
##  $ chsta_module                                 : num 
##  $ chsta_qmna5                                  : num 
##  $ chsta_q2                                     : num 
##  $ chsta_q5                                     : num 
##  $ chsta_q10                                    : num 
##  $ chsta_q20                                    : num 
##  $ chsta_q30                                    : num 
##  $ chsta_q50                                    : num 
##  $ chsta_q100                                   : num 
##  $ chsta_q300                                   : num 
##  $ chsta_ombrage                                : chr 
##  $ chsta_facies                                 : chr 
##  $ chsta_sprep                                  : chr 
##  $ chsta_codehydro                              : chr 
##  $ chsta_codemeteofrance                        : chr 
##  $ chsta_infl_ant_type                          : chr 
##  $ chsta_infl_nappe                             : chr 
##  $ geom                                         :sfc_GEOMETRY of length 0 - attr(*, "sf_column")= chr "geom"
##  - attr(*, "agr")= Factor w/ 3 levels "constant","aggregate",..: NA NA NA NA NA NA NA NA NA NA ...
##   ..- attr(*, "names")= chr [1:70] "id" "chsta_coderhj" "chsta_codemo" "chsta_codesie" ...

3.1.1.2 Suivi

Cette table contient le suivi de terrain relatif à chaque intervention sur un point de suivi (pose, relève, dépose, etc.).

suivis_structure_hors_bdd %>% str()
## tibble [0 × 16] (S3: tbl_df/tbl/data.frame)
##  $ id                  : int(0) 
##  $ chsvi_mo            : chr(0) 
##  $ chsvi_coderhj       : chr(0) 
##  $ chsvi_typesuivi     : chr(0) 
##  $ chsvi_operateurs    : chr(0) 
##  $ chsvi_date          : 'Date' num(0) 
##  $ chsvi_heure         : chr(0) 
##  $ chsvi_capteur       : chr(0) 
##  $ chsvi_valeur        : num(0) 
##  $ chsvi_unite         : chr(0) 
##  $ chsvi_profondeur    : num(0) 
##  $ chsvi_action        : chr(0) 
##  $ chsvi_fonctionnement: chr(0) 
##  $ chsvi_qualite       : chr(0) 
##  $ chsvi_actionafaire  : chr(0) 
##  $ chsvi_remarques     : chr(0)

3.1.1.3 Mesures

Cette table contient les mesures/chroniques/séries à proprement parler.

mesures_structure_hors_bdd %>% str()
## tibble [0 × 12] (S3: tbl_df/tbl/data.frame)
##  $ id                        : int(0) 
##  $ chmes_coderhj             : chr(0) 
##  $ chmes_capteur             : chr(0) 
##  $ chmes_date                : 'Date' num(0) 
##  $ chmes_heure               : chr(0) 
##  $ chmes_valeur              : num(0) 
##  $ chmes_unite               : chr(0) 
##  $ chmes_typemesure          : chr(0) 
##  $ chmes_validation          : chr(0) 
##  $ chmes_mode_acquisition    : chr(0) 
##  $ chmes_mode_integration    : chr(0) 
##  $ chmes_referentiel_temporel: chr(0)

3.1.1.4 Capteurs

Cette table contient un descriptif rapide relatif à chaque capteur utilisé (marque, modèle, propriétaire, etc.).

capteurs_structure_hors_bdd %>% str()
## tibble [0 × 11] (S3: tbl_df/tbl/data.frame)
##  $ id                  : int(0) 
##  $ chcap_proprietaire  : chr(0) 
##  $ chcap_typecapteur   : chr(0) 
##  $ chcap_modelecapteur : chr(0) 
##  $ chcap_numerocapteur : chr(0) 
##  $ chcap_etat          : chr(0) 
##  $ chcap_projet        : chr(0) 
##  $ chcap_originecapteur: chr(0) 
##  $ chcap_datedebut     : chr(0) 
##  $ chcap_datefin       : chr(0) 
##  $ chcap_remarques     : chr(0)

3.1.1.5 Commentaires

Cette table contient les commentaires rédigés de chaque chronique pour chaque couple station-année biologique-paramètre.

commentaires_structure_hors_bdd %>% str()
## tibble [0 × 5] (S3: tbl_df/tbl/data.frame)
##  $ id               : int(0) 
##  $ chres_coderhj    : chr(0) 
##  $ chres_typemesure : chr(0) 
##  $ chres_anneebiol  : int(0) 
##  $ chres_commentaire: chr(0)

3.1.1.6 Résultats

Cette table contient les résultats/métriques calculés pour chaque couple station-année biologique-paramètre.

resultats_structure_hors_bdd %>% str()
## tibble [0 × 78] (S3: tbl_df/tbl/data.frame)
##  $ id                         : int(0) 
##  $ chres_coderhj              : chr(0) 
##  $ chres_typemesure           : chr(0) 
##  $ chres_periodetotale        : chr(0) 
##  $ chres_annee                : num(0) 
##  $ chres_anneevmm             : num(0) 
##  $ chres_datedperiode         : 'Date' num(0) 
##  $ chres_datefperiode         : 'Date' num(0) 
##  $ chres_nbj                  : int(0) 
##  $ chres_intervallemax        : chr(0) 
##  $ chres_dureetotale          : chr(0) 
##  $ chres_nbjpasok             : int(0) 
##  $ chres_nbjok                : int(0) 
##  $ chres_vmini                : num(0) 
##  $ chres_vmedi                : num(0) 
##  $ chres_vmoyi                : num(0) 
##  $ chres_vmaxi                : num(0) 
##  $ chres_vamplii              : num(0) 
##  $ chres_vari                 : num(0) 
##  $ chres_nmesuresi            : int(0) 
##  $ chres_vmoyjminper          : num(0) 
##  $ chres_datevmoyjminper      : 'Date' num(0) 
##  $ chres_vmoyjmedper          : num(0) 
##  $ chres_vmoyjmoyper          : num(0) 
##  $ chres_vmoyjmaxper          : num(0) 
##  $ chres_datevmoyjmaxper      : 'Date' num(0) 
##  $ chres_amplitudevmoyjper    : num(0) 
##  $ chres_varvmoyj             : num(0) 
##  $ chres_vmaxmoy24h           : num(0) 
##  $ chres_datemoyvmaxmoy24h    : chr(0) 
##  $ chres_vmaxmoy7j            : num(0) 
##  $ chres_datedebutvmaxmoy7j   : 'Date' num(0) 
##  $ chres_datefinvmaxmoy7j     : 'Date' num(0) 
##  $ chres_vmaxmoy30j           : num(0) 
##  $ chres_datedebutvmaxmoy30j  : 'Date' num(0) 
##  $ chres_datefinvmaxmoy30j    : 'Date' num(0) 
##  $ chres_vmoymoy30j           : num(0) 
##  $ chres_vminab               : num(0) 
##  $ chres_datevminab           : chr(0) 
##  $ chres_vmaxab               : num(0) 
##  $ chres_datevmaxab           : chr(0) 
##  $ chres_percentile10ab       : num(0) 
##  $ chres_percentile25ab       : num(0) 
##  $ chres_percentile50ab       : num(0) 
##  $ chres_percentile75ab       : num(0) 
##  $ chres_percentile90ab       : num(0) 
##  $ chres_percentile90diurneab : num(0) 
##  $ chres_dureemaxepisodessup25: int(0) 
##  $ chres_nbjepisodessup25     : int(0) 
##  $ chres_nbepisodessup25      : int(0) 
##  $ chres_datedepisodessup25   : chr(0) 
##  $ chres_datefepisodessup25   : chr(0) 
##  $ chres_dureeepisodessup25   : chr(0) 
##  $ chres_dureemaxepisodessup22: int(0) 
##  $ chres_nbjepisodessup22     : int(0) 
##  $ chres_nbepisodessup22      : int(0) 
##  $ chres_datedepisodessup22   : 'POSIXct' num(0) 
##  - attr(*, "tzone")= chr ""
##  $ chres_datefepisodessup22   : 'POSIXct' num(0) 
##  - attr(*, "tzone")= chr ""
##  $ chres_dureeepisodessup22   : chr(0) 
##  $ chres_dureemaxepisodessup19: int(0) 
##  $ chres_nbjepisodessup19     : int(0) 
##  $ chres_nbepisodessup19      : int(0) 
##  $ chres_datedepisodessup19   : 'POSIXct' num(0) 
##  - attr(*, "tzone")= chr ""
##  $ chres_datefepisodessup19   : 'POSIXct' num(0) 
##  - attr(*, "tzone")= chr ""
##  $ chres_dureeepisodessup19   : chr(0) 
##  $ chres_dureemaxepisodessup15: int(0) 
##  $ chres_nbjepisodessup15     : int(0) 
##  $ chres_nbepisodessup15      : int(0) 
##  $ chres_datedepisodessup15   : 'POSIXct' num(0) 
##  - attr(*, "tzone")= chr ""
##  $ chres_datefepisodessup15   : 'POSIXct' num(0) 
##  - attr(*, "tzone")= chr ""
##  $ chres_dureeepisodessup15   : chr(0) 
##  $ chres_dureemaxepisodesinf4 : int(0) 
##  $ chres_nbjepisodesinf4      : int(0) 
##  $ chres_nbepisodesinf4       : int(0) 
##  $ chres_datedepisodesinf4    : 'POSIXct' num(0) 
##  - attr(*, "tzone")= chr ""
##  $ chres_datefepisodesinf4    : 'POSIXct' num(0) 
##  - attr(*, "tzone")= chr ""
##  $ chres_dureeepisodesinf4    : chr(0) 
##  $ chres_aquatoolsversion     : chr(0)

3.1.2 Données hors de la base de données du RSTMAJ

La structure des tables sans les champs propres au RSTMAJ (dates de modifications, etc.) est visible au sein du jeu de données chronique_structure_hors_bdd.

3.2 Ouverture des données

Les données peuvent être importées à partir de la fonction chronique.ouverture().

mes_donnees <- chronique.ouverture(Type = "Mesures", typemesure = "Thermie", Localisation = "./data/Mesures/20347223.txt", skipvalue = 1, nbcolonnes = 6, typefichier = ".csv", typedate = "ymd")
## Warning: One or more parsing issues, call `problems()` on your data frame for details,
## e.g.:
##   dat <- vroom(...)
##   problems(dat)
## Warning: There was 1 warning in `mutate()`.
## ℹ In argument: `Date = ymd(Date)`.
## Caused by warning:
## !  1 failed to parse.
## Warning: There was 1 warning in `mutate()`.
## ℹ In argument: `Valeur = as.numeric(sub(",", ".", Valeur))`.
## Caused by warning:
## ! NAs introduits lors de la conversion automatique

Il est également possible de les importer par un traitement en lots.

mes_donnees <-
  fs::dir_ls("./Travail/", regexp = "\\.txt$") %>%
  map_dfr(~ chronique.ouverture(Localisation = ., skipvalue = 1, nbcolonnes = 6, typefichier = ".csv", typedate = "ymd"))