Formation à l'utilisation des données OpenStreetMap.
Explication du modèle de données et du système de tags.
Extraction de données OpenStreetMap brutes ou formatées, intégration des données dans une base de données (PostGIS) et utilisation dans un SIG (QGis). Requêtes avec Overpass Turbo.
2. Modèle de données
Utiliser des données brutes
Utiliser des données formatées
Requêtes directes sur la base
Pour aller plus loin ...
3. Modèle de données
Une seule couche topologique
... mais tout n'est pas connecté !
Un modèle simple et extensible à volonté
4. Eléments du modèle de données
Node : id, lon, lat (WGS84)
Avec ou sans tag
Way : 2 à 2000 nodes
Au moins 1 tag
Relation : liste ordonnée d'éléments
Chaque élément peut avoir un rôle
5. Les tags décrivent les éléments
Tag : clef = valeur
● Clef et valeur sont des chaînes
de caractères libres (max. 255)
● Chaque élément peut porter
plusieurs tags qui le décrivent
● exemple : highway=primary
ref=N10
name=Nationale 10
maxspeed=90
lanes=2
6. Les tags sont libres mais ...
Tags principaux et secondaires :
Conventions documentées sur le Wiki :
http://wiki.openstreetmap.org/wiki/FR:Map_Features
amenity=bicyle_parking
bicycle_parking=stands
name=Nantes
name:br=Naoned
Namespace :
cycleway:right=busway
parking:condition=ticket
10. Quelques tags fréquents
Tag Utilisation Exemple
name Affiché sur la carte Château des Ducs de Bretagne
source Origine de la donnée cadastre-dgi-fr source : Direction Générale
des Impôts - Cadastre. Mise à jour : 2009
ref:FR:* Numéro externe ref:FR:FANTOIR = 910450022G
addr:* Adresse addr:housenumber = 4
addr:postcode = 44000
addr:street = Place Marc Elder
website Lien vers site Web www.chateau-nantes.fr
wikipedia Nom article Wikipédia fr:Château des ducs de Bretagne
opening_hours Horaires d'ouverture Mo-Sa 10:00-20:00; Tu off
heritage Lieux classés heritage=2
heritage:operator=mhs
mhs:inscription_date=1840
wheelchair Accès en fauteuil yes / no / limited
layer Pour superposer de -5 à +5
note Pour les mappeurs Piste cyclable à cartographier
11. Et les polygones ?
Way fermé
Relation type=multipolygon
Eléments :
role=outer
role=inner
[tag area=yes]
12. Les relations
Pour associer logiquement des objets proches
● polygones, limites administratives, cours d'eau
● rue : sections + adresses
● restrictions à un carrefour (ex. tourne à gauche)
● itinéraires de bus, parcours balisé
PAS pour grouper des objets par catégories :
● tous les sentiers de Bretagne
● tous les restaurants d'une chaîne
16. Historique
Toutes les versions de chaque élément sont
conservées.
Chaque node, way et relation porte ces attributs :
version=”3”
user=”BrunoC”
uid=”125252”
changeset=”6421205”
timestamp="2010-11-21T10:45:10Z"
visible=”true”
17. Modèle de données
Utiliser des données brutes
Utiliser des données formatées
Requêtes directes sur la base
Pour aller plus loin ...
18. Principaux formats de fichiers
.osm : format XML
Lisible et éditable mais volumineux
.pbf : Protocolbuffer Binary Format
Binaire et rapide mais illisible
.o5m : un compromis entre .osm et .pbf
Binaire, + rapide mais + vol. que .pbf
.osc : OsmChange
Proche de .osm + create/modify/delete
20. Utiliser des données brutes
Fichiers aux formats .osm et .pbf
Où trouver des données brutes :
● fichier planet (27Gb au format .pbf)
● fichiers préparés par GeoFabrik, Mapzen, etc.
● Exporter depuis www.openstreetmap.org
Comment les utiliser :
● import dans PostGIS avec osm2pgsql
● import dans QGis via SpatiaLite
● utilitaires pour convertir en d'autres formats
21. Données brutes → PostGis
Utilitaire osm2pgsql :
➔ accepte les formats .osm, .pbf, .o5m, .bz2 …
➔ peut charger les fichiers diffs pout tenir la base à jour
➔ création de 4 tables par défaut :
Table Description Colonnes
planet_osm_point tous les points 70 colonnes
planet_osm_line toutes les lignes 69 colonnes
planet_osm_polygon toutes les surfaces 69 colonnes
planet_osm_roads routes principales 69 colonnes
Conçu pour créer un serveur de tuiles avec Mapnik
http://wiki.openstreetmap.org/wiki/Osm2pgsql
22. Données brutes → QGis
Menu Vecteur > OpenStreetMap en 3 étapes :
● export d'un fichier .osm depuis le serveur (cette étape
peut être remplacée pour tout autre export)
● import du fichier dans une base SpatiaLite
● accès au fichier pour chaque type de géométrie
3 tables, possibilité de sélectionner les colonnes
OK pour de petits volumes de données
23. 2 feuilles de styles disponibles :
https://github.com/anitagraser/QGIS-resources
Style “googlemaps” Style “tonerlite”
Utilisables pour un import PostGis (osm2pgsql)
Données brutes → QGis
24. Deux utilitaires simples
osmconvert
➔ conversion entre les différents formats OSM
➔ filtre spatial par bounding_box ou polygone
➔ conversion de polygones en point
osmfilter
➔ filtre sur les type d'objets (nodes, ways, relations)
➔ filtre sur les clefs et valeurs
osmconvert normandie.pbf -B=orne.poly -o=orne.osm
osmfilter orne.osm --keep="shop=bakery" -o=pain.osm
http://wiki.openstreetmap.org/wiki/Osmconvert
http://wiki.openstreetmap.org/wiki/Osmfilter
25. Un utilitaire complet mais complexe
osmosis
➔ conçu pour enchaîner plusieurs opérations
➔ lecture et écriture dans une base de données
➔ peut déduire les différences entre deux versions des
données, ou les appliquer à un fichier ou une BD
➔ extrait sur une zone, filtrage par clefs-valeurs
➔ concaténation de fichiers ...
osmosis --read-xml file="planet.osm" –write-pgsql
host="x" database="x" user="x" password="x"
http://wiki.openstreetmap.org/wiki/FR:Osmosis
26. La librairie GDAL
ogr2ogr
➔ inclut un pilote pour les formats .osm et .pbf
➔ inclut la librarie SQLite qui fournit une interface
SQL aux données OSM
➔ conversion en formats SIG: SHP, Mapinfo, ...
➔ changement de projection
➔ filtrage et sélection des tags, etc.
Excellent tutoriel sur http://www.portailsig.org/
http://www.gdal.org/ogr2ogr.html
http://www.gdal.org/drv_osm.html
27. Modèle de données
Utiliser des données brutes
Utiliser des données formatées
Requêtes directes sur la base
Pour aller plus loin ...
28. Utiliser des données préparées
Fournisseur Zones courvertes Mise à jour Formats
Geofabrik.de Continents, pays et
régions
Quotidienne .pbf, .shp
Mapzen.com
metro extracts
+400 grandes villes Hebdomadaire .osm, .pbf,
.shp, .geojson
Bbike.org +200 grandes villes
ou zone à définir
Hebdomadaire .osm, .pbf, .shp
Fichiers SIG : SHP, GeoJSON ...
Principaux fournisseurs :
Données structurées en tables et colonnes
29. Exports GeoFabrik – format SHP
Exports par continents, pays, régions
Données structurées en 7 tables :
Table Description Colonnes
landuse occupation du sol osm_id, name, type
natural terrains naturels osm_id, name, type
waterways cours d'eau osm_id, name, type, width
railways réseau ferroviaire osm_id, name, type
roads réseau routier osm_id, name, type, ref, oneway,
bridge, tunnel, maxspeed
places villes, villages, hameaux osm_id, name, type, population
points un peu de tout ... osm_id, name, type
Pas de bâtiments et peu d'équipements (amenity)
30. Import GeoFabrik SHP → QGis
Feuilles de styles pour QGis partagées par 3Liz :
https://github.com/3liz/osm-in-qgis
Echelle 1:100 000 Echelle 1:10 000
… mais pas de pictogramme
31. Exports Mapzen
+400 villes dans le monde
Mise à jour hebdomadaire
6 formats pour chaque export :
● données OSM : .osm et .pbf
● osm2pgsql : formats SHP et GeoJSON
● imposm : formats SHP et GeoJSON
… mais pas de feuille de styles disponible
32. Mapzen – format IMPOSM SHP
Table Description Colonnes
admin zones administratives osm_id, name, type, admin_leve
aeroways pistes d'aéroports osm_id, name, type
landusages occupation du sol osm_id, name, type, area, z_order
waterareas plans d'eau osm_id, name, type, area
waterways cours d'eau linéaires osm_id, name, type
roads réseau routier osm_id, name, type, ref, class, oneway,
tunnel, bridge, access, service, z_order
places lieux : villages etc. osm_id, name, type, population, z_order
buildings bâtiments osm_id, name, type
transport_areas gares, aéroports osm_id, name, type
transport_points arrêts de bus osm_id, name, type, ref
amenities équipements : écoles etc. osm_id, name, type
Données structurées en 11 tables + 7 généralisées
33. Modèle de données
Utiliser des données brutes
Utiliser des données formatées
Requêtes directes sur la base
Pour aller plus loin ...
34. Requêtes sur la base
Avantages
● données à jour
● sélection sur bounding box et tags
Plusieurs APIs
● API v0.6 : API pour l'édition des données
Ne pas utiliser pour les requêtes
● XAPI : OSM Extended API
Accès direct et prédicats
● Overpass API : langage de requête complet
35. L'API Overpass
Optimisé pour les requêtes
● rapide et puissant
● nombreux filtres pouvant être combinés
Plusieurs serveurs (capacité: 1 M requêtes/jour)
● http://overpass-api.de/api/
● http://overpass.osm.rambler.ru/cgi/
● http://api.openstreetmap.fr/oapi/
Nombreuses utilisations dont 2 IDEs :
● http://overpass-turbo.eu/
● plugin Quick OSM pour QGis (par 3Liz)
36. 2 syntaxes pour un même langage
<osm-script>
<query type="node">
<has-kv k="name" v="Toulouse"/>
</query>
<print/>
</osm-script>
node["name"="Toulouse"];
out;
http://overpass-api.de/api/interpreter?data=node["name"="Toulouse"];out;
Requête XML Overpass QL
Requête
HTTP GET
37. API Overpass : fonctionnalités
Sélection par type (node, way, relation) ou id
Filtres :
●
spatial : bbox, polygon, distance
● tags : k=v, k~v, k!=v, k!~v (regex)
Opérations ensemblistes : union, difference
Récursion : node ↔ way ↔ relation
Résultat :
● format : XML, JSON, HTML, carte
● contenu : ids, geoms avec/sans tags, historique
http://wiki.openstreetmap.org/wiki/Overpass_API
39. Wizard pour générer facilement des requêtes
amenity=restaurant in Toulouse
amenity=bar or amenity=cafe around Auch
boundary=administrative and admin_level=8 in Gers
Carte interactive avec le résultat de la requête
Export des données en GeoJSON, GPX, KML …
Sauvegarde et partage de requêtes (permalien)
Possibilité de définir des styles en MapCSS
http://overpass-turbo.eu/
http://wiki.openstreetmap.org/wiki/Overpass_turbo
41. Modèle de données
Utiliser des données brutes
Utiliser des données formatées
Requêtes directes sur la base
Pour aller plus loin ...
42. Autres outils
Géocodage avec Nominatim
● Service en ligne :
https://nominatim.openstreetmap.org/
● Intégration possible dans PostgreSQL
http://wiki.openstreetmap.org/wiki/Nominatim/
Calcul d'itinéraires
● Service en ligne : http://project-osrm.org/
● pgRouting dans PostgreSQL : pgrouting.org
http://wiki.openstreetmap.org/wiki/Routing
43. Sources d'information
Manuels en ligne
➔ Learn OSM : http://learnosm.org/
➔ Switch2OSM : http://switch2osm.org/
➔ FLOSS : http://fr.flossmanuals.net/openstreetmap/
Forum
➔ français : http://forum.openstreetmap.fr/
➔ anglais : http://forum.openstreetmap.org/
Mailing lists
➔ https://lists.openstreetmap.org/listinfo
➔ http://listes.openstreetmap.fr/wws/lists
44. Remerciements
Geofabrik [www.geofabrik.de], Mapzen [mapzen.com],
Bbbike [www.bbbike.org]
➔ Exports formatés de données OSM
Maxime Résibois [http://www.portailsig.org/]
➔ Tutoriel "Récupérer des données OpenStreetMap via
GDAL:OGR"
Martin Raifer
➔ Overpass Turbo
3Liz [www.3liz.com]
➔ Feuilles de styles et plugin QuickOSM pour QGis
... et les dizaines de milliers de contributeurs OpenStreetMap
45. Antoine Riche
06 76 88 13 49
antoine.riche@cartocite.fr
Carto'CITÉ
Agence de géomatique
www.cartocite.fr
Vous pouvez partager et adapter cette présentation
à condition de l'attribuer à son auteur et de partager
vos adaptations dans les mêmes conditions.
http://creativecommons.fr
Notes de l'éditeur
uid = user id car user peut êter modifé (display name)