Projections cartographiques avec R

L'essentiel de cette page

Je ne vais surtout pas m'aventurer à vous expliquer le principe des projets cartographiques et l'utilisation des différents systèmes géodésiques (CRS) sous R car... d'abord, ce n'est pas mon métier.

Et pi qu'ensuite, c'est compliqué.

Si déjà, vous souffrez à faire la différence entre des termes techniques rencontrés comme CRS, EPSG, etc. Je vous invite à suivre ce lien très rapide à lire, ludique, pour se remettre les idées au clair.

Résumons, lorsque j'ai un objet spatial (sp...), il a forcément des coordonnées x et y.

Est-ce des coordonnées par rapport à Paris, Londres ? Il va falloir l'indiquer pour avoir des données en longitude/latitude identiques, du même type, pour tous mes jeux de données.

Une fonction qui fait cela, c'est la fonction proj4string().

1- Changement de projection avec des objets sp

library(sp)
data("meuse")
coordinates(meuse) <- ~x+y # Conversion de meuse en objet spatial

# EPSG : identifiants européens réputés de système de coordonnées géographiques CRS)

# CRS : système de coordonnées (Coordinates Reference System )

#On indique le système de coordonnées de Meuse

proj4string(meuse) <- CRS("+init=epsg:28992")
plot(meuse) ; locator(1) # Cliquer sur le graphique pour avoir un échantillon de coordonnées.

On peut aussi utiliser la fonction bbox() à la place de locator()

bbox(meuse)

# On précise un nouveau système de coordonnées (plus classique)

crs.longlat <- CRS("+init=epsg:4326")

# Et on impose ce système à meuse pour avoir une projection plus classique

library(rgdal)
meuse_ll <- spTransform(meuse, crs.longlat)
plot(meuse_ll) ; locator(1)

Et voilà une carte en coordonnées en long/lat plus classique.

2- Changement de projection avec des objets sf

library(sp) ; data(meuse)

# Conversion de l'objet meuse sp en objet sf

library(sf)
meuse_sf <- st_as_sf(meuse, "sf")
st_bbox(meuse_sf)
st_crs(meuse_sf) # Dans ce cas là, le système de projection n'est pas indiqué (à cause de la conversion).
st_crs(meuse_sf)<- 28992

# Passer au système long,lat

st_transform(meuse_sf, "+proj=longlat +ellps=WGS84 +datum=WGS84") -> meuse_reconverti
st_bbox(meuse_reconverti)

A développer dans cette page :

  • Utiliser différents types de projections cartographiques pour passer à la 2D
  • Récupérer les informations sur le CRS utilisé.