Skip to content

Commit

Permalink
minor update
Browse files Browse the repository at this point in the history
  • Loading branch information
rCarto committed Dec 7, 2023
1 parent 3c0171a commit 19580e8
Show file tree
Hide file tree
Showing 74 changed files with 11,752 additions and 493 deletions.
2 changes: 1 addition & 1 deletion 02_import_sf.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ com <- st_read("data/lot.gpkg", layer = "communes")
class(com)
```

Une couche géographique assignée dans un un objet avec la fonction `st_read()` est automatiquement stockée dans un objet `sf`.
La fonction `st_read()` importe les couches géographiques au format `sf`.

::: {.callout-note}
## Geopackage
Expand Down
10 changes: 5 additions & 5 deletions 04_projection_sf.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -24,17 +24,17 @@ st_crs(com)

La fonction `st_transform()` permet de changer le système de coordonnées d'un objet `sf`, de le reprojeter.

```{r, proj2}
```{r proj2}
#| layout-ncol: 2
#| fig-width: 4
#| fig-height: 4
mf_map(com, expandBB = c(0, .12, 0, 0))
mf_graticule(x = com)
mf_title("RGF93 / Lambert-93")
mf_title("RGF93 / Lambert-93")
# changement de projection
com_reproj <- st_transform(com, "EPSG:3035")
mf_map(com_reproj, expandBB = c(0, .12, .0, 0))
mf_graticule(x = com_reproj)
mf_title("ETRS89-extended / LAEA Europe")
Expand Down
48 changes: 35 additions & 13 deletions 07_operation_geom_sf.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -30,29 +30,50 @@ mf_map(dep_46, col = NA, border = "red", lwd = 2, add = TRUE)

## Agréger des polygones en fonction d'une variable

* Avec la librairie `dplyr`
* Avec la bibliothèque `dplyr`
```{r aggreg2, nm=TRUE, message = FALSE}
library(dplyr)
com_u <- com |>
group_by(STATUT) |>
summarise(POPULATION = sum(POPULATION))
group_by(STATUT) |>
summarise(POPULATION = sum(POPULATION))
```

* Sans `dplyr`

```{r aggreg3, nm=TRUE}
# variable servant à agréger les polygones
i <- com$STATUT
com_u <- st_sf(
STATUT = tapply(X = i , INDEX = i, FUN = head, 1),
POPULATION = tapply(X = com$POPULATION , INDEX = i, FUN = sum),
geometry = tapply(X = st_geometry(com), INDEX = i, FUN = st_union),
STATUT = tapply(X = com$STATUT , INDEX = i, FUN = head, 1),
POPULATION = tapply(X = com$POPULATION , INDEX = i, FUN = sum),
geometry = tapply(X = com , INDEX = i, FUN = st_union),
crs = st_crs(com)
)
```


:::{.callout-note}
## Explication de la méthode d'agrégation

`tapply(X, INDEX, FUN)` permet d'aggréger une variable en fonction d'une autre.
Il faut indiquer la variable à agréger **X**, la variable servant à agréger **INDEX** et la manière d'agréger (une fonction) **FUN**.

Ici par exemple nous calculons la somme des population des communes en fonction de leur statut :
```{r tapply1}
tapply(X = com$POPULATION, INDEX = com$STATUT, FUN = sum)
```

`tapply()` fonctionne également avec les objets `sf` et `sfc`:
```{r}
st_sfc(tapply(com, com$STATUT, st_union))
```

Nous pouvons ensuite combiner plusieurs appels `tapply()` à l'interieur d'un appel à `st_sf()` en ajoutant également les informations sur le système de coordonnées.
:::



## Construire une zone tampon

Expand All @@ -72,9 +93,7 @@ En utilisant la fonction `st_intersection()`, on peut découper une couche par u
```{r intersect2}
# création d'une zone tampon autour du centroid de la commune de Gramat
# en utilisant le pipe
zone <- st_geometry(gramat) |>
st_centroid() |>
st_buffer(10000)
zone <- st_geometry(gramat) |> st_centroid() |> st_buffer(10000)
mf_map(com)
mf_map(zone, border = "red", col = NA, lwd = 2, add = TRUE)
Expand Down Expand Up @@ -174,12 +193,15 @@ Nous pouvons ensuite utiliser la fonction `aggregate()` pour agréger les altitu


```{r agval2}
alti_min <- aggregate(x = list(alt_min = inter$elevation),
by = list(INSEE_COM = inter$INSEE_COM),
# x : la variable que l'on veut agréger
# by : la variable qui servira à agréger
# FUN : la fonction à utiliser lors de l'agrégation
alti_min <- aggregate(x = list(alt_min = inter$elevation),
by = list(INSEE_COM = inter$INSEE_COM),
FUN = "min")
alti_max <- aggregate(x = list(alt_max = inter$elevation),
by = list(INSEE_COM = inter$INSEE_COM),
alti_max <- aggregate(x = list(alt_max = inter$elevation),
by = list(INSEE_COM = inter$INSEE_COM),
FUN = "max")
head(alti_max, n = 3)
Expand Down
11 changes: 4 additions & 7 deletions 08_mesures_sf.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,13 @@

## Créer une matrice de distances

La fonction `st_distance()` permet de calculer une matrice de distance entre deux couches de points.
Si le système de projection du jeu de données est renseigné, les distances sont exprimées dans l'unité de mesure de la projection (le plus souvent en mètres).
```{r distance, nm=TRUE}
```{r distance}
library(sf)
com <- st_read("data/lot.gpkg", layer = "communes", quiet = TRUE)
com <- st_read("data/lot.gpkg", layer = "communes", quiet = TRUE, agr = "constant")
# transformation de la couche com en couche de points
com_c <- st_centroid(com)
```

La fonction `st_distance()` permet de calculer une matrice de distance entre deux couches de points.

```{r distance2, nm=TRUE}
mat <- st_distance(x = com_c, y = com_c)
mat[1:5,1:5]
```
Expand Down
2 changes: 1 addition & 1 deletion 14_modif_zone_terra.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ elev_lower <- resample(x = elev,
method = "bilinear")
plot(elev_lower,
main = "Taille des cellules = 1000m\nMéthode de ré-échantillonnage bilinéaire")
main = "cellsize = 1000m - ré-échantillonnage bilinéaire")
```


Expand Down
11 changes: 6 additions & 5 deletions 15_algebre_spatial_terra.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,8 @@ plot(elev_med, main = "Elevation - median value")

La reclassification des valeurs d'un raster peut aussi bien être utilisée pour discrétiser des données quantitatives que pour catégoriser des modalités qualitatives.

Cela permet par exemple de répartir les [44 postes de la nomenclature CLC](https://www.statistiques.developpement-durable.gouv.fr/corine-land-cover-0) selon les 5 grands types d'occupation du territoire : territoires artificialisés, agricoles, forêts et milieux semi-naturels, zones humides et surfaces en eau. Pour cela, il est d'abord nécessaire de construire la table (matrice) de correspondance avec la fonction `matrix()`.
Cela permet par exemple de répartir les [44 postes de la nomenclature CLC](https://www.statistiques.developpement-durable.gouv.fr/corine-land-cover-0) selon les 5 grands types d'occupation du territoire : territoires artificialisés, agricoles, forêts et milieux semi-naturels, zones humides et surfaces en eau. Pour cela, il est d'abord nécessaire de construire une table de correspondance avec la fonction `matrix()`.

```{r reclass_2}
reclassif <- matrix(c(100, 199, 1,
200, 299, 2,
Expand Down Expand Up @@ -161,7 +162,7 @@ mon_focal <- matrix(1, nrow = 9, ncol = 9)
mon_focal
```

La fonction `focal()` permet de ensuite de réaliser l'analyse souhaitée. Par exemple : le calcul de la moyenne des valeurs de fenêtre spatiale determinée, pour chaque cellule du raster.
La fonction `focal()` permet ensuite de réaliser l'analyse souhaitée. Par exemple : le calcul de la moyenne des valeurs dans une fenêtre spatiale determinée, pour chaque cellule du raster.

```{r op_focal_3}
elev_focal_mean <- focal(elev, w = mon_focal, fun = mean)
Expand All @@ -170,7 +171,7 @@ elev_focal_mean <- focal(elev, w = mon_focal, fun = mean)
```{r op_focal_5}
#| layout-ncol: 2
plot(elev, main = "raster de départ")
plot(elev_focal_mean, main="résultat : focal 9 x 9, sans pondération particulière")
plot(elev_focal_mean, main="résultat : focal 9 x 9, pondération uniforme")
```


Expand All @@ -187,7 +188,7 @@ La fonction `terrain()` permet de réaliser des analyses focales spécifiques au
- ***TRI*** = calcul de l'indice de la variabilité de l'élévation;
- ***flowdir*** = calcul du sens d'écoulement de l'eau.

Exemples avec le calcul des pentes (*slope*), c'est à dire leur inclinaison en degré.
Exemples avec le calcul des pentes (*slope*), c'est à dire leur inclinaison en degrés.
```{r op_focal_6}
slope <- terrain(elev, "slope",
Expand All @@ -201,7 +202,7 @@ plot(slope)

## Opérations globales

![source : [https://gisgeography.com/map-algebra-global-zonal-focal-local/](https://gisgeography.com/map-algebra-global-zonal-focal-local/)](img/op_global.png)
![[gisgeography.com](https://gisgeography.com/map-algebra-global-zonal-focal-local/)](img/op_global.png)

Les opérations globales permettent de résumer les valeurs matricielles d'une ou plusieurs matrices.

Expand Down
2 changes: 1 addition & 1 deletion 18_OSM_interactif.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ m

### `mapview`
<img src="img/logo_mapview.gif" align="right" width="150"/>
`mapview` s'appuie sur `leaflet` pour créer des carte interactive, sont utilisation est plus simple et sa documentation est un peu dense.
`mapview` s'appuie sur `leaflet` pour créer des carte interactive, sont utilisation basique est plus simple bien que sa documentation ne soit pas vraiment facile à aborder.

```{r}
#| cache: false
Expand Down
4 changes: 2 additions & 2 deletions 1999_georeferencement.qmd
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Géoréferencement
# Géoréferencement et digitalisation

## Géocoder des adresses

Expand Down Expand Up @@ -69,6 +69,6 @@ mf_map(place_sf, pch = 4, cex = 2,
## Digitalisation

Le package `mapedit` [@R-mapedit] permet de digitaliser des fonds de carte directement dans R.
Bien que pouvant se révéler pratique dans certains cas, ce package ne saurait se substituer aux fonctionnalités d'un SIG pour les tâches de digitalisation importantes.
Mais disons le franchement, bien que pouvant se révéler pratique dans certains cas, ce package ne saurait se substituer aux fonctionnalités d'un SIG pour les tâches de digitalisation importantes.

![From [`mapedit` website](https://r-spatial.org/r/2019/03/31/mapedit_leafpm.html)](img/mapedit-leafpm-1.gif)
19 changes: 4 additions & 15 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,12 @@
# [Géomatique avec R](https://rcarto.github.io/geomatique_avec_r/) <img src="img/layer-group-solid.svg" width="120" align="right"/>

Ce manuel est destiné tant aux utilisateurs de R souhaitant mettre en place traitements de l'information géographique qu'aux utilisateurs souhaitant utiliser R pour réaliser les taches qu'ils réalisent habituellement avec un SIG.
Ce manuel est destiné tant aux utilisateurs de R souhaitant mettre en place des traitements de données spatiales qu'aux utilisateurs souhaitant utiliser R pour réaliser les taches qu'ils réalisent habituellement avec un SIG.
Les principales étapes du traitement de l'information géographiques y sont abordées.
L'accent est porté sur le traitement des données vectorielles mais une partie est tout de même dédiée aux données raster.

**Comment utiliser le manuel**
Les données utilisées dans ce document sont stockées dans un projet RStudio ([ici](https://github.com/rCarto/geomatique_avec_r/raw/main/docs/geodata.zip).
Vous devez le télécharger puis le décompresser sur votre machine. Il vous sera ensuite possible de tester l'ensemble des manipulations proposées dans ce document au sein du projet **geodata**.

**Contribution et feedback**
Vous pouvez nous envoyer vos remarques et suggestions en [postant une *issue*](https://github.com/rCarto/geomatique_avec_r/issues) sur le [dépôt GitHub](https://github.com/rCarto/geomatique_avec_r) de ce document.


**Contexte**
Ce manuel a été initialement conçu pour accompagner le cours "Cartographie avec R"
du Master 2 Géomatique, géodécisionnel, géomarketing et multimédia (G2M) de
Expand All @@ -20,6 +15,7 @@ Un deuxième manuel centré sur la cartographie est disponible ici :
[Cartographie avec R](https://rcarto.github.io/cartographie_avec_r/).



![](img/by-nc-sa.png)
La version en ligne de ce document est sous licence [Creative Commons Attribution-NonCommercial-ShareAlike 4.0](http://creativecommons.org/licenses/by-nc-sa/4.0/).

Expand All @@ -30,12 +26,5 @@ La version en ligne de ce document est sous licence [Creative Commons Attributio

Giraud, T. et Pecout, H. (2023). Géomatique avec R. https://doi.org/10.5281/zenodo.5906212

```
@misc{
author = {Giraud, Timothée and Pecout, Hugues},
doi = {10.5281/zenodo.5906212},
title = {{Géomatique avec R}},
url = {https://rcarto.github.io/geomatique_avec_r/},
year = {2023}
}
```


4 changes: 2 additions & 2 deletions docs/01_package_sf.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>

<meta charset="utf-8">
<meta name="generator" content="quarto-1.3.433">
<meta name="generator" content="quarto-1.3.450">

<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">

Expand Down Expand Up @@ -299,7 +299,7 @@
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="./1999_georeferencement.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">A</span>&nbsp; <span class="chapter-title">Géoréferencement</span></span></a>
<span class="menu-text"><span class="chapter-number">A</span>&nbsp; <span class="chapter-title">Géoréferencement et digitalisation</span></span></a>
</div>
</li>
<li class="sidebar-item">
Expand Down
11 changes: 5 additions & 6 deletions docs/02_import_sf.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>

<meta charset="utf-8">
<meta name="generator" content="quarto-1.3.433">
<meta name="generator" content="quarto-1.3.450">

<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">

Expand Down Expand Up @@ -313,7 +313,7 @@
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="./1999_georeferencement.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">A</span>&nbsp; <span class="chapter-title">Géoréferencement</span></span></a>
<span class="menu-text"><span class="chapter-number">A</span>&nbsp; <span class="chapter-title">Géoréferencement et digitalisation</span></span></a>
</div>
</li>
<li class="sidebar-item">
Expand Down Expand Up @@ -372,13 +372,12 @@ <h2 data-number="2.1" class="anchored" data-anchor-id="import"><span class="head
<div class="cell">
<div class="sourceCode cell-code" id="cb1"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="fu">library</span>(sf)</span></code><button title="Copier vers le presse-papier" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-stderr">
<pre><code>#&gt; Linking to GEOS 3.11.1, GDAL 3.6.4, PROJ 9.1.1; sf_use_s2() is TRUE</code></pre>
<pre><code>#&gt; Linking to GEOS 3.11.1, GDAL 3.6.2, PROJ 9.1.1; sf_use_s2() is TRUE</code></pre>
</div>
<div class="sourceCode cell-code" id="cb3"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a>com <span class="ot">&lt;-</span> <span class="fu">st_read</span>(<span class="st">"data/lot.gpkg"</span>, <span class="at">layer =</span> <span class="st">"communes"</span>)</span></code><button title="Copier vers le presse-papier" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-stdout">
<pre><code>#&gt; Reading layer `communes' from data source
#&gt; `/home/hugues/Documents/5.Cours/geomatique_avec_r/data/lot.gpkg'
#&gt; using driver `GPKG'
#&gt; `/home/tim/Documents/prj/geomatique_avec_r/data/lot.gpkg' using driver `GPKG'
#&gt; Simple feature collection with 313 features and 12 fields
#&gt; Geometry type: MULTIPOLYGON
#&gt; Dimension: XY
Expand All @@ -392,7 +391,7 @@ <h2 data-number="2.1" class="anchored" data-anchor-id="import"><span class="head
<pre><code>#&gt; [1] "sf" "data.frame"</code></pre>
</div>
</div>
<p>Une couche géographique assignée dans un un objet avec la fonction <code>st_read()</code> est automatiquement stockée dans un objet <code>sf</code>.</p>
<p>La fonction <code>st_read()</code> importe les couches géographiques au format <code>sf</code>.</p>
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
Expand Down
4 changes: 2 additions & 2 deletions docs/03_affichage_sf.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>

<meta charset="utf-8">
<meta name="generator" content="quarto-1.3.433">
<meta name="generator" content="quarto-1.3.450">

<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">

Expand Down Expand Up @@ -335,7 +335,7 @@
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="./1999_georeferencement.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">A</span>&nbsp; <span class="chapter-title">Géoréferencement</span></span></a>
<span class="menu-text"><span class="chapter-number">A</span>&nbsp; <span class="chapter-title">Géoréferencement et digitalisation</span></span></a>
</div>
</li>
<li class="sidebar-item">
Expand Down
Loading

0 comments on commit 19580e8

Please sign in to comment.