Installation du package

L’installation est impossible depuis l’environnement AUS de l’Insee. L’installation se fait sur poste de travail pour R >= 3.4.0, idéalement une version récente de R. Pour l’installation des dépendances sur les versions récentes de R on choisira par exemple 2:CRAN packages only pour une installation assez rapide. Sur les versions de R un peu anciennes, si les versions des dépendances ne sont pas disponibles il sera peut-être nécessaire de recompiler le code. Vous devez disposer de suffisamment d’espace disque et des droits en écriture. L’instruction options(download.file.method = "curl") évite un échec pour cause de timeout dépassé.

install.packages("remotes")            # si le package remote n'est pas installé
options(download.file.method = "curl") # si l'installation dépasse 60 secondes
remotes::install_gitlab(repo = 'metric-osrm/metric-osrm-package',
                        host = 'git.lab.sspcloud.fr',
                        force = TRUE) 
rio::install_formats()  # ajoute la possibilité d'importer plusieurs formats dont ods

Pour la mise à jour du package, il suffit de le télécharger de la même façon et de redémarrer votre Rstudio ou de faire un Session/Restart R (ou ctrl + shift + F10).

Installer et lancer l’application shiny {shinyMetricOSRM}

L’application sur poste de travail de {shinyMetricOSRM} facilite l’interrogation du serveur pour l’usager peu familiarisé avec R. Comme pour le package {metric.osrm} une installation en locale et un accès internet sont nécessaires. Toutefois passer directement par le package {metric.osrm} permet de réaliser des gains de temps sur des calculs volumineux.

options(download.file.method = "curl") # si l'installation dépasse 60 secondes
install.packages("remotes")            # si le package remote n'est pas installé
# installation ou réinstallation au préalable de metric.osrm
remotes::install_gitlab(repo = 'metric-osrm/metric-osrm-package',
                        host = 'git.lab.sspcloud.fr',
                        force = TRUE)
rio::install_formats()  # ajoute la possibilité d'importer plusieurs formats dont ods
# installation ou réinstallation du package {shinyMetricOSRM}
remotes::install_gitlab(repo = 'metric-osrm/metric-osrm-application-shiny', 
                        host = 'git.lab.sspcloud.fr',
                        force = TRUE)
# Une fois le package {shinyMetricOSRM} et {metric.osrm} installés  
# l’application {shinyMetricOSRM} s'ouvre en éxécutant la ligne de commande :
shinyMetricOSRM::run_app(osrm.server = "https://metric-osrm-backend.lab.sspcloud.fr/")

Si l’installation de certaines dépendances échoue

Si vous travaillez depuis Rstudio dans la fenêtre Package il est possible d’effectuer une montée de version via l’update de l’onglet packages. Parfois le système d’exploitation refuse de désinstaller des packages déjà chargés, pour les packages rlang, glue, Rcpp, digest, httpuv par exemple. L’instruction getLoadedDLLs() permet alors de les identifier ainsi que la librairie de packages. Vous pouvez essayer de redémarer Rstudio depuis un environnement vide de programmes et projets, pour qu’aucun package avec dll ne soit déjà chargé dans l’environnement. Si vous échouez à mettre à jour ces packages via Rstudio, une solution radicale consiste à supprimer (ou renommer) les répertoires contenant les packages depuis windows. L’installation de metric.osrm devrait alors réussir.

Si le package ne s’installe pas du tout

La commande install_gitlab fait appel à une API qui peut ne pas répondre. Des alternatives à install_gitlab sont possibles pour télécharger le package metric.osrm :

  • Télécharger l’archive tar.gz Ou en cliquant sur télécharger les artéfacs du dernier pipeline réusi du projet gitlab. Il vous faudra ensuite déplacer et décompresser le fichier dans votre librairie de package correspondant à votre version de R. Cela peut aussi de faire via un install.packages :
utils::install.packages("~/metric.osrm_1.1.4.tar.gz",  repos = NULL, type = "source")
  • Utiliser un drat
install.packages("metric.osrm",  
                 repos = c("https://metric-osrm.pages.lab.sspcloud.fr/drat", 
                           getOption("repos")
                           )
                 )

Tester une requête simple pour voir si le serveur répond

Vous devrez spécifier l’URL d’un serveur de calcul OSRM et un profil À CHAQUE UTILISATION du package. Une fois le package metric.osrm installé vérifions la réponse d’un serveur OSRM à une requête simple de l’aide de la fonction ?metricOsrmTable ou d’un article de la documentation en ligne.

library(metric.osrm)
options(osrm.server = "https://metric-osrm-backend.lab.sspcloud.fr/")
options(osrm.profile = "driving") 
# les longitude et latitude sont en systeme de projection WGS84, epsg 4326
metricOsrmTable(src=data.frame(id="1",lon=5.38584, lat=43.30132),
                dst=codeComToCoord(codeInsee = c("13001"),geo = "2023",type = "chx"), 
                exclude ="ferry")
# ID     idSrc  lonSrc   latSrc idDst  lonDst   latDst duree distance
# 1  1 adresse_1 5.38584 43.30132 13001 5.44604 43.53001 30.02   30.607

Le serveur ne répond pas : les lignes d’option ont été oubliées

Peut-être que si le serveur ne répond pas c’est que vous avez oublié les options server et profile à lancer avant chaque utilisation ? Avez-vous bien précisé et exécuté les options suivantes avant de lancer metricOsrmTable ?

options(osrm.server = "https://metric-osrm-backend.lab.sspcloud.fr/")
options(osrm.profile = "driving") 

Le serveur ne répond pas : un proxy bloque la réponse

Le package metric.osrm a besoin d’accèder à internet pour interroger un serveur de routage de type OSRM. Dans de nombreuses institutions, la navigation sur Internet par un proxy (intermédiaire entre le web et un ordinateur). Il est possible que votre proxy bloque les résultats de la requête envoyé au serveur.

Pour modifier le fichier .Renviron vous pouvez consulter la documentation utilitR

Pour connaître les éventuelles adresses du proxy pour les requêtes http et https et savoir si la configuration de votre environnement en tient compte :

curl::ie_get_proxy_for_url() # adresse de votre proxy
Sys.getenv("http_proxy")     # indique le proxy déclaré pour les requêtes http
Sys.getenv("https_proxy")    # indique le proxy déclaré pour les requêtes https

si ie_get_proxy_for_url() indique un proxy non encore déclaré une solution non pérenne consiste à lancer les commandes suivantes : Sys.setenv("http_proxy"=curl::ie_get_proxy_for_url()) Sys.setenv("https_proxy"=curl::ie_get_proxy_for_url())

Il est possible de personnaliser la configuration générale ou celle du projet pour que R puisse passer le proxy de façon pérenne.

Le serveur ne répond pas : personnaliser sa configuration

Éxécutez les commandes suivantes pour éditer le fichier .Renviron

curl::ie_get_proxy_for_url() # adresse de votre proxy à copier
file.edit('~/.Renviron') #éditer le fichier .Renviron

Si le fichier .Renviron contient déjà des lignes de commandes avec les adresses de votre proxy, il est déjà configuré.

Si les deux lignes de commandes ne figurent pas dans le .Renviron vous devez ajouter manuellement deux lignes de commandes http_proxy = et https_proxy =au fichier .Renviron en collant les adresses http et https optenues plus haut. Puis ajoutez une ligne vide en fin de fichier.

  • http_proxy =...

  • https_proxy =...

  • (+ éventuellement d’autres lignes de commandes)

  • bien ajouter une ligne vide en bas de fichier avant d’enregistrer

Vous pouvez alors enregistrer le fichier .Renviron. vous devez ensuite redémarrer votre session Rstudio via ctrl+shift+F10 ou via Session > restart.

Ce fichier Renviron ne devra pas être partagé sur git et internet car l’adresse de votre proxy est confidentielle.

Le serveur ne répond pas : le serveur est planté

  • Vérifiez au préalable qu’aucun proxy bloque la réponse (voir plus haut), et que c’est bien l’adresse du serveur expérimental déployé sur la plateforme du SSPCloud qui a été renseigné dans l’options (osrm.server = https://metric-osrm-backend.lab.sspcloud.fr/ .)

  • Si le serveur ne répond toujours pas il peut y avoir des problèmes de liaison internet, une maintenance en cours sur le SSPcloud ou encore un plantage du serveur. Si le serveur ne redémare pas seul, merci de le signaler de préférence via par messagerie sur :DR13-psar-at@insee.fr, plutôt que sur la section issues du git.lab, moins consultée.

Déployer son propre serveur OSRM

Le serveur expérimental déployé sur la plateforme du SSPCloud n’a pas de garantie de service, mais il est possible de déployer son propre serveur de routage. L’algorithme de routage employé est le Multi-Level Dijkstra (MLD) : osrm-routed –algorithm mld. Notre serveur situé sur le SSPCLOUD utilise le profil “standard” d’un serveur OSRM utilisant la version 5.26.0 du moteur de routage backend OSRM (https://github.com/Project-OSRM/osrm-backend). L’image docker du backend OSRM utilisée par notre serveur de calcul était la version 0.26 (https://hub.docker.com/r/osrm/osrm-backend/). Le pull de cette image docker s’effectue idéalement via son sha :

  • osrm/osrm-backend@sha256:af5d4a83fb90086a43b1ae2ca22872e6768766ad5fcbb07a29ff90ec644ee409

Le serveur de calcul OSRM que nous avons déployé ne fait pas d’hypothèse de trafic/heure de la journée. Il retourne un trajet routier en voiture “optimal”, c’est à dire le plus court en temps en s’appuyant sur les limitations de vitesse déclarées de chaque tronçon ou à défaut sur un profil de vitesses moyennes par type de route. À ces vitesses s’ajoute tout un système de pénalités (intersections, présence de feux rouges, qualité de la chaussée, et autre critère du fichier de configuration routability). Sont disponibles sous https://minio.lab.sspcloud.fr/projet-metric-osrm/data/:

  • le fond pbf du réseau routier de fin février 2022 pbf/france-transfrontalier-2022.osm.pbf

  • le profil des temps de parcours selon la catégorie de tronçon de route car_routability_v5260.lua