Cartographie d’un indicateur

1 Objectifs

Siclima permet de calculer de nombreux indicateurs et de les cartographier directement sur l’application. Cependant, il est parfois nécéssaire de representer en une seule fois plusieurs indicateurs. Dans notre exemple, nous avons calculer des indicateurs de jour chaud (hdaystmax) et de gel (frostdaytmin) sur l’ensemble de la France de 1959 à 2022 et sur l’ensemble de l’année.

2 Librairies nécésaires

Nous utiliseront principalement des fonctions disponibles dans le tidyverse. De plus il est nécéssaire d’uiliser le package sf pour la manipulation des données spatiales.

library(tidyverse)
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.1.4     ✔ readr     2.1.5
✔ forcats   1.0.0     ✔ stringr   1.5.1
✔ ggplot2   3.5.1     ✔ tibble    3.2.1
✔ lubridate 1.9.3     ✔ tidyr     1.3.1
✔ purrr     1.0.2     
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(sf)
Linking to GEOS 3.10.2, GDAL 3.4.1, PROJ 8.2.1; sf_use_s2() is TRUE
library(basemapR)
library(gridExtra)

Attachement du package : 'gridExtra'

L'objet suivant est masqué depuis 'package:dplyr':

    combine
library(ggh4x)

Attachement du package : 'ggh4x'

L'objet suivant est masqué depuis 'package:ggplot2':

    guide_axis_logticks
library(ggpubr)
library(grid)

3 Lecture des données

Dans notre cas nous avons placé les données de sortie de calcul du SICLIMA dans un dossier data/DonneeSiclima et le shapefile de la grille SAFRAN dans data/ShapefileMaille. Nous lisons dans un premier temps les sorties obtenu par SICLIMA calcul

don<-read_delim("data/DonneeSiclima/siclima_calcul_759_20240606.csv")
Rows: 1651584 Columns: 7
── Column specification ────────────────────────────────────────────────────────
Delimiter: ";"
chr  (2): phase, indicator
dbl  (3): cell, year, raw_value
date (2): startdate, enddate

ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
don
# A tibble: 1,651,584 × 7
    cell  year phase startdate  enddate    indicator     raw_value
   <dbl> <dbl> <chr> <date>     <date>     <chr>             <dbl>
 1     4  1959 s0s1  1959-01-01 1959-12-31 frostdaystmin       25 
 2     4  1959 s0s1  1959-01-01 1959-12-31 hdaystmax            0 
 3     4  1959 s0s1  1959-01-01 1959-12-31 rainsum            550.
 4     4  1960 s0s1  1960-01-01 1960-12-30 frostdaystmin       14 
 5     4  1960 s0s1  1960-01-01 1960-12-30 hdaystmax            0 
 6     4  1960 s0s1  1960-01-01 1960-12-30 rainsum            863.
 7     4  1961 s0s1  1961-01-01 1961-12-31 frostdaystmin       21 
 8     4  1961 s0s1  1961-01-01 1961-12-31 hdaystmax            0 
 9     4  1961 s0s1  1961-01-01 1961-12-31 rainsum            634.
10     4  1962 s0s1  1962-01-01 1962-12-31 frostdaystmin       33 
# ℹ 1,651,574 more rows

Nous avons donc un tableau avec les colonnes suivantes : - cell : maille safran - year : année du calcul - phase : phase du calcul - startdate : date du début de la phase - enddate : date de la fin de la phase - indicator : nom de l’indicator - raw_value : valeur de l’indicateur

Dans notre cas, nous n’avons qu’une phase, calculé du 1er janvier au 31 décembre. Pour plus d’informations sur le fonctionnement et les sorties de SICLIMA, merci de vous référez à la documentation de SICLIMA accessible via ce site.

Nous pouvons également chargé la grille SAFRAN avec le package SF

grille<-st_read("data/ShapefileMaille/safran.shp")
Reading layer `safran' from data source 
  `/home/rnleroux/Documents/Travail/Outils/OutilsR/Website/ufos/data/ShapefileMaille/safran.shp' 
  using driver `ESRI Shapefile'
Simple feature collection with 8602 features and 23 fields
Geometry type: POLYGON
Dimension:     XY
Bounding box:  xmin: -4.805748 ymin: 41.36991 xmax: 9.581899 ymax: 51.08562
Geodetic CRS:  WGS84(DD)
grille
Simple feature collection with 8602 features and 23 fields
Geometry type: POLYGON
Dimension:     XY
Bounding box:  xmin: -4.805748 ymin: 41.36991 xmax: 9.581899 ymax: 51.08562
Geodetic CRS:  WGS84(DD)
First 10 features:
   cell altitude               dept      region2016             region
1   100      146 62 - Pas-de-Calais Hauts-de-France Nord-Pas-de-Calais
2  1000       95         51 - Marne       Grand Est  Champagne-Ardenne
3  1001       98         51 - Marne       Grand Est  Champagne-Ardenne
4  1002      145         51 - Marne       Grand Est  Champagne-Ardenne
5  1003      143         51 - Marne       Grand Est  Champagne-Ardenne
6  1004      130         51 - Marne       Grand Est  Champagne-Ardenne
7  1005      150         51 - Marne       Grand Est  Champagne-Ardenne
8  1006      163         51 - Marne       Grand Est  Champagne-Ardenne
9  1007      144         51 - Marne       Grand Est  Champagne-Ardenne
10 1008      129         51 - Marne       Grand Est  Champagne-Ardenne
       nature clc_211 clc_221 clc_222 clc_231 clc_241 clc_242 clc_311 clc_312
1  Territoire   59.51    0.00       0   28.14       0    2.15    4.71    0.00
2  Territoire   60.88    9.73       0    0.00       0    2.28    8.45    1.23
3  Territoire   21.73    1.34       0    0.00       0    4.80    2.92    0.00
4  Territoire   72.80    6.58       0    0.01       0    0.00   10.05    0.53
5  Territoire   76.72    0.00       0    0.00       0    0.00    1.04    2.16
6  Territoire   69.61    0.00       0    0.00       0    0.00    1.89    4.80
7  Territoire   95.19    0.00       0    0.00       0    0.00    1.67    1.54
8  Territoire   48.50    0.00       0    0.00       0    0.81    0.00    0.39
9  Territoire   38.35    0.00       0    3.71       0    0.03    1.92   14.74
10 Territoire   48.07    0.00       0   26.34       0    0.00   16.95    0.39
   clc_313  hsat rupromax rupromin  rupro   hcc pro   hpf AreaSafran
1     0.00 43.06   288.25   288.25 270.68 38.43 107 16.79   63734672
2     0.00 40.44   276.60   161.75 211.43 29.39  97 11.51   63896585
3     0.00 27.31   276.60   276.60 176.39 21.27  61  9.11   63896893
4     1.38 41.07   276.60   219.81 270.47 32.57  84 14.25   63897659
5     1.24 40.96   276.60   276.60 276.60 33.26  80 14.94   63897734
6     0.00 40.88   276.60   216.60 268.03 33.22  86 14.94   63897791
7     0.40 40.90   276.60   216.60 269.96 33.23  84 14.94   63898103
8     6.09 40.98   276.60   276.60 272.63 33.27  79 14.94   63898207
9     0.00 41.21   276.60   104.60 223.63 33.38  73 14.94   63898240
10    0.61 41.90   219.81   104.60 167.62 32.82  93 14.71   63898344
                         geometry
1  POLYGON ((1.886289 50.51086...
2  POLYGON ((3.872506 49.20894...
3  POLYGON ((3.982187 49.20749...
4  POLYGON ((4.091862 49.20593...
5  POLYGON ((4.201531 49.20428...
6  POLYGON ((4.311193 49.20252...
7  POLYGON ((4.420847 49.20067...
8  POLYGON ((4.530493 49.19871...
9  POLYGON ((4.64013 49.19665,...
10 POLYGON ((4.749758 49.1945,...

Cet grille est bien un objet spatial. On peut la répresenter facilement

plot(st_geometry(grille))

4 Cartographie de l’indicateur de jours chaud de l’année 2003

2003 est connu pour avoir été l’année avec la plus longue canicule en France. Nous allons représenter les données pour cette année de l’indicateur hdaystmax (Tmax > 35°C) Tout d’abord, nous filtrons les données qui nous interesses.

don2003Hdaystmax<-don%>%
  filter(indicator=="hdaystmax")%>%
  filter(year==2003)

Nous pouvons maintenant faire la jointure avec la grille SAFRAN pour avoir la dimension spatiale

don2003HdaystmaxSp<-left_join(grille,don2003Hdaystmax)
Joining with `by = join_by(cell)`

Et nous pouvons dès à présent utiliser le package ggplot pour faire notre première carte

 MapCanicule2003<-ggplot() +
    # base_map(BoudaryBox, increase_zoom = 2, basemap = 'google-satellite') +
    geom_sf(data = don2003HdaystmaxSp, mapping=aes(fill=raw_value),color=NA) +
    labs(fill="Nombre de jours supérieur à 35°C")+
    ggtitle("Canicule de 2003 en France")+
    scale_fill_distiller(palette = "OrRd",direction = -1)
MapCanicule2003