OpenStreetMap pour les géomaticiens

Preview:

Citation preview

Une ressource pour

les géomaticiens

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

Modèle de données

Une seule couche topologique ... mais tout n'est pas connecté !

Un modèle simple et extensible à volonté

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

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=N10name=Nationale 10maxspeed=90lanes=2

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_parkingbicycle_parking=stands

name=Nantesname:br=Naoned

Namespace :cycleway:right=buswayparking:condition=ticket

Wiki : Map Features

Wiki : Map Features

Quelques tags fréquentsTag 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 = 4addr:postcode = 44000addr: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=2heritage:operator=mhsmhs:inscription_date=1840

wheelchair Accès en fauteuil yes / no / limited

layer Pour superposer de -5 à +5

note Pour les mappeurs Piste cyclable à cartographier

Et les polygones ?

Way fermé

Relation type=multipolygon

Eléments :role=outerrole=inner

[tag area=yes]

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

Une relation dans JOSM

On assemble le tout ...

Hétérogénéité des géométries

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”

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

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

Format .osm : export d'une piscine

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

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

Données brutes → QGisMenu 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

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

Deux utilitaires simplesosmconvert➔ 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

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-pgsqlhost="x" database="x" user="x" password="x"

http://wiki.openstreetmap.org/wiki/FR:Osmosis

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.htmlhttp://www.gdal.org/drv_osm.html

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

Utiliser des données préparées

Fournisseur Zones courvertes Mise à jour Formats

Geofabrik.de Continents, pays et régions

Quotidienne .pbf, .shp

Mapzen.commetro extracts

+400 grandes villes Hebdomadaire .osm, .pbf, .shp, .geojson

Bbike.org +200 grandes villesou zone à définir

Hebdomadaire .osm, .pbf, .shp

Fichiers SIG : SHP, GeoJSON ...

Principaux fournisseurs :

Données structurées en tables et colonnes

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)

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

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

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

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

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

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)

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êteHTTP GET

API Overpass : fonctionnalitésSé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

Overpass Turbo

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

Plugin QuickOSM pour QGis

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

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

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

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

Antoine Riche06 76 88 13 49

antoine.riche@cartocite.fr

Carto'CITÉAgence de géomatiquewww.cartocite.fr

Vous pouvez partager et adapter cette présentationà condition de l'attribuer à son auteur et de partagervos adaptations dans les mêmes conditions.

http://creativecommons.fr

Recommended