-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfonctions_carto.R
111 lines (85 loc) · 4.42 KB
/
fonctions_carto.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
## Script de fonctions utiles pour Col&Mon
# inspiration des scripts d'Helene Mathian
# 18-10-2019
# 1 - lecture des diocèses géometries =====
# attention utilisateur de windows les chemins d'accés sont differents
diocese <- function(cheminDioc = "data/Diocese/",
FicDioFond ="Contour_diocèse_France_1317L93.shp"){
# il prend comme argument le chemin du fichier et son nom
# par defaut je prend les chemin relatif de ma struture de dossier
# on verifie que l'on a sf
# sinon on l'install avec tous
if(require("sf")==FALSE)
install.packages("sf", dependencies=c("Depends", "Suggests"))
# un st_read avec une option d'encodage qui prend les deux argument nom du fichier et
# localisation
DioFond.shp <- st_read(dsn = paste(cheminDioc, FicDioFond, sep=""),
stringsAsFactors = FALSE,
options = "ENCODING=latin1")
st_crs(DioFond.shp) <- 2154 # le bon crs
colnames(DioFond.shp)[2] <- "DioceseNom" # un changement de nom de var
return(DioFond.shp)
}
print("diocese() permet de charger les diocèses")
# 2. initialisation de mapview et carto rapide ====
# mapview semble être un wrapper de leaflet, je ne sais pas si c'est sur la version js ou la version R
# qui elle meme est une API de la version js
# cette fonction necessite RColorBrewer et permet d'initiliser mapview
# elle prends deux plateformes comme fonds
# d'autres sont possibles cf :https://r-spatial.github.io/mapview/articles/articles/mapview_03-options.html
## une fonction d'initialisation de mapview un peu comme leaflet()
initmapview <- function(ncol = 3, palBrew = "Set2") #la fonction prends deux arguments
# ncol est le nombre de couleurs et palBrew est le set de couleur
# de RColorBrewer par ex "Set1"ou "set2" cf display.brewer.all()
# attention ces sets ne sont souvent pas fait pour beaucoup de couleurs
{
# chargement des libraries et dependance
if(require("mapview") == FALSE)
install.packages("mapview", dependencies=c("Depends", "Suggests"))
if(require("RColorBrewer") == FALSE)
install.packages("RColorBrewer", dependencies=c("Depends", "Suggests"))
mapview::mapviewPalette()
mapview::mapviewOptions(basemaps = c("OpenStreetMap","Esri.WorldImagery"),
raster.palette = grey.colors,
vector.palette = colorRampPalette(brewer.pal(ncol,palBrew)),
na.color = "magenta", # les Na
layers.control.pos = "topleft") # ou on met/activ les layers
}
print("initmapview() initialise mapview avec un ncol et un set de couleur a def en args")
# # il faut decouper cette fonction
#
#
#
# filter(ImpSel,!is.na(lat)) %>%
# st_as_sf(coords = c("lng", "lat"), crs = 4326) %>%
# st_transform(2154)
#
## une fonction de production de carte rapide
# Impsel.shp prend un objet spatial plutot de type sf
# factor_color est un vecteur/factor qui propose une couleur en fonction d'un factor
mapImplVite <- function(ImpSel.shp, Vcolor)
{
# initialisation de mapview
initmapview()
# affichage de
mapview::mapview(diocese.shp, color = "gray75", lwd = 1, # couleur et type du contour
col.regions = "red", alpha = 0.5, # couleur du fond et type
layer.name = "Diocèses" ) +
if (Vcolor=="") {mapview::mapview(ImpSel.shp)}
else { mapview::mapview(ImpSel.shp, zcol = Vcolor)}
}
# 3. fonctions d'expliorations des données ====
# fonction de verif
# elle demande d'avoir un objet relation.dat correspondant à un subset de T0NewsXX.rds
# la fonction prends juste l'idimplantation
# c'est surtout utils pour faire de la verification
verif_relation <- function(num_relation) {
relation.dat[relation.dat$idimplantation %in% num_relation,]}
print("verif_relation prend une idimplantation ou plusieurs et retourne un subset dans relation.dat pour cet idimplantation")
verif_relationv2 <- function(num_idimplantation, num_fklinked = NULL) {
if (is.null(num_fklinked)) {
relation.dat[relation.dat$idimplantation %in% num_idimplantation ,]}
else
relation.dat[relation.dat$idimplantation %in% num_idimplantation & relation.dat$fklinked_implantation %in% num_fklinked,]
}
print("verif_relationv2 prend une idimplantation ou plusieurs et une fklinked et retourne un subset dans relation.dat pour ces couples")