-
Notifications
You must be signed in to change notification settings - Fork 6
/
_02-ex.Rmd
115 lines (95 loc) · 4.98 KB
/
_02-ex.Rmd
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
111
112
113
114
```{r 02-ex-e0, message=FALSE}
library(sf)
library(spData)
library(terra)
```
E1. Utilisez `summary()` sur la colonne géométrie de l'objet de données `world` qui est inclus dans le paquet **spData**. Qu'en déduisez vous sur :
- Son type de géométrie ?
- Le nombre de pays ?
- Son système de coordonnées et de référence (SCR) ?
```{r 02-ex-e1}
summary(world)
# - Son type de géométrie ?
# multipolygon
# - Le nombre de pays ?
# 177
# - Son système de coordonnées et de référence (SCR) ?
# epsg:4326
```
E2. Exécutez le code qui a "généré" la carte du monde dans la section 2.2.3 (Création de cartes de base).
Trouvez deux similitudes et deux différences entre l'image sur votre ordinateur et celle du livre.
- Que fait l'argument `cex` (voir `?plot`) ?
- Pourquoi le paramètre `cex` a-t-il été fixé à `sqrt(world$pop) / 10000` ?
- Bonus : expérimentez différentes façons de visualiser la population mondiale.
```{r 02-ex-e2}
plot(world["continent"], reset = FALSE)
cex = sqrt(world$pop) / 10000
world_cents = st_centroid(world, of_largest = TRUE)
plot(st_geometry(world_cents), add = TRUE, cex = cex)
# - Que fait l'argument `cex` (voir `?plot`) ?
# Il spécifie la taille des cercles
# - Pourquoi le paramètre `cex` a-t-il été fixé à `sqrt(world$pop) / 10000` ?
# Ainsi les cercles seront visibles pour les petits pays mais pas trop grands pour les grands pays, aussi parce que la surface augmente comme une fonction linéaire de la racine carrée du diamètre défini par `cex`.
# - Bonus : expérimentez différentes manières de visualiser la population mondiale.
plot(st_geometry(world_cents), cex = world$pop / 1e9)
plot(st_geometry(world_cents), cex = world$pop / 1e8)
plot(world["pop"])
plot(world["pop"], logz = TRUE)
# Similitudes : étendue globale, schéma de couleurs, taille relative des cercles.
#
# Différences : projection (l'Antarctique est beaucoup plus petit par exemple), graticules, localisation des points dans les pays.
#
# Pour comprendre ces différences, relisez, exécutez et expérimentez avec différentes valeurs d'arguments dans ce script : https://github.com/Robinlovelace/geocompr/raw/main/code/02-contpop.R
#
# `cex` fait référence au diamètre des symboles représentés, comme expliqué par la page d'aide `?graphics::points`. C'est l'acronyme de "Chacter symbol EXpansion"
# Elle a été fixée au carré de la population divisé par 10 000 parce que a) sinon les symboles ne tiendraient pas sur la carte et b) pour que la surface du cercle soit proportionnelle à la population.
```
E3. Utilisez `plot()` pour créer des cartes du Nigeria et les pays avoisinants (voir section 2.2.3).
- Ajustez les arguments `lwd`, `col` et `expandBB` de `plot()`.
- Défi! : lisez la documentation de `text()` et annotez la carte.
```{r 02-ex-e3}
nigeria = world[world$name_long == "Nigeria", ]
plot(st_geometry(nigeria), expandBB = c(0, 0.2, 0.1, 1), col = "gray", lwd = 3)
plot(world[0], add = TRUE)
world_coords = st_coordinates(world_cents)
text(world_coords, world$iso_a2)
# réponse alternative:
nigeria = world[world$name_long == "Nigeria", ]
africa = world[world$continent == "Africa", ]
plot(st_geometry(nigeria), col = "white", lwd = 3, main = "Nigeria in context", border = "lightgrey", expandBB = c(0.5, 0.2, 0.5, 0.2))
plot(st_geometry(world), lty = 3, add = TRUE, border = "grey")
plot(st_geometry(nigeria), col = "yellow", add = TRUE, border = "darkgrey")
a = africa[grepl("Niger", africa$name_long), ]
ncentre = st_centroid(a)
ncentre_num = st_coordinates(ncentre)
text(x = ncentre_num[, 1], y = ncentre_num[, 2], labels = a$name_long)
```
E4. Créez un objet `SpatRaster` vide appelé `mon_raster` avec 10 colonnes et 10 lignes.
Attribuez des valeurs aléatoires entre 0 et 10 au nouveau raster et représentez-le.
```{r 02-ex-e4, message = FALSE}
mon_raster = rast(ncol = 10, nrow = 10,
vals = sample(0:10, size = 10 * 10, replace = TRUE))
plot(mon_raster)
```
E5. Lisez le fichier `raster/nlcd.tif` du paquet **spDataLarge**.
Quel type d'information pouvez-vous obtenir sur les propriétés de ce fichier ?
```{r 02-ex-e5, message = FALSE}
nlcd = rast(system.file("raster/nlcd.tif", package = "spDataLarge"))
dim(nlcd) # dimensions
res(nlcd) # résolution
ext(nlcd) # étendue
nlyr(nlcd) # nombre de couches
cat(crs(nlcd)) # SCR
```
E6. Regardez le SCR du fichier `raster/nlcd.tif` du paquet **spDataLarge**.
Quel type d'information pouvez-vous en tirer ?
```{r 02-ex-e6, message = FALSE}
cat(crs(nlcd))
```
```{asis, message = FALSE}
Le WKT ci-dessus décrit un système de coordonnées et de référence projetées à deux dimensions.
Il est basé sur l'ellipsoïde GRS 1980 avec le North American Datum 1983 et le méridien d'origine de Greenwich.
Il utilise la projection de Mercator transverse pour passer du système géographique au système de référence projeté (zone UTM 12N).
Son premier axe est lié à l'est, tandis que le second est lié au nord, et les deux axes ont des unités en mètres.
Le SRID du CRS ci-dessus est "EPSG:26912".
```