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).
library(sf)com <-st_read("data/lot.gpkg", layer ="communes", quiet =TRUE, agr ="constant")# transformation de la couche com en couche de pointscom_c <-st_centroid(com)mat <-st_distance(x = com_c, y = com_c)mat[1:5,1:5]
Le package units(Pebesma et al., 2016) permet de définir et convertir facilement des unités de mesure.
Le package peut se révéler assez utile quand nous manipulons différentes unités de mesures régulièrement.
library(units)
#> udunits database from /usr/share/xml/udunits/udunits2.xml
distances <-c(1, 2, 3, 5, 0.5)surfaces <-c(500, 1000, 10000, 20000)# définition des unités de mesure initialesdistances <-set_units(distances, "km")distances
#> Units: [km]
#> [1] 1.0 2.0 3.0 5.0 0.5
surfaces <-set_units(surfaces, "m2")surfaces
#> Units: [m^2]
#> [1] 500 1000 10000 20000
# transformation des unités de mesuredistances <-set_units(distances, "m")distances
#> Units: [m]
#> [1] 1000 2000 3000 5000 500
surfaces <-set_units(surfaces, "ha")surfaces
#> Units: [ha]
#> [1] 0.05 0.10 1.00 2.00
## Suppression des unitésdistances <-set_units(distances, NULL)distances