Cetta page a pour but de présenter la méthodologie développée dans le cadre du projet TLI.
Lignes étudiées

Sélection des points kilométriques sur l’Etoile de Saint-Pol
if (!requireNamespace("pacman", quietly = TRUE)) install.packages("pacman")
pacman::p_load(sf, dplyr, mapview, tmap, knitr)
Calcul des isochrones

Tableau des variables calculées pour chaque
buffer
| Variables | Fournisseurs |
|---|---|
| Nombre d’habitants (données carroyées) | INSEE |
| Total population active (données communales) | INSEE |
| Lits, emplacements dans les campings et chambres d’hôtels | Fichier communal du tourisme (INSEE) |
| Arrêts de transport en commun | Point d’Accès National (données GTFS) |
| Aménités : loisirs, santé, commerces, restauration, sport | SIRENE |
| Nombre d’élèves (collèges, lycées, BTS) (données communales) | Ministère de l’Education nationale |
| Pistes cyclables (longueur kilométrique) | OpenStreetMap |
| Réseau pédestre (longueur kilométrique) | IGN BD TOPO |
| Routes (longueur kilométrique) | IGN BD TOPO |
| Nombre d’intersections de routes | IGN BD TOPO |
| Ronds-points | OpenStreetMap |
| Nombre de place de parking (données estimées) | IGN BD TOPO |
| Passage à niveau | SNCF |
| Zones artificialisées (données reconstruites) | IGN BD TOPO |
| Pente (pour le vélo) | IGN RGE ALTI |
Normalisation Min-Max
La normalisation Min-Max redimensionne les données dans un intervalle
fixe, souvent [0, 1], en ajustant chaque valeur selon les valeurs
minimales et maximales de l’ensemble de données, ce qui est utile pour
les modèles sensibles aux variations d’échelle entre les variables. Elle
est particulièrement utile pour les algorithmes sensibles aux échelles
des variables, comme les algorithmes basés sur les distances. La
normalisation Min-Max est souvent utilisée dans les contextes où
l’uniformité de l’échelle entre les variables est cruciale.
normalized_data <- as.data.frame(lapply(dt, function(x) {
(x - min(x, na.rm = TRUE)) / (max(x, na.rm = TRUE) - min(x, na.rm = TRUE))
}))
Analyse en composantes principales
Nous disposions de 15 variables pour la voiture et de 16 variables
pour la marche et le vélo. Afin de réduire leur nombre nous avons
procédé à une ACP sur les données issues des isochrones. Pour commencer,
nous observons les variances cumulées des trois ACP. Nous mettons
également en évidence les graphiques des variables composants les
premières dimensions des axes et nous sélectionnons un ensemble de
variables pour chaque mode de déplacement. Cette démarche nous permet
d’identifier et de réduire le nombre de variables initialement
sélectionnées.
L’ACP à partir des données pédestres révèle que les deux premiers axes cumulent 58% de la variance totale, offrant ainsi une représentation significative des données originales. De cette première analyse nous conservons les valeurs suivantes, qui permettent d’accumuler plus de 50% de la variance expliquée pour chaque dimension : la population, la longueur des routes carrossables, le nombre d’arrêts de transport en commun, le nombre de commerces, le nombre de loisirs, le nombre de restaurants, la surface artificialisée et le nombre de passages à niveau.

Tableau des variables retenues
| Thématiques | Variables | Fournisseur | Intérêts |
|---|---|---|---|
| Démographie | Nombre d’habitants (données carroyées 200m) | INSEE | Indique la densité de population autour des gares, reflétant potentiellement un besoin élevé de services de transport. |
| Transport | Longueurs du réseau routier carrossable | IGN BD TOPO | Indique l’accessibilité de la gare : un réseau routier plus dense et étendu peut faciliter l’accès |
| Transport | Arrêts de transport en commun | Point d’Accès National (données GTFS) | Permet de comprendre l’intégration et la connectivité de la gare au sein du réseau de transport local et régional. |
| Économie locale | Aménités : commerces, santé, loisirs, sports, restauration | BD SIRENE | Donne une idée de la vitalité économique et de l’accessibilité des services autour des gares. |
| Éducation | Nombre d’élèves (collèges, lycées, BTS) (données communales) | Ministère de l’Education nationale | Indique la présence d’institutions éducatives, suggérant des flux réguliers d’élèves nécessitant des services de transport. |
| Sécurité et infrastructure | Passage à niveau | SNCF | Souligne les points potentiels de conflit entre le transport ferroviaire et routier, importants pour la planification de la sécurité et l’aménagement urbain. |
| Urbanisme | Zones artificialisées | IGN BD TOPO | Montre les possibilités de d’aménagement des espaces fonciers. |
| Topographie | Pente (pour la marche et le vélo) | IGN RGE ALTI | Important pour évaluer l’accessibilité à vélo des gares, influençant la mobilité douce et les choix de transport multimodal. |
Somme des variables pour la création d’un score
all_data$total_sum_allegee <-
all_data$sum_population_carreau+
all_data$longueur_route+
all_data$nombre_loisirs+
all_data$nombre_arrets+
all_data$nombre_commerces+
all_data$nombre_restauration+
all_data$nombre_sports+
all_data$nombre_sante+
all_data$nombre_loisirs+
all_data$ZA+
all_data$passage_niveau-
all_data$pente_moyenneCartographie du score pour chaque point kilométrique

Pour plus de détails sur la cartographie vous pouvez consulter
ce
lien.
tmap_mode('view')
tm_basemap(c(leaflet::providers$Esri.WorldTopoMap,
leaflet::providers$OpenStreetMap,
leaflet::providers$Esri.WorldImageryiders,
leaflet::providers$GeoportailFrance.orthos)) +
tm_shape(isochrones_foot_osrm) + tm_fill('#e77148') +
tm_shape(isochrones_foot_geofer) + tm_fill('#75a993') +
tm_shape(isochrones_foot_r5r) + tm_fill('#e5b636') +
tm_shape(isochrones_OTP) + tm_fill('cornflowerblue') +
tm_shape(isochrones_ORS_TOOLS) + tm_fill('brown2') +
tm_shape(gares_st_pol) + tm_dots()sup_osrm <- st_area(isochrones_foot_osrm)
sup_geofer <- st_area(isochrones_foot_geofer)
sup_r5r <- st_area(isochrones_foot_r5r)
sup_OTP <- st_area(isochrones_OTP)
sup_ORSTOOLS <- st_area(isochrones_ORS_TOOLS) ## OSRM GeoFer R5R OTP ORS_Tools
## 1 1301222.8 817358.9 1402476.6 1413534.4 2.627185e+06
## 2 963162.0 1671378.0 654716.2 1767125.5 2.627185e+06
## 3 1635508.9 1216875.2 1890295.8 1675161.8 1.899020e+06
## 4 1546948.5 1004533.7 1405527.9 1772783.4 1.899020e+06
## 5 1359716.6 997720.6 1452324.5 1599670.6 2.488645e+06
## 6 1481211.5 1471163.1 1251927.8 657654.3 2.488645e+06
## 7 1340876.3 1142564.9 1733130.6 1548406.7 2.204523e+06
## 8 1125438.6 1107989.4 1080463.4 1551556.7 2.204523e+06
## 9 1897253.7 989006.7 1978419.7 1831937.7 2.369811e+06
## 10 1424314.3 1249952.5 1363379.8 1570571.0 2.369811e+06
## 11 1541528.6 798649.4 1875319.6 1932814.9 1.972898e+06
## 12 1565308.9 1023062.7 1233608.6 1570571.0 1.972898e+06
## 13 1625501.5 880936.9 1304231.8 1835030.7 1.771767e+06
## 14 1730707.4 1023062.7 1708250.8 995113.5 1.771767e+06
## 15 1610468.0 1358245.0 1809129.0 1441914.9 2.924069e+06
## 16 1722988.0 1530825.4 1890295.8 1551733.7 3.015802e+06
## 17 1635508.9 1360043.7 2895376.6 1912115.5 2.361438e+06
## 18 2577515.8 1483750.7 1087108.5 1550268.8 2.361438e+06
## 19 1036679.1 493971.3 1715659.7 1570571.0 2.364815e+06
## 20 1462742.3 1068565.1 1765202.2 1083763.0 2.364815e+06
## 21 2599206.5 930983.2 1055199.3 1331193.7 2.243323e+06
## 22 1221425.1 879670.4 1890295.8 1671352.8 2.243323e+06
## 23 1635508.9 998850.2 2276807.0 1413534.4 5.377787e+03
## 24 1381397.9 440961.0 2057955.4 1767125.5 5.377787e+03
## 25 1635799.9 1023062.7 721922.3 1675161.8 2.338455e+06
## 26 770438.8 1753109.3 1742870.6 1772783.4 2.338455e+06
## 27 1452460.2 1118685.2 1402476.6 1599670.6 2.488645e+06
## 28 1301222.8 817358.9 654716.2 657654.3 2.488645e+06
## 29 963162.0 1671378.0 1890295.8 1548406.7 3.965363e+06
## 30 1635508.9 1216875.2 1405527.9 1551556.7 3.965363e+06
## 31 1546948.5 1004533.7 1452324.5 1831937.7 6.726445e+03
## 32 1359716.6 997720.6 1251927.8 1570571.0 6.726445e+03
## 33 1481211.5 1471163.1 1733130.6 1932814.9 5.975208e+03
## 34 1340876.3 1142564.9 1080463.4 1570571.0 5.975208e+03
## 35 1125438.6 1107989.4 1978419.7 1835030.7 4.138729e+06
## 36 1897253.7 989006.7 1363379.8 995113.5 4.138729e+06
## 37 1424314.3 1249952.5 1875319.6 1441914.9 2.074481e+06
## 38 1541528.6 798649.4 1233608.6 1551733.7 2.074481e+06
## 39 1565308.9 1023062.7 1304231.8 1912115.5 2.488645e+06
## 40 1625501.5 880936.9 1708250.8 1550268.8 2.488645e+06
## 41 1730707.4 1023062.7 1809129.0 1570571.0 2.548840e+06
## 42 1610468.0 1358245.0 1890295.8 1083763.0 2.548840e+06
## 43 1722988.0 1530825.4 2895376.6 1331193.7 2.479157e+06
## 44 1635508.9 1360043.7 1087108.5 1671352.8 2.479157e+06
## 45 2577515.8 1483750.7 1715659.7 1413534.4 1.320903e+06
## 46 1036679.1 493971.3 1765202.2 1767125.5 1.320903e+06
## 47 1462742.3 1068565.1 1055199.3 1675161.8 2.886865e+06
## 48 2599206.5 930983.2 1890295.8 1772783.4 2.886865e+06
## 49 74464646.9 53455617.1 75684235.7 74298296.7 1.040430e+08
# Packages ----
pacman::p_load(sf, mapview, tmap, dplyr, GGally)
# Chargement de la couche des régions de la France métropolitaine
regions_FR_2154 <- sf::st_read("C:/Users/otheureaux/Documents/OT/DECOUPAGES_FR/REGION.shp")## Reading layer `REGION' from data source
## `C:\Users\otheureaux\Documents\OT\DECOUPAGES_FR\REGION.shp'
## using driver `ESRI Shapefile'
## Simple feature collection with 13 features and 4 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: 99040 ymin: 6046546 xmax: 1242443 ymax: 7110479
## Projected CRS: RGF93 Lambert 93
# Filter sur la région des Hauts-de-France
hauts_de_france <- regions_FR_2154 %>% filter(INSEE_REG == 32)
zone_etude <- hauts_de_france
# Chargement des gares
gares <- sf::st_read("C:/Users/otheureaux/Documents/OT/RAILENIUM/BDD_TELLI/GEOFER/gares_2154.gpkg")## Reading layer `gares' from data source
## `C:\Users\otheureaux\Documents\OT\RAILENIUM\BDD_TELLI\GEOFER\gares_2154.gpkg'
## using driver `GPKG'
## Simple feature collection with 3489 features and 65 fields
## Geometry type: POINT
## Dimension: XY
## Bounding box: xmin: 147139.3 ymin: 6147218 xmax: 1079190 ymax: 7108435
## Projected CRS: RGF93 v1 / Lambert-93
gares_select <- gares %>%
select(nom_gare, voy_2022)
# Découpage gares HDF
gares_HDR <- sf::st_intersection(gares_select, zone_etude)## Warning: attribute variables are assumed to be spatially constant throughout
## all geometries
# Création des buffers
buffers_gares_HDR <- st_buffer(gares_HDR, 1000)
buffers_gares_HDR$superficie <- st_area(buffers_gares_HDR)
# Création des isochones
all_isochrones <- sf::st_read('C:/Users/otheureaux/Documents/OT/6T/R/database_sf/processed_data/isochrones_gares_HDF_foot_15min_20240206.geojson')## Reading layer `isochrones_gares_HDF_foot_15min_20240206' from data source
## `C:\Users\otheureaux\Documents\OT\6T\R\database_sf\processed_data\isochrones_gares_HDF_foot_15min_20240206.geojson'
## using driver `GeoJSON'
## Warning in CPL_read_ogr(dsn, layer, query, as.character(options), quiet, : GDAL
## Message 1: Several features with id = 1 have been found. Altering it to be
## unique. This warning will not be emitted anymore for this layer
## Simple feature collection with 393 features and 4 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: 1.523141 ymin: 48.96067 xmax: 4.149771 ymax: 51.07936
## Geodetic CRS: WGS 84
all_isochrones <- st_transform(all_isochrones, 2154)
all_isochrones$superficie <- st_area(all_isochrones)
# Carto des buffers et des iso
mapview(buffers_gares_HDR) + mapview(all_isochrones)# Dataframe des superficies
dt <- data.frame(
buffers_gares_HDR$superficie,
all_isochrones$superficie
)
dt$rapport <-all_isochrones$superficie / buffers_gares_HDR$superficie*100
all_isochrones$rapport <- dt$rapport
all_isochrones$rapport <- as.numeric(all_isochrones$rapport)
str(all_isochrones)## Classes 'sf' and 'data.frame': 393 obs. of 7 variables:
## $ id : int 1 1 1 1 1 1 1 1 1 1 ...
## $ isomin : num 0 0 0 0 0 0 0 0 0 0 ...
## $ isomax : num 15 15 15 15 15 15 15 15 15 15 ...
## $ point.nom_gare: chr "Pont de la Deûle" "Outreau" "Sous le Bois" "Les Bons-Pères" ...
## $ geometry :sfc_MULTIPOLYGON of length 393; first list element: List of 2
## ..$ :List of 2
## .. ..$ : num [1:91, 1:2] 705919 705911 705905 705902 705999 ...
## .. ..$ : num [1:7, 1:2] 706330 706318 706330 706440 706463 ...
## ..$ :List of 1
## .. ..$ : num [1:5, 1:2] 706588 706552 706515 706552 706588 ...
## ..- attr(*, "class")= chr [1:3] "XY" "MULTIPOLYGON" "sfg"
## $ superficie : Units: [m^2] num 1303139 401835 1247953 1236118 1557454 ...
## $ rapport : num 41.5 12.8 39.7 39.4 49.6 ...
## - attr(*, "sf_column")= chr "geometry"
## - attr(*, "agr")= Factor w/ 3 levels "constant","aggregate",..: NA NA NA NA NA NA
## ..- attr(*, "names")= chr [1:6] "id" "isomin" "isomax" "point.nom_gare" ...