Exercice 1 - manipuler des objets sf

Créer un objet contenant les points de p qui intersectent le polygone a, à partir du code suivant :

library(sf)
library(tidyverse)
# polygone (a - orange)
a_poly <- st_polygon(list(rbind(c(-1, -1), c(1, -1), c(1, 1), c(-1, -1))))
a <- st_sfc(a_poly)
# multi-points (p - noirs)
p_matrix <- matrix(c(0.5, 1, -1, 0, 0, 1, 0.5, 1), ncol = 2)
p_multi <- st_multipoint(x = p_matrix)
p <- st_cast(st_sfc(p_multi), "POINT")

Résultat attendu :

#> Simple feature collection with 2 features and 0 fields
#> Geometry type: POINT
#> Dimension:     XY
#> Bounding box:  xmin: 0.5 ymin: 0 xmax: 1 ymax: 1
#> CRS:           NA
#>               p
#> 1 POINT (0.5 0)
#> 2   POINT (1 1)

Exercice 2 : exploitation des données DVF en API

Le but de cet exercice va être d’exploiter les données DVF sur les transactions immobilières dans l’ancien et la carte des quartiers de Nantes pour obtenir des indicateurs des transactions de logements par quartier.
On va utiliser pour DVF l’API mise en place par Christian Quest : http://api.cquest.org/dvf.

## Activation des packages
library(httr)
library(jsonlite)
library(sf)
library(tidyverse)
get_dvf <- GET("http://api.cquest.org/dvf?code_commune=44109")
dvf_content <- content(get_dvf, "text", encoding = "UTF-8")
dvf_json <- fromJSON(dvf_content)$resultats %>%
  # On ne garde que les données avec une géolocalisation valide, un prix et une surface renseignés.
  filter(!is.na(lon), !is.na(lat), !is.na(valeur_fonciere), !is.na(surface_relle_bati))
dvf <- st_as_sf(dvf_json, coords = c("lon", "lat"), crs = 4326)
quartier_nantes <- st_read("https://data.nantesmetropole.fr/explore/dataset/244400404_quartiers-communes-nantes-metropole/download/?format=geojson&disjunctive.libcom=true&refine.libcom=Nantes&timezone=Europe/Berlin&lang=fr")
quartier_nantes <- st_set_crs(quartier_nantes, 4326)

On veut produire les infos suivantes par quartier et année pour les ventes de logements (maisons et d’appartements) :

  • Volume de ventes (nb)
  • Pourcentage de maisons dans les ventes
  • Prix moyen au m2 par type de bien

Résultat attendu :

#> Rows: 66
#> Columns: 8
#> $ quartier            <chr> "Ile de Nantes", "Ile de Nantes", "Ile de Nantes",…
#> $ annee_mutation      <dbl> 2014, 2015, 2016, 2017, 2018, 2019, 2014, 2015, 20…
#> $ nb_ventes           <dbl> 255, 346, 405, 464, 475, 221, 212, 203, 196, 224, …
#> $ pourcentage_maison  <dbl> 1.960784, 2.312139, 2.962963, 1.293103, 1.263158, …
#> $ prix_m2_appartement <dbl> 4227.436, 2720.641, 3583.049, 3496.280, 3574.651, …
#> $ prix_m2_maison      <dbl> 3208.333, 2961.019, 19695.106, 3519.273, 4144.621,…
#> $ prix_m2_ensemble    <dbl> 4187.948, 2728.811, 4208.121, 3496.700, 3587.453, …
#> $ geometry            <POLYGON [°]> POLYGON ((-1.518491 47.2105..., POLYGON ((…

Exercice 3 ggplot chap 10 : Visualisation des données DVF en API

Avec les résultats de l’exercice 2, produire les cartes du nombre de ventes et du prix au m2 des maisons en 2019 par quartier de Nantes.

Résultats attendus :

Exercice 4 : Assemblage de cartes sur dvf

A partir des données dvf 2014 et 2017 de la région Pays de la Loire contenues dans le package variousdata et les fonds de carte de COGiter, produire :

  • une carte régionale à l’EPCI comprenant :
    • un dégrade de couleur sur l’évolution des prix au m2 des maisons entre 2014 et 2017,
    • un rond sur le volume des prix au m2 des maisons,
  • un zoom sur les communes des principaux EPCI, c’est à dire une carte à la commune par EPCI de type Métropole (ME) ou Communauté urbaine (CU).

Puis, assembler ces différentes cartes sur un même graphique.

Il faut comme toujours procéder par étape.

Etape 1 : Calcul de l’évolution des prix et du nombre de ventes

  • A l’EPCI

  • A la commune

  • Intégration des données calculées aux fonds de carte

Etape 2 : Datavisualisation

  • Carte à l’EPCI de la région

  • Zooms à la commune

  • Assemblage

Exercice 5 : cartes pour le web

Adapter la carte régionale à l’EPCI de l’exercice 4, pour le web :

  • au survol d’un EPCI, afficher son nom, le prix au m2 et son évolution 2014-2017,
  • au survol du rond d’un EPCI, afficher son nom, le nb de ventes 2017.
#> Scanning ttf files in /usr/share/fonts/truetype/dejavu ...
#> Extracting .afm files from .ttf files...
#> Warning: To use the complete ggplot theme_gouv(), you need
#> to install the following fonts on your computer:
#> Marianne.
#> 
#> To install, see for instance:
#> https://www.howtogeek.com/192980/how-to-install-remove-and-manage-fonts-on-windows-mac-and-linux/
#> Run gouvdown::check_fonts_in_r() after fonts installation.