import library
# ETL
library(tidyverse)
## Warning: le package 'ggplot2' a été compilé avec la version R 4.3.3
## ── 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.0 ✔ 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(data.table)
##
## Attachement du package : 'data.table'
##
## Les objets suivants sont masqués depuis 'package:lubridate':
##
## hour, isoweek, mday, minute, month, quarter, second, wday, week,
## yday, year
##
## Les objets suivants sont masqués depuis 'package:dplyr':
##
## between, first, last
##
## L'objet suivant est masqué depuis 'package:purrr':
##
## transpose
library(readr)
library(DT)
## Warning: le package 'DT' a été compilé avec la version R 4.3.3
library(janitor)
##
## Attachement du package : 'janitor'
##
## Les objets suivants sont masqués depuis 'package:stats':
##
## chisq.test, fisher.test
library(lubridate)
library(magrittr)
##
## Attachement du package : 'magrittr'
##
## L'objet suivant est masqué depuis 'package:purrr':
##
## set_names
##
## L'objet suivant est masqué depuis 'package:tidyr':
##
## extract
library(purrr)
library(here)
## Warning: le package 'here' a été compilé avec la version R 4.3.3
## here() starts at C:/Users/adfau/OneDrive/Documents/EIGSI/proj VDD
library(stringr)
library(dplyr)
library(tidyr)
library(ggplot2)
library(shiny)
## Warning: le package 'shiny' a été compilé avec la version R 4.3.3
##
## Attachement du package : 'shiny'
##
## Les objets suivants sont masqués depuis 'package:DT':
##
## dataTableOutput, renderDataTable
library(geojsonio)
## Warning: le package 'geojsonio' a été compilé avec la version R 4.3.3
## Registered S3 method overwritten by 'geojsonsf':
## method from
## print.geojson geojson
##
## Attachement du package : 'geojsonio'
##
## L'objet suivant est masqué depuis 'package:base':
##
## pretty
library(RColorBrewer)
library(sf)
## Warning: le package 'sf' a été compilé avec la version R 4.3.3
## Linking to GEOS 3.11.2, GDAL 3.8.2, PROJ 9.3.1; sf_use_s2() is TRUE
library(ggplot2)
library(sf)
library(tidyr)
library(shiny)
library(ggplot2)
library(sf)
library(dplyr)
library(tidyr)
library(yaml)
library(rmarkdown)
## Warning: le package 'rmarkdown' a été compilé avec la version R 4.3.3
library(knitr)
## Warning: le package 'knitr' a été compilé avec la version R 4.3.3
# Charts
library(highcharter)
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
## Highcharts (www.highcharts.com) is a Highsoft software product which is
## not free for commercial and Governmental use
library(plotly)
##
## Attachement du package : 'plotly'
##
## L'objet suivant est masqué depuis 'package:ggplot2':
##
## last_plot
##
## L'objet suivant est masqué depuis 'package:stats':
##
## filter
##
## L'objet suivant est masqué depuis 'package:graphics':
##
## layout
library(ggplot2)
library(RColorBrewer)
library(networkD3)
## Warning: le package 'networkD3' a été compilé avec la version R 4.3.3
##
## Attachement du package : 'networkD3'
##
## L'objet suivant est masqué depuis 'package:highcharter':
##
## JS
##
## L'objet suivant est masqué depuis 'package:DT':
##
## JS
library(data.tree)
## Warning: le package 'data.tree' a été compilé avec la version R 4.3.3
library(treemap)
## Warning: le package 'treemap' a été compilé avec la version R 4.3.3
library(leaflet)
## Warning: le package 'leaflet' a été compilé avec la version R 4.3.3
##
## Attachement du package : 'leaflet'
##
## L'objet suivant est masqué depuis 'package:networkD3':
##
## JS
library(car)
## Warning: le package 'car' a été compilé avec la version R 4.3.3
## Le chargement a nécessité le package : carData
## Warning: le package 'carData' a été compilé avec la version R 4.3.3
##
## Attachement du package : 'car'
##
## L'objet suivant est masqué depuis 'package:dplyr':
##
## recode
##
## L'objet suivant est masqué depuis 'package:purrr':
##
## some
#setwd("~ \Users\adfau\OneDrive\Documents\EIGSI\proj VDD")
entete = NULL
data = NULL
files_names <- list.files(here("SH_TX_metropole"))
for (i in files_names) {
file= paste0("SH_TX_metropole/",i)
tmp = read.csv2(file,skip =12)
tmp_entete= read.csv2(file, sep = "=")
tmp_entete= tmp_entete[c(1,2,3,4,5),1]
tmp_entete[1] = gsub(" ", "", tmp_entete[1])
entete = rbind(entete, c(tmp_entete, substring(i,8,9)))
tmp$code = tmp_entete[1]
data = rbind(data, tmp)
}
entete = data.frame(entete)
names(entete) = c("code","nom", "latitude","longitude","altitude", "dep")
entete$latitude = as.numeric(entete$latitude)
#data <- data %>% separate(YYYYMM, c('YYYY', 'MM'))
data <- transform(data, Year = substr(YYYYMM, 1, 4), Month = substr(YYYYMM, 5, 6))
data <- data[,-1] # On supprime la 1eme colonne
data$Year = as.numeric(data$Year)
data$VALEUR = as.numeric(data$VALEUR)
val_moy = NULL
val_moy <- data %>% group_by(Year, code) %>% summarize(MOY_AN = mean(VALEUR, na.rm=TRUE))
## `summarise()` has grouped output by 'Year'. You can override using the
## `.groups` argument.
val_moy <- left_join(val_moy,entete,by=c("code"))
val_moy2 = NULL
val_moy2 <- val_moy %>% group_by(Year) %>% summarize(MOY_AN2= mean(MOY_AN, na.rm = TRUE))
scatterplot(MOY_AN2~Year, data=val_moy2)

val_moy3 = NULL
val_moy3 <- val_moy %>% group_by(dep,Year) %>% summarize(MOY_AN3= mean(MOY_AN, na.rm = TRUE))
## `summarise()` has grouped output by 'dep'. You can override using the `.groups`
## argument.
#dep
ggplot(val_moy3, aes(Year,MOY_AN3)) +
geom_line(aes(color=dep, group=dep))

ui <- fluidPage(
titlePanel("Moyenne Annuelle par Département"),
sidebarLayout(
sidebarPanel(
selectInput("dep", "Choisissez un département :", choices = unique(val_moy3$dep))
),
mainPanel(
plotOutput("line_plot")
)
)
)
server <- function(input, output) {
filtered_data <- reactive({
val_moy3 %>%
filter(dep == input$dep)
})
output$line_plot <- renderPlot({
ggplot(filtered_data(), aes(Year, MOY_AN3)) +
geom_line() +
labs(title = paste("Moyenne Annuelle pour le Département", input$dep))
})
}
shinyApp(ui = ui, server = server)
##
## Listening on http://127.0.0.1:8599

#_________________________________________________
# Read the GeoJSON file
map_data <- st_read("C:/Users/adfau/OneDrive/Documents/EIGSI/proj VDD/georef-france-departement-millesime.geojson")
## Reading layer `georef-france-departement-millesime' from data source
## `C:\Users\adfau\OneDrive\Documents\EIGSI\proj VDD\georef-france-departement-millesime.geojson'
## using driver `GeoJSON'
## Simple feature collection with 941 features and 14 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: -178.1857 ymin: -49.72161 xmax: 168.1442 ymax: 51.08899
## Geodetic CRS: WGS 84
# Rename "dep" column in val_moy3 to "dep_code"
names(val_moy3)[names(val_moy3) == "dep"] <- "dep_code"
# Check column names of map_data
names(map_data)
## [1] "geo_point_2d" "year" "dep_name_upper" "dep_name_lower"
## [5] "dep_area_code" "dep_type" "dep_siren_code" "dep_is_ctu"
## [9] "reg_code" "reg_name" "dep_code" "dep_current_code"
## [13] "dep_name" "dep_status" "geometry"
# Check column names of val_moy3
names(val_moy3)
## [1] "dep_code" "Year" "MOY_AN3"
# Check data types of columns in map_data
sapply(map_data, class)
## $geo_point_2d
## [1] "character"
##
## $year
## [1] "character"
##
## $dep_name_upper
## [1] "character"
##
## $dep_name_lower
## [1] "character"
##
## $dep_area_code
## [1] "character"
##
## $dep_type
## [1] "character"
##
## $dep_siren_code
## [1] "character"
##
## $dep_is_ctu
## [1] "character"
##
## $reg_code
## [1] "list"
##
## $reg_name
## [1] "list"
##
## $dep_code
## [1] "list"
##
## $dep_current_code
## [1] "list"
##
## $dep_name
## [1] "list"
##
## $dep_status
## [1] "list"
##
## $geometry
## [1] "sfc_MULTIPOLYGON" "sfc"
# Check data types of columns in val_moy3
sapply(val_moy3, class)
## dep_code Year MOY_AN3
## "character" "numeric" "numeric"
# Flatten list columns in map_data
map_data <- map_data %>%
unnest(cols = c(reg_code, reg_name, dep_code, dep_current_code, dep_name, dep_status))
filtered_data2 <- ({ val_moy3 %>% filter(Year == 1960) })
# Join val_moy3 data with map_data
map_data <- merge(map_data, filtered_data2, by.x = "dep_code", by.y = "dep_code")
#
# Plot the map
ggplot() +
geom_sf(data = map_data, aes(fill = MOY_AN3)) +
scale_fill_gradient(low = "blue", high = "red", name = "T° en °C")

#__________________________________________
# Read the GeoJSON file
map_data2 <- st_read("C:/Users/adfau/OneDrive/Documents/EIGSI/proj VDD/georef-france-departement-millesime.geojson")
## Reading layer `georef-france-departement-millesime' from data source
## `C:\Users\adfau\OneDrive\Documents\EIGSI\proj VDD\georef-france-departement-millesime.geojson'
## using driver `GeoJSON'
## Simple feature collection with 941 features and 14 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: -178.1857 ymin: -49.72161 xmax: 168.1442 ymax: 51.08899
## Geodetic CRS: WGS 84
# Rename "dep" column in val_moy3 to "dep_code"
names(val_moy3)[names(val_moy3) == "dep"] <- "dep_code"
# Check column names of map_data
names(map_data2)
## [1] "geo_point_2d" "year" "dep_name_upper" "dep_name_lower"
## [5] "dep_area_code" "dep_type" "dep_siren_code" "dep_is_ctu"
## [9] "reg_code" "reg_name" "dep_code" "dep_current_code"
## [13] "dep_name" "dep_status" "geometry"
# Check column names of val_moy3
names(val_moy3)
## [1] "dep_code" "Year" "MOY_AN3"
# Check data types of columns in map_data
sapply(map_data2, class)
## $geo_point_2d
## [1] "character"
##
## $year
## [1] "character"
##
## $dep_name_upper
## [1] "character"
##
## $dep_name_lower
## [1] "character"
##
## $dep_area_code
## [1] "character"
##
## $dep_type
## [1] "character"
##
## $dep_siren_code
## [1] "character"
##
## $dep_is_ctu
## [1] "character"
##
## $reg_code
## [1] "list"
##
## $reg_name
## [1] "list"
##
## $dep_code
## [1] "list"
##
## $dep_current_code
## [1] "list"
##
## $dep_name
## [1] "list"
##
## $dep_status
## [1] "list"
##
## $geometry
## [1] "sfc_MULTIPOLYGON" "sfc"
# Check data types of columns in val_moy3
sapply(val_moy3, class)
## dep_code Year MOY_AN3
## "character" "numeric" "numeric"
# Flatten list columns in map_data
map_data2 <- map_data2 %>%
unnest(cols = c(reg_code, reg_name, dep_code, dep_current_code, dep_name, dep_status))
# Définir l'interface utilisateur Shiny
ui <- fluidPage(
titlePanel("Visualisation de la température moyenne par département"),
# Créer un curseur pour sélectionner l'année
sidebarLayout(
sidebarPanel(
# Filtre interactif pour l'année
year_slider <- sliderInput("year_filter", "Sélectionnez une année", min = min(val_moy3$Year), max = max(val_moy3$Year), value = min(val_moy3$Year), step = 5, sep = "")
#selectInput("year_filter", "Choisir une année :", choices = unique(val_moy3$Year))
),
mainPanel(
plotOutput("map_plot")
)
)
)
# Définir le serveur Shiny
server <- function(input, output) {
# Sous-ensemble des données en fonction de l'année sélectionnée
filtered_data <- reactive({
val_moy3 %>%
filter(Year == input$year_filter)
})
observe({
# Flatten list columns in map_data
map_data2 <- map_data2 %>%
unnest(cols = c(reg_code, reg_name, dep_code, dep_current_code, dep_name, dep_status))
# Join val_moy3 data with map_data
map_data2 <- merge(map_data2, filtered_data(), by.x = "dep_code", by.y = "dep_code")
})
# Créer la carte
output$map_plot <- renderPlot({
map_data2 <- merge(map_data2, filtered_data(), by.x = "dep_code", by.y = "dep_code")
ggplot() +
geom_sf(data = map_data2, aes(fill = MOY_AN3)) +
scale_fill_gradient(low = "white", high = "#4f0e1a", name = "T° en °C",limits = c(10, 24) )
})
}
# Lancer l'application Shiny
shinyApp(ui = ui, server = server)
##
## Listening on http://127.0.0.1:8125
