WEBZINE

Comment exploiter mes données issues d’OpenStreetMap ?

Dans cet article nous allons découvrir comment télécharger des données géographiques issues du projet OpenStreetMap pour les intégrer dans une base de données spatiale et en extraire l’information souhaitée. 

Quels avantages à intégrer des données OpenStreetMap ?

  • Possibilité de créer des fonds de cartes personnalisés :
    • Choisir les éléments cartographiques présent sur la carte (routes, commerces, délimitations administratives, espaces naturels etc…)
    • Définir le style de ces éléments (iconographie, colorimétrie etc..)
    • Choisir l’échelle d’affichage de ces différents élément (A partir de quel niveau de zoom les éléments deviennent visibles)
  • Exploiter les données avec des analyses spatiales comme par exemple sélectionner tous les commerces dans un rayon de 10 km, afficher la borne de recharge pour véhicules électrique la plus proche, calculer un itinéraire entre deux adresses etc…

Présentation d'Open Street Map

OpenStreetMap est un projet de cartographie collaboratif initié au Royaume-Uni en 2004. Il est souvent comparé au Wikipédia de la cartographie car il s’appuie dans un premier lieu sur la contribution individuelle. C’est la plus grande base de données géographique open source mondiale.

Chacun est libre de participer au projet que ce soit de manière ponctuelle ou assidue. Il y a actuellement plus d’1,5 millions de contributeurs au projet dans le monde entier.

L’ensemble des données collectées sont libres et réutilisables (Licence Open Data Commons Open Database License ODbL). Ce qui signifie que l’utilisateur est libre de copier, distribuer et adapter l’ensemble des données sous conditions de créditer les contributeurs OSM. Et si les données sont modifiées ou adaptés elles doivent être distribuées sous la même licence.

Le projet s’appuie également sur des dons de données propriétaires, ce qui a largement permis son développement.

A l’heure actuelle, la grande majorité de l’espace planétaire est cartographié et disponible.

Le projet se présente désormais comme une alternative sérieuse aux projets cartographiques propriétaires.

Une cartographie disponible dans OpenStreetMap

Ces données sont utilisables de différentes manières :

  • Productions de cartes (web / statiques) :

De nombreux fonds de cartes utilisent des données issues d’OSM. (Map Stamen par exemple).

Il est également possible de créer votre propre fond de carte personnalisé en fonction des données que vous souhaitez représenter visuellement sur le fond de carte.

  • Géocodage et Géocodage inversé

Nominatim est un projet Open Source qui utilise les données OpenStreetMap pour effectuer des actions de géocodage. C’est-à-dire rechercher des emplacements en fonction d’une adresse. Ou alors du géocodage inversé, trouver l’adresse correspondant à un position géographique donnée.

  • Calcul d’itinéraires

De plus en plus d’applications de navigation utilisent en partie les données issues d’OpenStreetMap pour fournir des calculs d’itinéraires. C’est particulièrement vrai pour les applications dédiées aux cycles. En effet les informations disponibles dans OpenStreetMap ont l’avantage d’être mises à jour en continu par les contributeurs et sont très précises pour les chemins et pistes cyclables.

Préparation de la base de données

Avant de télécharger le jeu de données il est indispensable de préparer le serveur et la base de données ainsi que les outils nécessaires à l’extraction et à la manipulation des données.

Prérequis

  • SGBD PostgreSQL installé avec la version de l’extension postGIS correspondante.

Vous pouvez installer l’extension Postgis sur le site officiel en cliquant ici.

Vous pouvez télélcharger PostgreSQL sur le site officiel en cliquant ici.

  • Le logiciel OSM2PGSQL pour importer vos données dans PostgreSQL.

Pour terminer les prérequis, nous vous recommandons de télécharger OSM2PGSQL, disponible sur le site officiel en cliquant ici.

Configuration de PostgreSQL

Configurez votre SGBD avec les paramètres suivant à renseigner dans le fichier postgresql.conf :

shared_buffers = 2GB

maintenance_work_mem = (10GB)

autovacuum_work_mem = 2GB

work_mem = (50MB)

effective_cache_size = (24GB)

synchronous_commit = off

max_wal_size = 1GB

checkpoint timeout = 10min

checkpoint_completion_target = 0.9
Création d’un rôle :
CREATE ROLE osm_user WITH
  NOLOGIN
  NOSUPERUSER
  INHERIT
  CREATEDB
  NOCREATEROLE
  NOREPLICATION
  ENCRYPTED PASSWORD 'md52c0b602a72a002c4a78894897ce7d850'
  VALID UNTIL '2034-06-06 11:54:35+02';

Création de la base de données :

CREATE DATABASE osm_paca
WITH

OWNER = postgres

ENCODING = 'UTF8'

LC_COLLATE = 'French_France.1252'

LC_CTYPE = 'French_France.1252'

TABLESPACE = pg_default

CONNECTION LIMIT = -1;


COMMENT ON DATABASE osm_paca

IS 'OSM Data of PACA district';


GRANT ALL ON DATABASE osm_paca TO osm_user;

Ajout des extensions nécessaires :

CREATE EXTENSION hstore;
CREATE EXTENSION postgis
    VERSION "2.5.3next";

La base de données est désormais prête pour recevoir les données spatiales extraites depuis OpenStreetMap.

Exporter ou extraire des données OpenStreetMap

Il existe différentes manières d’extraire des données du projet OpenStreetMap voici deux possibilités :

Extraire quelques éléments spécifiques via l’API Overpass Turbo 

Affichage de l'ensemble des stations de chargement pour véhicule éléctrique.

Ici  on exécute une requête sur l’API Overpass turbo pour afficher l’ensemble des stations de chargement (Véhicules électrique) présentes sur l’emprise de la carte. 

Récupérer l’ensemble des données de la base pour la zone géographique souhaitée :

Il est possible de télécharger les données OpenStreetMap depuis différents site web, comme par exemple celui-ci ou encore celui-là.

Les données sont disponibles pour les différentes zones géographiques du Globe.

Pour cette démonstration nous allons télécharger le fichier suivant qui contient l’ensemble des données OSM pour la région Provence Alpes Côte d’Azur.

Le format .pbf (ProtocolBuffer Binary Format) est une alternative au XML, il est utilisé ici pour avoir des fichier plus légers.

Importation des données

Pour importer les données précédemment téléchargées nous utilisons le logiciel OSM2PGSQL qui est un utilitaire prévu pour l’import des données OSM dans une base de données PostgreSQL / PostGIS. Il est utilisable en ligne de commande et les différents paramètres à fournir pour la connexion à la base de données et le paramétrage de l’import des données sont présentées ci-dessous :

Options pour la connexion à la base de données :

    -d|--database=DB  The name of the PostgreSQL database to connect
-U|--username=NAME PostgreSQL user name.
-W|--password Force password prompt.
-H|--host=HOST Database server host name or socket location.
-P|--port=PORT Database server port.

Options pour l’import des données OSM :

-S|--style=FILE   Location of the style file. Defaults to
'default.style'.
-k|--hstore Add tags without column to an additional hstore column.

--tag-transform-script=SCRIPT Specify a Lua script to handle tag
filtering and normalisation (pgsql output only).
-s|--slim Store temporary data in the database. This switch is
required if you want to update with --append later.
--drop Only with --slim: drop temporary tables after import
(no updates are possible).
-C|--cache=SIZE Use up to SIZE MB for caching nodes (default: 800).

Nous pouvons donc lancer l’import des données téléchargées dans la base de données configurée précédemment en exécutant la ligne suivante. La projection cartographique utilisée par défaut est la web Mercator ou pseudo Mercator (3857).

osm2pgsql -c -d osm_paca -U osm_user -H localhost -P 5433 -W -S path\to\file.style path\to\file.osm.pbf  

Une fois l’import terminé nous pouvons accéder à la base de données pour vérifier que les données sont bien présentes.

Les données sont regroupées selon leur type ( Point / Lignes / Polygones).

Nous souhaitons créer des tables spécifiques pour y stocker les informations de manière  plus structuré. Pour exploiter des données OpenstreetMap il est nécessaire de comprendre la structuration des données. Le Wiki du projet OSM permet d’accéder aux informations relatives à la classification des données.

Ce wiki est accessible en suivant ce lien

Pour l’exemple nous allons maintenant créer une table qui contiendra l’ensemble des bornes de recharge électrique pour véhicules. Ces données seront stockées dans un nouveau schéma.

create schema if not exists osm;
drop table if exists osm.charging_station;
create table osm.charging_station(
  id serial not null primary key,
  osm_id bigint,
  name text,
  "access" text, 
  amenity text,
  motorcar text,
  operator text,
  ref text,
  geom geometry(multipoint, 3857)
);
create index gix_charging_station on osm.charging_station using gist(geom);
delete from osm.charging_station;
insert into osm.charging_station(osm_id, name, "access", amenity,  motorcar, operator, "ref", geom) 
  SELECT planet_osm_point.osm_id, 
    planet_osm_point.name, 
	planet_osm_point.access,
	planet_osm_point.amenity, 
    planet_osm_point.motorcar,
    planet_osm_point.operator,
	planet_osm_point.ref,
    st_multi(planet_osm_point.way)::geometry(MultiPoint, 3857) as way
  FROM planet_osm_point
  WHERE (planet_osm_point.amenity = 'charging_station');

La plateforme d’administration pgAdmin dispose d’un outil permettant la visualisation pour les données cartographiques présentes en base.  Ci-dessous une capture d’écran des stations de recharge électriques que l’on vient tout juste d’extraire.

Nous avons vu dans cet article comment récupérer et intégrer des données issues d’OpenstreetMap dans une base de données spatiales. Le prochain article sera consacré à la mise en place d’un serveur cartographique (GeoServer) qui permettra de créer des web services cartographiques à partir de ces données.

📚  Références :

Faites-nous part de vos impressions sur cet article en nous écrivant ! Il n’est pas figé et évoluera au fil de vos retours. Et, si vous avez apprécié, partagez-le ! 👇

Partager sur facebook
Facebook
Partager sur google
Google+
Partager sur twitter
Twitter
Partager sur linkedin
LinkedIn
Partager sur email
Email

Parce que lire, c’est fondamental !

Conseils, innovation ou success stories: découvrez les articles écrits ou mis en avant par nos Hcubiens. Des nouveautés vous attendent chaque semaine ! Bonne lecture !

Parce que lire, c’est fondamental !

Conseils, innovation ou success stories: découvrez les articles écrits ou mis en avant par nos Hcubiens. Des nouveautés vous attendent chaque semaine ! Bonne lecture !

CONTACTEZ NOUS

contact@hcube-conseil.fr
04 42 39 66 98
Nous trouver

INFORMATIONS

Nous contacter
Ils parlent de nous
Travailler avec nous
Conditions d’utilisation
RGPD

HCube Conseil 2019