Archives par mot-clé : OpenStreetMap

How to Build a European-Wide OSRM Server on a Desktop Computer

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.

Original post here!

Nouvelle version du package osrm

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).

Lien vers le billet

Aperçu :

The maptiles package

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:

# install.packages("remotes")
remotes::install_github("riatelab/maptiles")

Note: maptiles uses terra which requires a recent version of GDAL (>= 3.0.4).

Demo

This is a basic example which shows you how to dowload and display OpenStreetMap tiles over North Carolina:

library(sf)
library(maptiles)
# import North Carolina counties
nc <- st_read(system.file("shape/nc.shp", package="sf"), 
              quiet = TRUE)
# dowload tiles and compose raster (SpatRaster)
nc_osm <- get_tiles(nc, crop = TRUE)
# display map
plot_tiles(nc_osm)
# add Norh Carolina counties
plot(st_geometry(nc), col = NA, add = TRUE)
# add credit
mtext(text = get_credit("OpenStreetMap"), 
      side = 1, line = -1, adj = 1, cex = .9, 
      font = 3)

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:

# define the query
fullserver <- paste(
  "https://server.arcgisonline.com/ArcGIS/rest/services",
  "Specialty/DeLorme_World_Base_Map/MapServer",
  "tile/{z}/{y}/{x}.jpg",
  sep = "/"
)
# define the tile server parameter
esri <-  list(
  src = 'esri',
  q = fullserver,
  sub = NA,
  cit = 'Tiles: Esri; Copyright: 2012 DeLorme'
)
# dowload tiles and compose raster (SpatRaster)
nc_esri <- get_tiles(x = nc, provider = esri, crop = TRUE, 
                     cachedir = tempdir(), verbose = TRUE)
# display map
plot_tiles(nc_esri)
# display credits
mtext(text = esri$cit, side = 1, line = -1, 
      adj = 1, cex = .9, font = 3)

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:

Note

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.”

Cartographic Explorations of the OpenStreetMap Database with R

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…).

This reproducible analysis is hosted on GitHub (code + data + walk-through).

Continuer la lecture de Cartographic Explorations of the OpenStreetMap Database with R

Mise à jour du package osrm (version 2.0.0)

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)

Temps de trajet et matrices de distances avec R et OpenStreetMap

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

Géocoder en masse avec R et sans Google Maps

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

Quatrièmes Rencontres R

J’étais conférencier invité aux Quatrièmes Rencontres R qui ont eu lieu à Grenoble du 24 au 26 juin et j’ai pu y faire la présentation suivante : Représentation et traitement de l’information géographique.
Le plan de la présentation :

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]

R à l’usage des Sciences Sociales

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

Création d’une matrice de distances routières avec des outils et des données libres (2/2)

2 – Interrogation de l’API et constitution de la matrice de distance avec R

Le programme R suivant construit la matrice de distance entre une table d’origines et une table de destination. Le format de ces tables doit comprendre un champ d’identifiant et deux champs contenant les longitudes et latitudes des points en WGS84. Continuer la lecture de Création d’une matrice de distances routières avec des outils et des données libres (2/2)

Création d’une matrice de distances routières avec des outils et des données libres (1/2)

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 :

  • Un réseau routier, issu d’OpenStreetMap (OSM).
  • Le logiciel Osmosis permettant de manipuler les données OSM.
  • L’application GraphHopper pour calculer les itinéraires.
  • R pour interroger l’API de GraphHopper et constituer la matrice de distance.

L’objectif est ici de calculer une matrice de distances entre une vingtaine de villes françaises, belges, allemandes luxembourgeoises et néerlandaises. Continuer la lecture de Création d’une matrice de distances routières avec des outils et des données libres (1/2)