Open Source Routing Machine, or OSRM, is a routing software based on OpenStreetMap (OSM) data. OSRM can be used to find the fastest route between points, to compute time or distance matrices between set of points or to solve the traveling salesman problem.As maintainer of the osrm R package I often find myself advising users to use their own instance of OSRM to enable them to send a large number of requests and not overload the demo server. In these cases I simply point to the Docker installation instructions in the project’s README file. These instructions may not be detailed enough to build an OSRM instance on a large area. OSRM needs a lot of RAM to prepare the road network for requests and using only these instructions will probably result in message like this one:
[warn] Please provide more memory or consider using a larger swapfile
This problem is addressed in this issue on the OSRM GitHub repository. The suggested solution is to rent a temporary server. This is not the only solution, a modern computer with a rather classical hardware configuration can actually do the job.
In this post I’ll explain how to build a European-wide OSRM instance on a desktop computer. These explanations are, to a certain extent, also valid when using a remote server.
Le package osrm est une interface entre R et le service de routage Open Source Routing Machine (OSRM). OSRM est un service de routage utilisant les données d’OpenStreetMap (OSM) data. Le package permet de calculer des routes, des matrices de distances, des isochrones en utilisant s’appuyant sur le réseau routier d’OSM.
Une mise à jour majeur du package est sortie sur le CRAN il y a peu. Dans le billet suivant je décris les nouveauté et le contexte de cette sortie: la publication d’un article dans Journal of Open Source Software (JOSS).
mapsf helps to design various cartographic representations such as proportional symbols, choropleth or typology maps. It also offers several functions to display layout elements that improve the graphic presentation of maps (e.g. scale bar, north arrow, title, labels). mapsf maps sf objects on base graphics.
The potential package provides functions to compute potential models as defined by John Q. Stewart. Several options are available to customize the models, for example it is possible to refine the distance friction functions or to use custom distance matrices. Some functions use parallelization to improve their efficiency.
The aim of potential is to replace potential-related functions of the SpatialPosition package. SpatialPosition was built to compute 3 spatial position models (Stewart potentials, Reilly catchment areas, Huff catchment areas) in a time where sf was not published yet (May 2015). potential functions use a simplified interface and are more efficient than their counterpart in SpatialPostion. My recommendation to SpatialPositon users is thus to switch to potential for the computation of potentials.
A didactic vignette describing the methodology and functions is provided as well as a website.
To create maps from tiles, maptiles downloads, composes and displays tiles from a large number of providers (e.g. OpenStreetMap, Stamen, Esri, CARTO, or Thunderforest).
Installation
You can install the released version of maptiles from CRAN with:
install.packages("maptiles")
You can install the development version of maptiles from GitHub with:
maptiles gives access to a lot of tiles servers, but it is possible to add others. The following example demonstrates the setting of a map tiles server and how to cache the original tiles for future use:
The following figure shows mini maps for most of the tiles providers available:
Attribution of map tiles
All maps available through maptiles are offered freely by various providers. The only counterpart from the user is to properly display an attribution text on the maps. get_credit() displays a short credit text to add on each map using the downloaded tiles.
Background
Most of maptilescode comes from getTiles() and tilesLayer() functions in cartography. It appears useful to me to have a package focused on the download and display of map tiles only. On the technical side, it uses terra instead of raster for managing raster data.
Alternatives
There are many alternative packages that pursue the same objective as maptiles. Some focus on a specific map tiles provider (e.g. mapbox, google, OpenStreetMap) or on a specific graphics device (ggplot2). The goal of maptiles is to be flexible enough to allow the use of different providers and to have a minimal number of robust and modern dependencies. However, depending on the use case, one of following packages may better suit your needs:
Not to be confused with tilemaps, that “implements an algorithm for generating maps, known as tile maps, in which each region is represented by a single tile of the same shape and size.”
In cartography several functions have a pos or legend.pos argument. These arguments can take the following values: “topleft”, “top”, “topright”, “right”, “bottomright”, “bottom”, “bottomleft”, “bottomleftextra”, “left” or a vector of two coordinates in map units (c(x, y)).
The osrm package is an interface between R and the OSRM API. OSRM is a routing service based on OpenStreetMap data. This package allows computing shortest paths, travel time and travel distance matrices between points.
The popcircle package has been released on GitHub. This one-function package computes circles with areas scaled to a variable and displays them using a compact layout (higher values in the center, lower values at the periphery). Original polygons are scaled to fit inside these circles (size are roughly proportional, not strictly).
The circles creation relies on packcircles, spatial data manipulation relies on sf.
The tanaka package has been released on CRAN. This package is a simplified implementation of the Tanaka method. Also called “relief contours method”, “illuminated contour method” or “shaded contour lines method”, the Tanaka method enhances the representation of topography on a map using shaded contour lines. North-west white contours represent illuminated topography and south-east black contours represent shaded topography.
The contour lines creation relies on isoband, spatial data manipulation and display rely on sf.
L’Insee vient de sortir un numéro d’Insee Méthodes s’intitulant “Manuel d’analyse spatiale – Théorie et mise en œuvre pratique avec R“. Ce manuel de près de 400 pages aborde de nombreuses thématiques telles que l’analyse de semis de points, l’autocorrélation spatiale ou les lissages. Le manuel comprend des parties théoriques ainsi que des exemples d’application pratique écrits en R. Je vous conseille vivement de jeter un œil à cette riche ressource dont on peut accéder à chaque chapitre individuellement.
This post shows how to build a colored pencil map with R.
The cartography package (in its development version) has gained a getPencilLayer() function that transforms a POLYGON or MULTIPOLYGON layer into a MULTILINESTRING layer mimicking a pencil drawing pattern.
La prochaine séance du séminaire R à l’Usage des Sciences Sociales (RUSS) aura lieu le jeudi 5 avril 2018 de 9h à 12h à l’ amphithéâtre François Furet de l’EHESS au 105 Boulevard Raspail – Paris 6°.
Nous accueillerons Nicolas Ballier (Université Paris Diderot), Diane Beldame (thinkr.fr), Muriel Epstein (SAMM, Université Paris 1 Panthéon Sorbonne) et Anton Perdoncin (ENS, CMH, IDHES -ENS Cachan). Continuer la lecture de La prochaine séance du séminaire RUSS→
Dans ce billet je propose une manière de zoomer sur une zone particulière d’une carte avec R.
Ce zoom peut être défini précisément si l’on connaît à l’avance les coordonnées géographiques de la zone à afficher (sa bounding box), il peut aussi être défini interactivement grâce à la fonction locator().
J’utilise les packagessf (pour la gestion des objets spatiaux), cartography (pour l’ajout d’éléments d’habillage) et rnaturalearth (pour acceder aux fonds de cartes libres de Natural Earth).
This post exposes some cartographic explorations of the OpenStreetMap (OSM) database with R.
These explorations begin with the downloading and the cleaning of OSM data. Then I propose a set of map visualizations of the spatial distributions of bars and restaurants in Paris. Of course, these examples could be adapted to other spatial contexts and thematics (e.g. pharmacies in Roma, bike parkings in Dublin…).
A new version of the cartography package (v2.0.1) has arrived on CRAN.
cartography allows various cartographic representations such as proportional symbols, chroropleth, typology, flows or discontinuities maps. It also offers several features enhancing the graphic presentation of maps like cartographic palettes, layout elements (scale, north arrow, title…), labels, legends or access to some cartographic APIs.
Up to version 1.4.2 cartography was mainly based on sp and rgeos for its spatial data management and geoprocessing operations. These dependencies have been as much as possible replaced by sf functions since version 2.0.0.
Most functions are kept unchanged except for the addition of an x argument used to take sf objects as inputs.
See the NEWS file for the full list of changes and see sf README in case of installation problems with sf. Continuer la lecture de New version of the cartography package→
Ce billet évoque les évolutions récentes du traitement des données spatiales avec R ainsi que la mise à jour du package cartography pour prendre en compte ces changements. Continuer la lecture de sf & cartography v2.0.0→
Le package linemap permet de réaliser des cartes composées de lignes. Le package contient deux fonctions, linemap et getgrid.
La fonction linemap permet d’afficher la carte. Elle prend en entrée un data frame contenant les coordonnées des points d’une grille régulière et au moins une variable.
La fonction getgrid permet de transformer un maillage de polygones irrégulier en data frame pouvant être utilisé avec la fonction linemap. Les polygones en entrée doivent être au format sf et, la fonction reposant sur des calculs d’intersections, il est fortement conseillé d’utiliser le package sf dans une version supérieure ou égale à 0.5-1. En effet à partir de cette version sf intègre les index spatiaux, ce qui accélère très significativement certains géotraitements (dont les calculs d’intersections).
Pourquoi et comment inscrire la production de cartes statistiques dans un processus de recherche reproductible.
La manière la plus répandue pour construire des cartes statistiques mobilise un ensemble de logiciels variés (tableur, logiciel de statistique, SIG, édition vectoriel…) utilisant une série de formats de données et de fichiers différents. Cette grande diversité d’outils rend difficile la reproduction, la mise à jour et la pérennité des analyses et des cartes produites. L’utilisation du logiciel R et de son langage nous permet de couvrir l’ensemble de la chaîne de traitement allant de l’analyse à la représentation de l’information géographique. Particulièrement adapté aux traitements statistiques, R dispose également de fonctionnalités spatiales permettant de manipuler et de représenter les données. Le package cartography, développé à l’UMS RIATE, permet de réaliser la plupart des cartes statistiques usuelles et de les insérer dans des analyses traçables et complexes.
La prochaine séance du séminaire R à l’Usage des Sciences Sociales (RUSS) aura lieu le jeudi 18 mai 2017 de 9h30 à 12h00 à l’université Paris Diderot (salle M19, bâtiment Olympes de Gouges, 8 place Paul-Ricoeur – Paris 13e ).
Nous accueillerons à partir de 9h30, François Briatte (Université Catholique de Lille, École européenne des sciences politiques et sociales (ESPOL)) pour la présentation suivante :
Magrit est une application de cartographie thématique en ligne.
Magrit propose la réalisation de représentations cartographiques usuelles telles que les cartes choroplèthes ou les cartes en symboles proportionnels. D’autres types de cartes, souvent difficiles à mettre en œuvre dans les logiciels du marché, sont aussi proposés : lissages, carroyages, discontinuités, anamorphoses, etc.
Magrit entend couvrir dans un même environnement logiciel, l’ensemble de la chaîne de traitement, de la donnée géographique à la carte d’édition.
Dans un très complet billet de blog, Timo Grossenbacher décrit la création d’une carte thématique avec ggplot2. https://timogrossenbacher.ch/2016/12/beautiful-thematic-maps-with-ggplot2-only/
Il y détaille les étapes nécessaires à la création de cette carte en évoquant par exemple des questions de reproductibilité, l’import et la sélection des données, le choix d’une discrétisation, le choix d’une gamme de couleur, l’utilisation de données raster (pour le relief), les questions d’habillage et de design.
La prochaine séance du séminaire R à l’Usage des Sciences Sociales (RUSS) aura lieu le jeudi 26 janvier 2017 de 9h30 à 12h00 à l’EHESS (salle du conseil B, R-1, bât. Le France, 190-198 av de France 75013 Paris)
Nous accueillerons à partir de 9h30, Arnaud Bringé (Ined-Service Méthodes Statistiques) pour la présentation suivante :
Dans un billet précédent, je proposais une solution pour créer des cartons cartographique en jouant avec les paramètres graphiques des figures.
Dans celui-ci j’introduis le package mapinsetr qui permet de créer “en dur” des fond de carte comprenant des cartons.
J’utilise les jeux de données, la problématique et une partie du code proposés par Arthur Charpentier dans son post “Cartographier le vote pour le Brexit“.
La prochaine séance du séminaire R à l’Usage des Sciences Sociales (RUSS) aura lieu le jeudi 24 novembre 2016 de 9h30 à 12h00 à l’EHESS (salle du conseil B, R-1, bât. Le France, 190-198 av de France 75013 Paris)
Nous accueillerons à partir de 9h30, Hadrien Commenges (Université Paris 1 Panthéon-Sorbonne UMR 8504 Géographie-cités) pour la présentation suivante :
Flux de travail intégré et conception d’outils pour la recherche et l’enseignement avec R et shiny
cartography a été déposé sur le CRAN le 5 octobre 2015.
Depuis cette date nous avons poursuivi le développement du package et, outre quelques corrections de bugs mineurs et diverses optimisations, nous y avons ajouté un certain nombre de fonctionnalités.
Tutoriel de cartographie avec R. Tutoriel donné à l’occasion des Cinquièmes Rencontres R à Toulouse (introduction à la cartographie thématique, les fonctionnalités spatiales de R, présentation du package cartography, exercices corrigés).
L’API du service de routage open sourceOSRM vient de passer à la version 5. J’ai donc adapté le package osrm à cette nouvelle version qui devrait rester assez stable pendant quelque temps. Il s’agit à nouveau d’une version majeur (la compatibilité descendante n’est pas assurée). Continuer la lecture de Mise à jour du package osrm (version 3.0.0)→
L’encodage de polylines (Encoded Polyline Algorithm Format)
est un algorithme de compression (avec pertes) qui permet de stocker une liste de coordonnées dans une simple chaîne de caractères.
Cet encodage a été créé pour être utiliser par l’API de Google Maps. Mais d’autres services peuvent y faire appel, c’est le cas par exemple de l’API du service de routage open sourceOSRM.
Le package gepaf permet d’encoder un dataframe de coordonnées vers une chaîne de caractères avec la fonction encodePolyline et de décoder une chaîne de caractères vers un dataframe de coordonnées avec la fonction decodePolyline.
Le package, créé par Matthieu Viry, est disponible sur le CRAN ainsi que sur GitHub.
A la lecture des premiers articles portant sur les Panama Papers je me suis demandé d’où venaient les centaines de journalistes ayant travaillé sur le dossier.
Les différents articles évoquent plus de 100 médias dans plus de 70 pays.
La note suivante apparait lors des utilisations de rgdal liées aux projections : NOTE: rgdal::checkCRSArgs: no proj_defs.dat in PROJ.4 shared files
Ce message est dû à l’utilisation de la librairie PROJ (dans sa version 4.9.1), à laquelle il manque un fichier de configuration.
Le fichier en question (proj_def.dat) doit être téléchargé et placé dans le dossier des projections de la librairie.
Chez moi, ce dossier est celui-ci : /usr/share/proj/.
Les détails du bug sont discutés sur la liste de discussion R-sig-Geo.
Comme le dit Wikipédia : “En cartographie, un carton est une petite carte complémentaire d’une carte principale, insérée dans la même page.”
Dans ce post je propose une solution pour créer des cartons cartographique en utilisant le package cartography. J’en profite pour introduire la fonction getFigDim qui aide à choisir les dimensions d’une figure lors de son export. Continuer la lecture de Comment faire un carton avec R?→
Le package osrm assure le lien entre R et l’API d’OSRM. OSRM est un service de routage basé sur les données OpenStreetMap.
Ce package permet d’obtenir le temps de trajet, la distance et le plus court chemin entre deux points via le réseau routier d’OpenStreetMap. Il est également possible d’obtenir des matrices de distances entre deux séries de points.
Pour suivre l’évolution de l’API qu’il interface, j’ai mis à jour le package osrm.
Vue l’ampleur des modifications sur l’API, la compatibilité descendante n’est pas assurée, les codes anciens ne fonctionneront plus. Continuer la lecture de Mise à jour du package osrm (version 2.0.0)→
une amélioration de la fonction permettant d’exporter les potentiels en format vectoriel (ce qui peut être utile si l’on veut utiliser une couche de potentiels dans un SIG ou si l’on veut mettre en page une carte de potentiels dans un logiciel d’édition vectorielle).
Le package osrm assure le lien entre R et l’API d’OSRM. OSRM est un service de routage basé sur les données OpenStreetMap.
Ce package permet d’obtenir le temps de trajet, la distance et le plus court chemin entre deux points via le réseau routier d’OpenStreetMap. Il est également possible d’obtenir des matrices de distances entre deux séries de points. Continuer la lecture de Temps de trajet et matrices de distances avec R et OpenStreetMap→
Le package cartography est sur le CRAN.
Ce package permet la création de la plupart des types de cartes statistiques ou thématiques avec R.
Dans ce post je propose une série de cartes réalisées avec ce package.
J’ai indiqué sous chacune d’entre elles les principales fonctions utilisées. L’intégralité des scripts mis en place pour créer les cartes sont disponibles dans la vignette du package.
Les fonds de cartes et les données sur les régions européennes mobilisées ici sont fournis avec le package. Continuer la lecture de Cartographie avec R : le package cartography→
Il existe différentes solutions pour géocoder des adresses ou des lieux avec R. Les plus fréquemment citées sont basées sur des services commerciaux et utilisent des données non libres. D’autres utilisent des logiciels libres et des données libres (OpenStreetMap). La nature commerciale / non commerciale, libre / non libre d’une solution a des implications sur la construction et la diffusion des données géocodées.
Je propose ici une petite revue des différentes possibilités de géocodage dans R ainsi qu’un package pour interroger l’une des API de géocodage basé sur OpenStreetMap (photon). Continuer la lecture de Géocoder en masse avec R et sans Google Maps→
Les API de cartographie
Représentations cartographiques
Opérations de géotraitements
Lissage spatial
Ressources
La présentation est un peu lourde (~20 Mo) et peut donc peut mettre un peu de temps à se charger. Je mettrai en ligne les données utilisées et le script de création de la présentation d’ici quelques jours.
[MAJ]Données et scripts sont disponibles ici.[/MAJ]
Le jeudi 21 mai 2015, dans le cadre des séminaires “R à l’Usage des Sciences Sociales” organisés par l’Ined et l’Ehess j’ai pu faire une présentation intitulée “Représentation et traitement de l’information géographique avec R : usage avancé”. Comme d’habitude le code et les données sont disponibles pour reproduire les analyses. Continuer la lecture de R à l’usage des Sciences Sociales→
Comme annoncé sur le blog du Groupe ElementR nous venons de déposer sur le CRAN le package SpatialPosition qui permet permet de calculer et de visualiser les résultats de modèles de positions : modèle de Reilly, modèle de Huff et modèle de Stewart. Ces modèles d’interaction spatiale permettent de saisir l’influence exercée par un lieu sur tous les autres (aire de marché d’un commerce, aire d’influence d’une ville, etc.). Pour plus d’information et de ressources sur ce type de modèles, vous pouvez vous référer à la vignette associée au package. Continuer la lecture de Reilly, Huff et Stewart : le package SpatialPosition→
En lisant cet article de Yann Guégan évoquant le monde selon Bernard Guetta je me suis dis: “Tiens, et si je faisais une petite carte interactive avec des cercles proportionnels en utilisant les mêmes données!”.
Le journaliste explique sa méthodologie et présente tous les outils qu’il a mobilisé dans un deuxième article. Les données (en tout cas une partie) sont également diffusées dans format libre. Cette démarche ouverte permet de reproduire les analyses, les figures etc. Bref c’est du bon boulot!
[MAJ]
Maintenant que le package cartography est sur le CRAN, j’incite fortement les potentiels utilisateurs à préférer celui-ci plutôt que rCarto. Petite présentation ici.
[/MAJ] Continuer la lecture de Mise à jour de rCarto→
Le package rgeos permet l’utilisation dans R de la librairie spatiale GEOS (Geometry Engine Open Source). Ce package sert à réaliser diverses opérations de géotraitement (union, intersections etc.).
Sous ubuntu Continuer la lecture de Installer le package rgeos sur Ubuntu→
On a récemment porté à mon attention cette visualisation de flux orientés plutôt réussie.
Comment lire ces graphiques :
L’idée de base de ce graphique est de montrer simultanément les tailles relatives des flux entre les régions. Les origines et les destinations des flux sont représentés par les segments du cercle […]. La taille des flux est indiquée par la largeur des liens à leurs extrémités. La direction du flux est encodé à la fois par la couleur du lien (celle de la région d’origine) et par l’espace entre le lien et la région de destination.Source
Lorsque j’ai essayé d’installer devtools sur un pc sous Uubuntu 14.04 j’ai eu le message d’erreur suivant :
checking for curl-config... no
Cannot find curl-config
ERROR: configuration failed for package ‘RCurl’
* removing ‘/home/tg/R/i686-pc-linux-gnu-library/3.1/RCurl’
Warning in install.packages :
installation of package ‘RCurl’ had non-zero exit status
La cartographie automatisée de flux n’est pas une chose facile à réaliser, et ce quelque soit le logiciel utilisé.
L’objectif de ce billet est de proposer un exemple de cartographie de flux avec R.
[MAJ] J’ai déplacé les données et ajouté le code sur GitHub. [/MAJ]
Les données utilisées sont des données de migration résidentielles issues de l’Insee et un fond de carte des départements français diffusé par l’IGN. Le tout est à télécharger ici sous forme de RData.
Cet exemple s’appuie sur le package igraph dédié à l’analyse et à la représentation de graphs. Les fonctionnalités de représentation de graphs orientés sont mobilisés pour représenter les migrations résidentielles entre les 6 départements les plus attractifs (hors Ile de France) entre 2003 et 2008. Continuer la lecture de Cartographie de flux avec R→
La présence des nombreux liens vers le site d’inside-r me chagrinais quand même un peu.
Après quelques tâtonnements j’ai finalement opté pour la solution suivantes :
<pre style="font-family: monospace;"><small><small>
monCode tres bien formaté et indenté
parfois le signe "<-" ne passe pas
</small></small></pre>
Une fois le code pré-publié je le copie/colle dans R pour vérifier qu’il fonctionne toujours bien.
Dans le cadre des séances de formation du Groupe ElementR Hadrien Commenges et moi avons préparé des documents pédagogiques autour de la notion de recherche reproductible avec R.
Voici un petit exemple qui montre comment l’on peut créer des figures animées avec le package animation.
La carto est faite avec le package rCarto dont les données sont également issues. Continuer la lecture de Créer une carte animée en GIF→
R pour les géographes : Éléments d’analyse de données géographiques, d’analyse spatiale et de cartographie avec R.
Il s’agit d’un manuel réalisé par le groupe ElementR, groupe de huit auteur-e-s coordonné par Hadrien Commenges. Il est le fruit de sessions de formation au logiciel R organisées à l’UMR Géographie-cités durant l’année 2012. Continuer la lecture de R pour les géographes→
… une fonction très simple qui permet d’exporter un nombre lambda d’objets R vers un classeur Excel en un seul appel. Chaque objet doit apparaitre sur une feuille distincte portant le nom de l’objet…
…La méthode fonctionne pour les data frames, les matrices, les time series et les tables…
[MAJ] La fonction geocode du package ggmap fait la même chose, de l’importance de bien se renseigner sur ce qui existe déjà avant de coder… Cela m’aura quand même permis de m’initier aux API. [/MAJ]
[MAJ]Avec ubuntu 15.10 ce n’est plus la peine d’utiliser aptitude, le apt-get install fonctionne[/MAJ]
Le package rgdal permet l’utilisation dans R des librairies spatiales GDAL (Geospatial Data Abstraction Library) et PROJ.4 qui servent respectivement à gérer différents formats de données géographiques et les conversions de projections géographiques.
Comment créer une matrice de distances (calculées en kilomètres ou en minutes) entre plusieurs points du globe?
Il existe plusieurs solutions commerciales et plus ou moins fermées pour construire ce genre de matrices (The Google Distance Matrix API, Bing Routes API ou MapQuest par exemple). Ces solutions présentent plusieurs inconvénients : limites d’extraction, limites d’utilisation, limite de diffusion…
La solution proposée ici n’utilise que des données et des outils libres :
Dans le cadre des rencontres de statistiques appliqué du Service Méthodes Statistiques de l’Ined (SMS) j’ai, avec Marta Severo, fait une présentation portant sur la visualisation de données médiatiques et géographiques avec R.
Voici le résumé de la présentation :
La combinaison d’informations géographiques et d’informations médiatiques peut s’avérer particulièrement fructueuse pour l’analyse des évènements médiatiques internationaux et notamment pour l’étude de leur propagation spatio-temporelle.
L’objectif de cette communication est de présenter les caractéristiques de la donnée médiatique et de montrer les possibilités que le logiciel R offre pour le traitement et la visualisation de ce type de données.
Nous présenterons quelques exemples faisant appel à l’interactivité, à l’animation et à la cartographie à travers l’analyse de la couverture médiatique internationale du conflit de Wukan, un village du sud de la Chine, où après des mois de protestations contre l’accaparement illégal de terres les habitants ont obtenu des élections libres.
Le package Shiny permet assez facilement et assez rapidement de construire des applications Web utilisant R comme moteur de calcul. Dans cet exemple (accessible ici : http://riate.shinyapps.io/matrixes/) il s’agit de construire une application qui transforme des données de flux ou de lien d’une forme tabulaire à une forme matricielle :
et d’une forme matricielle à une forme tabulaire :