OpenStreetMap
OpenStreetMap (OSM) est un projet qui a pour but de constituer une base de données géographiques libre du monde.
Site principal :
Outils dérivés
- http://map.meurisse.org : pour calculer des distances
- http://map.project-osrm.org : calcul d'itinéraire
- http://www.openrunner.com/
overpass turbo
Outil permettant de réaliser des requêtes sur le base de données OpenStreetMap :
Mode d'emploi :
- https://wiki.openstreetmap.org/wiki/FR:Overpass_turbo
- https://wiki.openstreetmap.org/wiki/FR:Overpass_API/Overpass_QL
Document très utile :
Exemples de scripts
Ci-dessous, un exemple de code permettant d'identifier les éléments ayant la caractéristique "amenity=farm" :
/* This has been generated by the overpass-turbo wizard. The original search was: “"amenity"="farm" global” */ [out:json][timeout:25]; // gather results ( // query part for: “amenity=farm” node["amenity"="farm"]; way["amenity"="farm"]; relation["amenity"="farm"]; ); // print results out body; >; out skel qt;
Autre exemple
/* Liste des routes limitées à 30 km/h sur la zone de la carte visible */ // I - Format des données générées et durée maximum de la requête [out:json][timeout:25]; // II - La requête ( way["highway"]["maxspeed"="50"]({{bbox}}); ); // III - La sortie des résultats // III.1 - avec représentation des éléments sur la carte out body; // Sortie de tous les résultats >; out skel qt;
Autre exemple, uniquement un tableau de résultat : liste des pharmacies sur la commune de Rennes
[out:csv(::"type",::"id", name, admin_level,::"count")]; area[name="Rennes"][boundary]; rel(area)[boundary][admin_level=7]; map_to_area; foreach->.d( (.d;); out; (node(area.d)[amenity=pharmacy]; way(area.d)[amenity=pharmacy]; relation(area.d)[amenity=pharmacy]; ); out; out count; );
Liste et carte des adresses n'ayant pas de code postal.
[out:json][timeout:25]; ( node["addr:street"][!"addr:postcode"]({{bbox}}); way["addr:street"][!"addr:postcode"]({{bbox}}); ); out skel; out;
Mise en évidence des routes et des vitesses autorisées
[bbox:{{bbox}}]; ( way["highway"](if: (is_number(t["maxspeed"]) && t["maxspeed"] <= 90)); >; ); out; {{style: way[highway][maxspeed=30] { color:red; width:4; opacity:.7; } way[highway][maxspeed=50] { color:green; width:4; opacity:.7; } way[highway][maxspeed=70] { color:blue; width:4; opacity:.7; } way[highway][maxspeed=80] { color:grey; width:4; opacity:.9; } way[highway][maxspeed=90] { color:black; width:3; opacity:.7; } }}
Toutes les contributions d'un utilisateur
[out:json][timeout:25]; (node(user:fylip22)({{bbox}});); out body; >; out skel qt;