Introduction à l’analyse spatiale


Hugues Pecout

UMR8504 Géographie-Cités




Master II Géomatique, USSEIN

Analyse spatiale ?


« Analyse formalisée de la configuration et des propriétés de l’espace géographique, tel qu’il est produit et vécu par les sociétés humaines. »

Pumain D., Saint-Julien Th., 2010, Analyse spatiale - Localisations. Paris, Colin, Cursus, 162p


Une démarche « qui met l’accent sur l’identification de formes ou de structures spatiales, sur les relations entre les objets géographiques, sur les processus de changement. »

Feuillet et al., 2019


L’analyse spatiale est l’ensemble de théories et de méthodes permettant d’explorer, de modéliser et d’interpréter des phénomènes en tenant compte de leur localisation géographique et des relations spatiales entre entités.

→ Approche hypothético-déductive (démarche nomothétique).

Les fondamentaux

L’analyse spatiale :

  • S’appuie sur des données géoréférencées (avec des coordonnées dans l’espace);
  • Cherche à détecter des structures spatiales (clusters, gradients, ruptures);
  • Mobilise des outils de statistique, géomatique et modélisation.

Un exemple historique : Épidémie de choléra (1854)


John Snow est un médecin britannique. Ces travaux sur la propagation du choléra dans le quartier de Soho à Londres en 1854 lui ont valu une place importante dans l’histoire de l’épidémiologie et de l’analyse spatiale.


Carte de J. Snow indiquant les décès cholériques (points) survenus en août et septembre 1854 dans le quartier de Soho →



John Snow va identifier la cause de l’épidémie de choléra en utilisant un procédé simple, mais innovant, qui repose sur le principe de fonctionnement de l’analyse spatiale…

Un exemple historique : Épidémie de choléra

John Snow va mettre en relation plusieurs couches d’information géographiques :

  • Un plan du quartier (rues)
  • La localisation des décès (résidence)
  • La localisation des pompes à eau


Un exemple historique : Épidémie de choléra

Cette mise en relation va lui permettre d’émettre une hypothèse sur la cause de l’épidémie.


Détail de la deuxième carte par points de Snow montrant l’ajout de la ligne d’équidistance. Cholera Inquiry Committee, Report on the Cholera Outbreak in the Parish of St. James, Westminster during the Autumn of 1854, Londres, Churchill, 1855, pp. 106-107.

Un exemple historique : Épidémie de choléra

Si John Snow avait utilisé un système d’information géographique….

Pourquoi faire ?


  • Comprendre la distribution des phénomènes
    Ex : Répartition et diffusion des maladies infectieuses

  • Détecter des relations spatiales
    Ex : Prix immobiliers vs proximité spatiales

  • Prendre en compte l’effet d’échelle et le contexte spatial
    Ex : Le chômage peut paraître homogène à l’échelle régionale mais très contrasté à l’échelle communale.

  • Aller au-delà des analyses classiques
    Ex : Des quartiers avec le même taux de criminalité peuvent avoir des dynamiques spatiales différentes (dispersion vs concentration).

  • Aider à la prise de décision
    Ex : Localisation d’un poste de secours

Analyser l’espace, c’est mieux comprendre, mieux expliquer et mieux agir sur les phénomènes complexes du monde réel.

Analyse spatiale ≠ géomatique



Analyse spatiale

=

Concept de la géographie
+
Statistique(s)
+
Cartographie
+
Outils de la géomatique

Notions théoriques fondamentales (I)

1er loi de la géographie de Waldo Tobler (1970)

« Tout est lié à tout, mais les choses proches sont plus liées que les choses éloignées. »

Loi fondamentale en analyse spatiale qui justifie l’utilisation d’outils qui prennent en compte l’emplacement.

Les phénomènes géographiques sont spatialement auto-corrélés. La proximité spatiale implique souvent une similarité : plus deux objets sont proches, plus ils ont de chances de partager des caractéristiques.


👉 Les prix de l’immobilier varient plus en fonction de la proximité immédiate que de tendances globales…

Notions théoriques fondamentales (II)

2ᵉ loi de Tobler (1999, moins formelle)

« Le phénomène spatial est plus intéressant lorsqu’il ne suit pas la première loi de Tobler. »

Sans prendre en compte cette 2ᵉ loi, on risquerait d’appliquer des interpolations ou des modèles inadaptés.

La plupart des phénomènes varient de manière continue dans l’espace (ex : température, densité de population…). Mais des discontinuités existent (ex : falaises, rivières, frontières administratives). Cette loi est un rappel que l’espace n’est pas toujours homogène ni sans rupture.


👉 Deux quartiers voisins mais très différents : Riche et faiblement peuplé vs pauvre et dense

Concepts et méthodes en analyse spatiale

On peut appliquer différents concepts et méthodes d’analyse spatiale en fonction de la nature des données étudiées. Par exemple :


  • Lieux et semis de points (données ponctuelles) : mesure de centre, de la dispersion, de concentration, de forme, de distance, de densité, d’interpolation, de potentiel…

  • Lien et réseau (données linéaires) : analyse de réseau/graphe…

  • Surfaces et régions (données surfaciques) : analyse de l’hétérogénéité, de homogénéité, calcul des discontinuités, de l’autocorrélation, discrétisation spatiale et régionalisation…

  • Interaction spatiale (matrice de flux) : (modélisation, flux dominants…)


La transformation géométrique des données étudiées et le changement d’échelle sont des étapes récurrentes en analyse spatiale.

Analyse spatiale (avec R)


Packages indispensables :

  • sf : Manipulation de vecteur, géotraitements
  • terra : Manipulation de raster, géotraitements
  • mapsf : Cartographie thématique


Package pour l’analyse de réseau :

  • igraph : Analyse de réseaux
  • sfnetworks : Analyse des réseaux géospatiaux
  • stplanr : Planification et de modélisation des transports

Divers packages pour l’analyse spatiale :

  • spatstat : Analyse statistique de semis de points
  • gstat : Variogram et Krigeage
  • rgeoda : Geoda avec R
  • GWmodel, spgwr : Geographically Weighted Models
  • potential : Modèle des potentiels de Stewart.
  • mapiso : Conversion Raster vers polygone
  • valh : Service de routage (OpenStreetMap)
  • osrm : Service de routage (OpenStreetMap)
  • distanamo : Création de cartogrammes de distance
  • ...


Exemple : analyse d’un semis de points


A. Collecte de données OpenStreetMap

Code
library(sf)
library(osmdata)
library(mapsf)

bbox_avignon <- getbb("Paris")
semis_points <-  bbox_avignon |> 
  opq(osm_types = "node")|>
  add_osm_feature(key = 'amenity', value = "restaurant") |>
  osmdata_sf() |>
  _$osm_points |>
  st_transform("EPSG:3857") |>
  mf_map(cex = 1)


B. Répartition du semis de point dans un maillage territorial

Code
# Import du découpage IRIS
iris <- st_read("data/paris.gpkg", layer = "IRIS", quiet = TRUE)

# Intersection poitn / maillage
inter <- st_intersects(iris, semis_points, sparse = TRUE)

# Nb de restaurant par IRIS
iris$nb_restaurant <- lengths(inter)

# Affichage
mf_map(iris, var = "nb_restaurant", type = "choro")


C. Répartition du semis de point dans une grille régulière

Code
# Création de la grille réguliére
grid <- st_make_grid(x = semis_points, cellsize = 500)

# Ajout d'un identifiant unique
grid <- st_sf(ID = 1:length(grid), geom = grid)


# Intersection points / grille
inter2 <- st_intersects(grid, semis_points, sparse = TRUE)

# Nombre de restaurants par carreau
grid$nb_restaurant <- lengths(inter2)

# Affichage
mf_map(grid, var = "nb_restaurant", 
       type = "choro", 
       breaks=c(0,1,5,10,20,40,max(grid$nb_restaurant)))


D. Densité (continue) d’un semis par la méthode de lissage par noyaux (KDE) :

Code
library(sf)
library(spatstat)

# Conversion du semi de point en objet "ppp"
p <- as.ppp(X = st_coordinates(semis_points), 
            W = as.owin(st_bbox(semis_points)))

# Calcul de la densité (KDE)
ds <- density.ppp(x = p, 
                  sigma = 300, 
                  eps = 10, 
                  positive = TRUE)

# Affichage
plot(ds)


Conversion de l’objet crée (img, package spatstat) en objet SpatRaster (package terra) :

Code
library(terra)

# densité en restaurants / hectares
r <- rast(ds) * 100 * 100

# Assignation de la projection
crs(r) <- sf::st_crs(semis_points)$wkt

# Affichage 
plot(r)


Transformation du Raster (SpatRaster) et polygone vectoriel (sf) :

Code
library(mapiso)

# Limites des classes
maxval <- max(terra::values(r))
bks <-  c(seq(0, floor(maxval), 0.5), maxval)

# Transformation du raster en polygones
iso_dens <- mapiso(r, breaks = bks)

# Suppression de la première classe ([0, 1[)
iso_dens <- iso_dens[-1, ]

# Affichage
mapsf::mf_raster(r)
mapsf::mf_map(iso_dens, col = NA, add = TRUE)


E. Densité (discrête) - Méthode des polygones de voronoï :

Code
Poly_voronoi <- semis_points |> 
                  st_union() |> 
                  st_voronoi() |> 
                  st_collection_extract("POLYGON") |> 
                  st_intersection(iris) |> 
                  st_sf() |> 
                  st_join(semis_points, st_intersects) |>
                  st_cast("MULTIPOLYGON") 

# Affichage
mf_map(x=Poly_voronoi,
       lwd=0.2, 
       border ="grey40")


Calcul de la simili densité

Code
# Calcul simili densité
Poly_voronoi$area <- st_area(Poly_voronoi)
Poly_voronoi$dens <- 1 / Poly_voronoi$area * 10000

# Affichage densité discrète
mf_map(x=Poly_voronoi, var="dens", type="choro", border =NA)

TD - Mise en pratique




TD1 : Distances et accessibilité


TD2 : Réseaux et graphes


TD3 : Flux, échanges, attractions : les intéraction spatiales