From 9dbbbaeb999bf101a83e5f4ce9c4c3a05c6481ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Grelot?= <frederic.grelot@irstea.fr> Date: Thu, 20 Jan 2022 18:14:15 +0100 Subject: [PATCH] catnat, population, clc MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - catnat dataset remplace gaspar dataset - passage en array pour garder les types d'aléa - estimate_catnat_freq incluse dans la librairie - population dataset pour la population - clc_color dataset pour les couleurs et label de clc - map_so_ii inclus population, gère les légendes pour les thèmes - dossier script hors librairie por garder la trace des mises à jour des données (doit aller dand floodam.data) 0 errors ✔ | 0 warnings ✔ | 1 note ✖ Mais la note concerne le temps... --- geau/NAMESPACE | 1 + geau/R/data.r | 39 +++++++++-- geau/R/estimate_catnat_freq.R | 47 +++++++++++++ geau/R/map_so_ii.r | 116 +++++++++++++++++++++++++++++-- geau/data-raw/so_ii_catnat.R | 29 ++++++++ geau/data-raw/so_ii_population.R | 32 +++++++++ geau/data-raw/so_ii_scope.R | 42 +++++++---- geau/data/clc_color.rda | Bin 0 -> 329 bytes geau/data/so_ii_catnat.rda | Bin 0 -> 864 bytes geau/data/so_ii_gaspar.rda | Bin 795 -> 0 bytes geau/data/so_ii_population.rda | Bin 0 -> 5274 bytes geau/man/clc_color.Rd | 16 +++++ geau/man/estimate_catnat_freq.Rd | 36 ++++++++++ geau/man/map_so_ii.Rd | 17 +++-- geau/man/so_ii_catnat.Rd | 25 +++++++ geau/man/so_ii_gaspar.Rd | 17 ----- geau/man/so_ii_population.Rd | 23 ++++++ map_so_ii.rmd | 18 +++-- script/gaspar.R | 89 ++++++++++++++++++++++++ 19 files changed, 492 insertions(+), 55 deletions(-) create mode 100644 geau/R/estimate_catnat_freq.R create mode 100644 geau/data-raw/so_ii_catnat.R create mode 100644 geau/data-raw/so_ii_population.R create mode 100644 geau/data/clc_color.rda create mode 100644 geau/data/so_ii_catnat.rda delete mode 100644 geau/data/so_ii_gaspar.rda create mode 100644 geau/data/so_ii_population.rda create mode 100644 geau/man/clc_color.Rd create mode 100644 geau/man/estimate_catnat_freq.Rd create mode 100644 geau/man/so_ii_catnat.Rd delete mode 100644 geau/man/so_ii_gaspar.Rd create mode 100644 geau/man/so_ii_population.Rd create mode 100644 script/gaspar.R diff --git a/geau/NAMESPACE b/geau/NAMESPACE index 2862409..f4d57d0 100644 --- a/geau/NAMESPACE +++ b/geau/NAMESPACE @@ -2,5 +2,6 @@ export(add.inset) export(current_version) +export(estimate_catnat_freq) export(kable_units) export(map_so_ii) diff --git a/geau/R/data.r b/geau/R/data.r index 09a94a9..3395972 100644 --- a/geau/R/data.r +++ b/geau/R/data.r @@ -50,17 +50,44 @@ #' } "so_ii_limit" -#' Flood frequency for the municipalities of so-ii +#' Population for so-ii #' -#' A dataset containing the flood frequency by year and so-ii municipality -#' according to the GASPAR database. +#' A dataset containing the population of commune in so-ii according to INSEE. #' -#' @format matrix 78 rows, 41 variables -"so_ii_gaspar" +#' @format numeric matrix +#' \describe{ +#' \item{row}{commune as in so_ii_scope} +#' \item{column}{year} +#' } +#' +#' @source \url{https://www.insee.fr/fr/statistiques/2522602} +"so_ii_population" + +#' Number of Cat Nat events for the municipalities of so-ii +#' +#' A dataset containing the number of Cat Nat events (linked to flood) by year +#' and so-ii municipality according to the GASPAR database. +#' +#' @format array with 3 dimensions +#' \describe{ +#' \item{first}{commune as in so_ii_scope} +#' \item{second}{year of Cat Nat events} +#' \item{third}{type of hazard} +#' } +#' +#' @source \url{https://www.georisques.gouv.fr/donnees/bases-de-donnees/base-gaspar} +"so_ii_catnat" #' CLC information for so-ii #' #' A dataset containing the 2018 version of CLC information for so-ii #' #' @format sf object -"so_ii_clc" \ No newline at end of file +"so_ii_clc" + +#' Color and label for CLC +#' +#' A dataset proposing default colors and labels for plotting CLC +#' +#' @format data.frame 5 rows, 3 variables +"clc_color" \ No newline at end of file diff --git a/geau/R/estimate_catnat_freq.R b/geau/R/estimate_catnat_freq.R new file mode 100644 index 0000000..4a1c457 --- /dev/null +++ b/geau/R/estimate_catnat_freq.R @@ -0,0 +1,47 @@ +#' @title Estimate frequency of Cat Nat events +#' +#' @param commune factor, commune +#' @param period POSIXct, a date for the event +#' @param hazard factor, type of hazard +#' @param period_format character, format to extract information from period +#' +#' @return array fivving frequency of Cat Nat events with 3 dimensions +#' (commune, period, hazard) +#' +#' @export +#' +#' @encoding UTF-8 +#' @author Frédéric Grelot +#' @author David Nortes Martinez +#' +#' @examples +#' +#' \dontrun{ +#' # To be added (soon) +#' } + +estimate_catnat_freq = function( + commune, + period, + hazard, + period_format = "%Y" +) { + period = format(as.Date(period), period_format) + period_levels = switch( + EXPR = period_format, + "%Y" = formatC( + 1982:as.integer(format(Sys.Date(),"%Y")), + width = 4, format = "d", flag = "0" + ), + "%m" = formatC(1:12, width = 2, format = "d", flag = "0"), + sort(unique(as.character(period))) + ) + result = data.frame( + commune = commune, + period = factor(period, levels = period_levels), + hazard = hazard + ) + result = table(result) + class(result) = "array" + return(result) +} diff --git a/geau/R/map_so_ii.r b/geau/R/map_so_ii.r index 21aec3d..23713be 100644 --- a/geau/R/map_so_ii.r +++ b/geau/R/map_so_ii.r @@ -1,11 +1,16 @@ #' @title Plot a thematic map of so-ii #' +#' @details +#' hazard must be chosen in c("inondation", "submersion", "nappe"). +#' #' @param dataset sf objectf, data to be plotted #' @param dataset_legend list of parameters to be passed to legend #' @param theme character, choice for the theme (if any) -#' @param bar logical, should a bar be plotted +#' @param bar logical, should a bar be plotted for the dataset #' @param path character, the name of the file to save the plot -#' @param gaspar_year character, the year chosen for gaspar theme +#' @param legend_theme logical, should a legend be plotted for the theme +#' @param year character, the year chosen for some themes (catnat, population) +#' @param hazard character, type of hazard chosen (if any). See details. #' @param ... some parameters that will be used by plot (from sf) #' #' @return Nothing useful. @@ -24,10 +29,12 @@ map_so_ii = function( dataset, dataset_legend = NULL, - theme = c("clc", "gaspar"), + theme = "clc", bar = TRUE, path = NULL, - gaspar_year, + legend_theme = FALSE, + year, + hazard, ... ) { @@ -52,18 +59,101 @@ map_so_ii = function( col = geau::so_ii_clc[["color"]], add = TRUE ) + + theme_legend = list( + title = "CLC (2018)", + legend = geau::clc_color[["label_fr"]], + x = "topright", + cex = .8, + bg = "white", + inset = 0.01, + fill = geau::clc_color[["color"]] + ) } - if ("gaspar" %in% theme) { + if ("population" %in% theme) { + if (missing(year)) { + year = utils::tail(sort(colnames(geau::so_ii_population)), 1) + } + population_palette = scales::colour_ramp(c("white", "red"), alpha = .5) + color = matrix( + scales::cscale( + geau::so_ii_population, + population_palette, + trans = scales::log_trans()), + nrow = nrow(geau::so_ii_population), + dimnames = dimnames(geau::so_ii_population) + ) + border = "grey80" + plot( + geau::so_ii_commune[["geometry"]], + border = border, + col = color[ , year], + add = TRUE + ) + + value_legend = c(100, 1000, 10000, 100000, 250000) + color_legend = scales::cscale( + c(range(geau::so_ii_population), value_legend), + population_palette, + trans = scales::log_trans() + )[-(1:2)] + text_legend = formatC( + as.integer(value_legend), + big.mark = " " + ) + + theme_legend = list( + title = sprintf("Population %s", year), + legend = rep("", length(text_legend)), + x = "topright", + cex = .8, + bg = "white", + inset = 0.01, + fill = color_legend, + border = border, + text.width = graphics::strwidth(utils::tail(text_legend, 1)) + ) + } + + if ("catnat" %in% theme) { border = NA color = NA - if (!missing(gaspar_year)) { + if (!missing(year)) { border = "grey80" + if (missing(hazard)) { + hazard = dimnames(geau::so_ii_catnat)[["hazard"]] + } else { + hazard = intersect( + hazard, + dimnames(geau::so_ii_catnat)[["hazard"]] + ) + if (length(hazard) == 0) { + hazard = dimnames(geau::so_ii_catnat)[["hazard"]] + } + } + + catnat = apply( + geau::so_ii_catnat[, as.character(year), hazard, drop = FALSE], + 1:2, + sum + ) color = ifelse( - geau::so_ii_gaspar[ , as.character(gaspar_year)] > 0, + catnat > 0, scales::alpha("grey80", .5), NA ) + + theme_legend = list( + title = sprintf("Cat-Nat %s", year), + legend = c("Sans d\u00e9claration", "Avec d\u00e9claration"), + x = "topright", + cex = .8, + bg = "white", + inset = 0.01, + fill = unique(color), + border = border + ) } plot( @@ -98,5 +188,17 @@ map_so_ii = function( do.call(graphics::legend, dataset_legend) } + if (legend_theme == TRUE && exists("theme_legend")) { + temp = do.call(graphics::legend, theme_legend) + if (exists("text_legend")) { + graphics::text( + x = temp[["rect"]][["left"]] + temp[["rect"]][["w"]], + y = temp[["text"]][["y"]], + labels = text_legend, + pos = 2 + ) + } + } + return(invisible(NULL)) } diff --git a/geau/data-raw/so_ii_catnat.R b/geau/data-raw/so_ii_catnat.R new file mode 100644 index 0000000..eaf53df --- /dev/null +++ b/geau/data-raw/so_ii_catnat.R @@ -0,0 +1,29 @@ +# code to prepare `so_ii_catnat` dataset goes here + +so_ii_catnat = read.csv2( + geau::current_version("data-common/so-ii/gaspar", "catnat-") +) + +alea_scope = c("inondation", "nappe", "submersion") +so_ii_catnat = so_ii_catnat[ so_ii_catnat[["alea"]] %in% alea_scope, ] + +so_ii_catnat[["commune"]] = factor( + so_ii_catnat[["commune"]], + levels = so_ii_scope +) +so_ii_catnat[["alea"]] = factor( + so_ii_catnat[["alea"]], + levels = alea_scope +) + +so_ii_catnat = estimate_catnat_freq( + so_ii_catnat[["commune"]], + so_ii_catnat[["date.start"]], + so_ii_catnat[["alea"]] +) + +# updating datasets + +actual = setwd("geau") +usethis::use_data(so_ii_catnat, internal = FALSE, overwrite = TRUE) +setwd(actual) \ No newline at end of file diff --git a/geau/data-raw/so_ii_population.R b/geau/data-raw/so_ii_population.R new file mode 100644 index 0000000..a771c06 --- /dev/null +++ b/geau/data-raw/so_ii_population.R @@ -0,0 +1,32 @@ +# code to prepare `so_ii_population` dataset goes here + +so_ii_population = readxl::read_xlsx( + geau::current_version( + "data-common/data/INSEE/Population/Historique", + "base-pop-historique" + ), + sheet = 1, + skip = 5, +) +class(so_ii_population) = "data.frame" +rownames(so_ii_population) = so_ii_population[["CODGEO"]] +selection = grep( + "PMUN|PSCDC|PTOT", + colnames(so_ii_population), + value = TRUE +) +so_ii_population = as.matrix( + so_ii_population[geau::so_ii_scope, selection] +) +year = gsub("PMUN", "20", selection) +year = gsub("PTOT", "19", year) +year = gsub("1919", "19", year) +year = gsub("1918", "18", year) +dimnames(so_ii_population)[[2]] = year + +# updating datasets + +# actual = setwd(file.path(system.file(package = "geau"), "..")) +actual = setwd("geau") +usethis::use_data(so_ii_population, internal = FALSE, overwrite = TRUE) +setwd(actual) diff --git a/geau/data-raw/so_ii_scope.R b/geau/data-raw/so_ii_scope.R index 7fe7810..c69a390 100644 --- a/geau/data-raw/so_ii_scope.R +++ b/geau/data-raw/so_ii_scope.R @@ -24,26 +24,40 @@ so_ii_limit = sf::st_union(so_ii_commune) so_ii_clc = readRDS("data-common/data/so-ii/so-ii_clc.rds") so_ii_clc = so_ii_clc["code_18"] names(so_ii_clc) = c("clc_2018", "geometry") -color = scales::alpha(c("red3", "darkolivegreen3", "darkgreen", "#4C90B4", "lightblue"), .2) +clc_color = data.frame( + color = scales::alpha( + c( + "red3", + "darkolivegreen3", + "darkgreen", + "#4C90B4", + "lightblue" + ), + .2 + ), + label_fr = c( + "Zone urbaine", + "Zone agricole", + "Forêt, zone naturelle", + "Zone humide", + "Surface d'eau" + ), + label_uk = c( + "Urban area", + "Agricultural area", + "Forest, natural area", + "Humid area", + "Water surface" + ) +) so_ii_clc[["color"]] = as.character( cut( as.integer(substr(so_ii_clc[["clc_2018"]], 1, 1)), breaks = 5, - labels = color + labels = clc_color[["color"]] ) ) -# code to prepare `so_ii_gaspar` dataset goes here - -so_ii_gaspar = read.csv2( - current_version("data-common/so-ii/gaspar", "catnat_year_n"), - header = TRUE, - row.names = 1 -) -so_ii_gaspar = as.matrix(so_ii_gaspar) -colnames(so_ii_gaspar) = gsub("^X", "", colnames(so_ii_gaspar)) -so_ii_gaspar = so_ii_gaspar[so_ii_scope, ] - # updating datasets # actual = setwd(file.path(system.file(package = "geau"), "..")) @@ -52,5 +66,5 @@ usethis::use_data(so_ii_scope, internal = FALSE, overwrite = TRUE) usethis::use_data(so_ii_commune, internal = FALSE, overwrite = TRUE) usethis::use_data(so_ii_limit, internal = FALSE, overwrite = TRUE) usethis::use_data(so_ii_clc, internal = FALSE, overwrite = TRUE) -usethis::use_data(so_ii_gaspar, internal = FALSE, overwrite = TRUE) +usethis::use_data(clc_color, internal = FALSE, overwrite = TRUE) setwd(actual) diff --git a/geau/data/clc_color.rda b/geau/data/clc_color.rda new file mode 100644 index 0000000000000000000000000000000000000000..468f6fb9fd841f01298b3298699aa43ff82fe708 GIT binary patch literal 329 zcmV-P0k-}^T4*^jL0KkKS;lGd)Bpgr|J43|Z2(AxUtm8#8qmM*o{&HQ01yZO012=G z7@{Jl=`@+Ch+;HoWDNrhri}wbCX9zLm;}HHgu-cn00haVfrO@#Pf@AiG7vNX$)IR7 z449aj4in2gFtVCv13F|wP5B#d@8t{{v;4sz0VWENS2~F>U4iWHY19%eS_Zr`2nOd& z4#k&g5HmFCn<6?>4MI0GW&3y-6>0Zaj<UU%8_%~C3~e3TK_L@uQlQr*P?DF3#F>)G zY!qH@M?`yLAc~|qJn9V~9Ij|GXu{oNz${?;uuEjZMHumF(+4KJ^=p)-f<)7XT8Fu4 zcB3_1mh2HE_eIk&NwT>dj9Ch6(-&eAwxjV(X)VORO(U&#!R#Yp#S1!ARZ!a_P>uTb bZN5s4`EvW~UK<ht0sb!Jig2MJjML?)Z!wMY literal 0 HcmV?d00001 diff --git a/geau/data/so_ii_catnat.rda b/geau/data/so_ii_catnat.rda new file mode 100644 index 0000000000000000000000000000000000000000..4083200d81d8518fd6c2633a328c1d012148d4de GIT binary patch literal 864 zcmV-m1E2gtT4*^jL0KkKS(agBA^-?wfB*mf$cT!d|Llwjn83d4-Wmdk0EmPPh=>RP z2to=82nkRF*dAwToDI>;K?P55Qc2-8Js<!EnE(I)28N9q7-a^g$RQ;F0000ChJerj z0001!N`xrUpa26v00ThNO#lD@8V)jGni&j?jG7t%&}3l%&}h>kh-d(jD5t6Dfv2PZ zXwU!v13&-(00tF`5kf2$V3ieAO4@}%V#o>$76rCKRzRo<vPCvkg2J#UkyZ><MHs6W z%*uePAr=5BB1wX{qb(qz1rewfsHIR<6%~RaRwyk5i4;Xv(xN3x6m1G1n`RSZ8+25^ zs#6jIr6!P)gaE;$4#WVs@hi<JglNwQ2_ggtHvfn~By!S#5;&kynUR^qghWJUQXv@` zl(I#w9=&~w7HnAn0000000000001jIIZhBLHBCjaty<pKygADdHc6E8NnwzDDo+zm zTB?##UTTx#qYO^1#`48kTtyTh1Xe%*(hvoecq1z!D>-(UO(XBmJ~}KSOhOE-TJBxV ztjDm(beZUtr&T{ue3iSCr8pXkW%Pj25$%l{1PEF@c_J=(i!7RfKJ>1|DXM30E+^h> zFhu3O81~GzvAnpExye@BB83v3zNbfmJXFQ4F<rQ)P^|gnuR6--g04~IABQ3-v9#{X zhKt%&3iSD_M<zBEv56LHT}&>0&B5wn$acA9@Y&MMh1t!f=uHe&G^t>^$x>r%ixdr} zicA=Gv)nOk3N>?P*~biMprEkGw9W}vgK=gEssfR9Su;2)ELGJ>AW!l@Abqv0ki`iW zNew-He6}&W9X}>G=SVEc6j@NEQHt{|V`+{WGRsB8%pwXVG^`UU7aA7^BXTSQ-ti&c z_?fziTB7;L77*5Sh$YwyD4JPPk*hjWOEo@8=d}h*(IX?l0wJJHf^*&$a}*;vt))&X zz*sW?EEt9Z4~K<U!kGf#f^P2OTCszOc(mZ-4xXk_b9p$>!v<#}u$COX)Tt)Gvl5v@ z&U1A*xuPz>vL?#JNQ7j<BD#iFknQ(h!RUWUYkvhVJNgv7XWmsM`eOW$##L%t{c*uf qB_ir5wA7F;W`vyzS!IO32%?UOT5!oq;36Xf{9VZu;X*=Lg^-AT)nnuU literal 0 HcmV?d00001 diff --git a/geau/data/so_ii_gaspar.rda b/geau/data/so_ii_gaspar.rda deleted file mode 100644 index b043d07338c1978285be83914c7af4282819f5b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 795 zcmV+$1LXWdT4*^jL0KkKS;+m?oB#)I|Ns8}$cTub|Llwjn82>9*a-rN0EmDL2#5#( z06+=|2nkRFd<5+?&a0(y1kqF5)TywOH4P6?G}=G_0iXlaX{WVAjF~iI7@A-pU`;Sa z35lkf05F72kc5Z;13&{n8UWA$00f#;6+J@`G8q~GF#uu#pc)u}B{G@>q+|fd000bX zWY7RK1Jq$yvI-GkvjnJ$iCbA!1uIelg2f?i2q`NeDzZgCs=*jm1!PcFixgf469sWm zQWb<0OGs9+N}#b6RtSk$ptdArR8?&%A~x8F+7v-L9PK<YiXyrp0Mq3%LQ4P?Ao}PN zv6sUL5b<kL1~!C;XZ=DF90>vzx*3^~l;~t;W<??ykr_<cHtu2E#a=q`fB*mh00000 z0000Q5D#O-j1FUwTIVXk(13f?Nbm#}iIY_*)iW&dHVZk-lL4Z0Em^%(3u&pTAs}^# zNfH4Lrp+&NwR-M8hG&DnpL;I?Wtev;ra@@T%_%6~QkyE%0NT1*=?QsW$S9VA)vR<^ zXI~ewU0obl&wbv2RYJl6=1kZJ4Sw`{>B31~utvexRn2!kbkBNS_-xtek?rh!|I^Bn z(|EruW8%uGqYWxq63F>HM@w33*Y>i!zi7ayR9k(mLqs~6Qe0{=iCXmK<=5x0OHu2# z%EB;#B#oO;qzP{!qAJ`%P>>m`B8WVfbd<;#n)crM=9OszK$IDlnj<RfV}!wqpeYu4 z(p>FSSfsrQ00{4>Ab>dcoJ10UfZElnyb}0495XjaEXfpEP^D3d_U&V7jv6w{Ma0ZP z1cXZ(ffZoogQ90JfSh8sCUKiZ3&FPZvcyRvteB91GNMR`W|WG`b%u*NDNA6BC@6>Z zfPtt8NFietrkYmebkh8r+c$uLARtUZnatLg#%XH?1~-YBEU%or)?QIjTCr)w5W<iv zXgZ>+1f5B%2BCuhNdl(msadv~VwTPw*@QJl;*bdtOa~f+;G^l`n%iUJA>hkm<_T#j Zt*Goov2<08LLwsn7ji{7P>{&|)|{sIR)YWl diff --git a/geau/data/so_ii_population.rda b/geau/data/so_ii_population.rda new file mode 100644 index 0000000000000000000000000000000000000000..bc3a1b17f4b91879f41c30609c3c58215fe403f4 GIT binary patch literal 5274 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 literal 0 HcmV?d00001 diff --git a/geau/man/clc_color.Rd b/geau/man/clc_color.Rd new file mode 100644 index 0000000..35203a5 --- /dev/null +++ b/geau/man/clc_color.Rd @@ -0,0 +1,16 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/data.r +\docType{data} +\name{clc_color} +\alias{clc_color} +\title{Color and label for CLC} +\format{ +data.frame 5 rows, 3 variables +} +\usage{ +clc_color +} +\description{ +A dataset proposing default colors and labels for plotting CLC +} +\keyword{datasets} diff --git a/geau/man/estimate_catnat_freq.Rd b/geau/man/estimate_catnat_freq.Rd new file mode 100644 index 0000000..79ac253 --- /dev/null +++ b/geau/man/estimate_catnat_freq.Rd @@ -0,0 +1,36 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/estimate_catnat_freq.R +\encoding{UTF-8} +\name{estimate_catnat_freq} +\alias{estimate_catnat_freq} +\title{Estimate frequency of Cat Nat events} +\usage{ +estimate_catnat_freq(commune, period, hazard, period_format = "\%Y") +} +\arguments{ +\item{commune}{factor, commune} + +\item{period}{POSIXct, a date for the event} + +\item{hazard}{factor, type of hazard} + +\item{period_format}{character, format to extract information from period} +} +\value{ +array fivving frequency of Cat Nat events with 3 dimensions +(commune, period, hazard) +} +\description{ +Estimate frequency of Cat Nat events +} +\examples{ + +\dontrun{ +# To be added (soon) +} +} +\author{ +Frédéric Grelot + +David Nortes Martinez +} diff --git a/geau/man/map_so_ii.Rd b/geau/man/map_so_ii.Rd index 118e736..b063bfd 100644 --- a/geau/man/map_so_ii.Rd +++ b/geau/man/map_so_ii.Rd @@ -8,10 +8,12 @@ map_so_ii( dataset, dataset_legend = NULL, - theme = c("clc", "gaspar"), + theme = "clc", bar = TRUE, path = NULL, - gaspar_year, + legend_theme = FALSE, + year, + hazard, ... ) } @@ -22,11 +24,15 @@ map_so_ii( \item{theme}{character, choice for the theme (if any)} -\item{bar}{logical, should a bar be plotted} +\item{bar}{logical, should a bar be plotted for the dataset} \item{path}{character, the name of the file to save the plot} -\item{gaspar_year}{character, the year chosen for gaspar theme} +\item{legend_theme}{logical, should a legend be plotted for the theme} + +\item{year}{character, the year chosen for some themes (catnat, population)} + +\item{hazard}{character, type of hazard chosen (if any). See details.} \item{...}{some parameters that will be used by plot (from sf)} } @@ -36,6 +42,9 @@ Nothing useful. \description{ Plot a thematic map of so-ii } +\details{ +hazard must be chosen in c("inondation", "submersion", "nappe"). +} \examples{ \dontrun{ diff --git a/geau/man/so_ii_catnat.Rd b/geau/man/so_ii_catnat.Rd new file mode 100644 index 0000000..8fd9e90 --- /dev/null +++ b/geau/man/so_ii_catnat.Rd @@ -0,0 +1,25 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/data.r +\docType{data} +\name{so_ii_catnat} +\alias{so_ii_catnat} +\title{Number of Cat Nat events for the municipalities of so-ii} +\format{ +array with 3 dimensions +\describe{ +\item{first}{commune as in so_ii_scope} +\item{second}{year of Cat Nat events} +\item{third}{type of hazard} +} +} +\source{ +\url{https://www.georisques.gouv.fr/donnees/bases-de-donnees/base-gaspar} +} +\usage{ +so_ii_catnat +} +\description{ +A dataset containing the number of Cat Nat events (linked to flood) by year +and so-ii municipality according to the GASPAR database. +} +\keyword{datasets} diff --git a/geau/man/so_ii_gaspar.Rd b/geau/man/so_ii_gaspar.Rd deleted file mode 100644 index dcf936d..0000000 --- a/geau/man/so_ii_gaspar.Rd +++ /dev/null @@ -1,17 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/data.r -\docType{data} -\name{so_ii_gaspar} -\alias{so_ii_gaspar} -\title{Flood frequency for the municipalities of so-ii} -\format{ -matrix 78 rows, 41 variables -} -\usage{ -so_ii_gaspar -} -\description{ -A dataset containing the flood frequency by year and so-ii municipality -according to the GASPAR database. -} -\keyword{datasets} diff --git a/geau/man/so_ii_population.Rd b/geau/man/so_ii_population.Rd new file mode 100644 index 0000000..e2fd737 --- /dev/null +++ b/geau/man/so_ii_population.Rd @@ -0,0 +1,23 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/data.r +\docType{data} +\name{so_ii_population} +\alias{so_ii_population} +\title{Population for so-ii} +\format{ +numeric matrix +\describe{ +\item{row}{commune as in so_ii_scope} +\item{column}{year} +} +} +\source{ +\url{https://www.insee.fr/fr/statistiques/2522602} +} +\usage{ +so_ii_population +} +\description{ +A dataset containing the population of commune in so-ii according to INSEE. +} +\keyword{datasets} diff --git a/map_so_ii.rmd b/map_so_ii.rmd index 870f96a..d6d6a50 100644 --- a/map_so_ii.rmd +++ b/map_so_ii.rmd @@ -16,13 +16,17 @@ pch = 21 # Legend definition dataset_legend = list( title = "Enquêtes du REX 19 septembre 2020", - legend = c("Agriculteurs", "Habitants membre ROI"), - pch = 21, + legend = c("Agriculteur", "Habitant"), + pch = pch, pt.bg = c("deeppink4", "cornflowerblue"), - pt.cex = 1.4 + pt.cex = cex ) -map_so_ii(dataset, dataset_legend, path = "toto.pdf", bg = bg, cex = cex, col = col, pch = pch) -map_so_ii(dataset, dataset_legend, path = "toto.png", bg = bg, cex = cex, col = col, pch = pch) -map_so_ii(dataset, dataset_legend, path = "toto.pdf", bg = bg, pch = 22) -map_so_ii(dataset, dataset_legend, path = "toto.pdf", bg = bg, pch = 22, theme = "gaspar") \ No newline at end of file +map_so_ii(dataset, dataset_legend, bg = bg, pch = pch, theme = "clc", legend_theme = TRUE) +map_so_ii(dataset, dataset_legend, bg = bg, pch = pch, theme = "catnat", year = 2020, legend_theme = TRUE) +map_so_ii(dataset, dataset_legend, bg = bg, pch = pch, theme = "catnat", year = 2020, hazard = "nappe", legend_theme = TRUE) +map_so_ii(dataset, dataset_legend, bg = bg, pch = pch, theme = "population", legend_theme = TRUE) + +map_so_ii(dataset, dataset_legend, path = "rex-clc.pdf", bg = bg, pch = pch, theme = "clc", year = 2020, legend_theme = TRUE) +map_so_ii(dataset, dataset_legend, path = "rex-catnat.pdf", bg = bg, pch = pch, theme = "catnat", year = 2020, legend_theme = TRUE) +map_so_ii(dataset, dataset_legend, path = "rex-population.pdf", bg = bg, pch = pch, theme = "population", legend_theme = TRUE) \ No newline at end of file diff --git a/script/gaspar.R b/script/gaspar.R new file mode 100644 index 0000000..07c31a5 --- /dev/null +++ b/script/gaspar.R @@ -0,0 +1,89 @@ +# Functions + +plot_chronicle = function(catnat, file_path = "catnat-chronicle.pdf") { + year.month = format(catnat[["date.start"]], "%Y-%m") + n.ym = table(year.month) + d.ym = as.Date(paste(names(n.ym), "01", sep = "-")) + + pdf(file_path, width = 20, height = 10) + plot(d.ym, as.integer(n.ym), type = "h", xaxt = "n", xlab = "", ylab = "n", col = "royalblue3") + axis.Date(1, format = "%Y-%m", las = 2, at = d.ym) + axis.Date(1, format = "%Y-%m", las = 2, label = FALSE, + at = seq(range(d.ym)[1], range(d.ym)[2], by = "month")) + dev.off() +} + +plot_month = function(catnat, file_path = "catnat-month.pdf") { + month = format(seq(as.Date("2020-01-01"), length.out = 12, by = "month"), "%m") + month = table(factor(format(catnat[["date.start"]], "%m"), levels = month)) + + pdf(file_path, width = 20, height = 10) + barplot(height = month, ylab = "n", xlab = "month", col = "royalblue3") + dev.off() +} + +# Data + +## Preparing files & version (today) + +today = as.character(Sys.Date()) +dir.create("data-common/data/gaspar/archive", showWarnings = FALSE) +archive = sprintf("data-common/data/gaspar/archive/gaspar-%s", today) + +## Download uptodate data + +utils::download.file( + url = "https://files.georisques.fr/GASPAR/gaspar.zip", + destfile = file.path(sprintf("%s.zip", archive)), + method = "wget") + +utils::unzip(sprintf("%s.zip", archive), exdir = archive) +unlink(archive, recursive = TRUE) +catnat = rio::import(file.path(archive, "catnat_gaspar.csv"))[-c(1, 10)] + +## Formating data + scope + +names(catnat) = c( + "commune", + "commune_name", + "alea_code", + "alea_jo", + "date.start", + "date.end", + "date.arrete", + "date.jo" +) +# write.csv2(unique(catnat[c("alea_code", "alea")]), "lib_risque_jo.csv", row.names = FALSE) +# catnat = catnat[ grep("nondation", catnat[["alea"]]), ] + +so_ii_scope = geau::so_ii_scope +catnat_so_ii = merge( + catnat[ catnat[["commune"]] %in% so_ii_scope, ], + read.csv2("data-common/so-ii/gaspar/catnat_alea_jo.csv") +) +write.csv2( + catnat_so_ii, + sprintf("data-common/so-ii/gaspar/catnat-%s.csv", today), + row.names = FALSE +) + +alea_scope = c("inondation", "nappe", "submersion") +catnat_so_ii = catnat_so_ii[ catnat_so_ii[["alea"]] %in% alea_scope, ] +catnat_so_ii[["commune"]] = factor( + catnat_so_ii[["commune"]], + levels = so_ii_scope +) +catnat_so_ii[["alea"]] = factor( + catnat_so_ii[["alea"]], + levels = alea_scope +) +# Treatments + +plot_chronicle(catnat, "figure/catnat-france-chronicle.pdf") +plot_month(catnat, "figure/catnat-france-month.pdf") + +plot_chronicle(catnat_so_ii, "catnat-so-ii-chronicle.pdf") +plot_month(catnat_so_ii, "catnat-so-ii-month.pdf") + +write.csv2(catnat_year, sprintf("data-common/so-ii/gaspar/catnat_year_n-%s.csv", today)) +write.csv2(catnat_month, sprintf("data-common/so-ii/gaspar/catnat_month_n-%s.csv", today)) \ No newline at end of file -- GitLab