RSS Libre@vous
RSS de la rubrique Géomatique

Dernière mise à jour
le 19/05/2013 à 21h12
Les contenus de ce site sont publiés sous la licence CC by-sa, sauf mention contraire.
licence_CC-by-sa
Copyright © 2013 Libre @ vous. Tous droits réservés.
Joomla! est un logiciel libre sous licence GNU/GPL.
03
Mar
2011
Extraire et transformer des données OpenStreetMap au format shapefile Imprimer
Dans un précédent billet, j'ai brièvement présenté le projet de cartographie libre et collaborative OpenStreetMap. Je vais ici vous présenter quelques outils et manipulations qui permettent d'extraire des données depuis la base OpenStreetMap et de les transformer au format shapefile afin de les exploiter avec n'importe quel logiciel SIG.

Comme rien ne vaut l'explication par l'exemple, je vais prendre un cas concret que j'ai eu à traiter dans le cadre de mes activités professionnelles. Il s'agissait de récupérer au format shape toutes les autoroutes sur le territoire allemand.

1ère étape : le téléchargement des données


Les données OpenStreetMap sont disponibles en téléchargement sur le site de la société Cloudmade, fondée par le créateur d'OpenStreetMap Steve Coast. Les données à télécharger sont fournies au format OSM spécifique à OpenStreetMap, mais également au format shape. Voici le lien direct en ce qui concerne l'Allemagne : http://downloads.cloudmade.com/europe/germany

Les fichiers disponibles sont mis à jour régulièrement depuis la base de données d'OpenStreetMap. Ils sont découpés par continents, pays ou régions (Länder en Allemagne). Si vous choisissez de télécharger le format shape, vous obtenez un fichier zip contenant plusieurs couches : routes, limites administratives, surface en eau, ...

Les données sur le site de Cloudmade sont très peu souvent mises à jour. Vous pouvez également trouver des fichiers Shape extrait d'OSM sur le site de Goefabrik : http://download.geofabrik.de/osm/

Dans mon cas le problème était que je ne devais récupérer que les routes de types "autoroute" (c'est à dire caractérisées par le tag highway=motorway dans OpenStreetMap). Une première possibilité aurait été de récupérer le shape contenant les routes et d'utiliser directement un SIG pour filtrer les données en se basant sur les valeurs attributaires. Mais le traitement aurait sans doute été très long étant donné la taille importante du fichier (620 Mo).
J'ai donc préféré récupérer le fichier au format OSM germany.osm.highway.bz2 et utiliser un outil spécialement conçu pour traiter les données OSM qui s'appelle Osmosis.

2ème étape : l'extraction des données avec Osmosis


Le fichier highway issu d'OpenStreetMap regroupe tous les types de voies de circulation existants : autoroutes, voies rapides, routes primaires, secondaires, tertiaires, résidentielles, pistes en terre, sentiers, etc. Il s'agissait donc d'extraire seulement les autoroutes depuis ce fichier contenant toutes les routes d'Allemagne. Osmosis est un outil en java (donc qui fonctionne sous Windows, GNU/Linux ou Mac) qui s'exécute en ligne de commande. L'absence d'interface graphique permet de très bonnes performances pour l'extraction de données dans des gros fichiers. Voici comment j'ai réalisé l'extraction dans mon cas :
osmosis --read-xml file="germany.osm.highway.bz2" --tag-filter accept-ways highway=motorway --used-node --tag-filter reject-relations --write-xml file="germany.motorway.osm"

Il s'agit de préciser le fichier en entrée avec l'option --read-xml et le fichier en sortie avec l'option --write-xml. Les options --tag-filter permettent de préciser les éléments à conserver ou ceux à supprimer. Ici on conserve tous les chemins caractérisés par le tag highway=motorway et on rejette toutes les relations. L'option --used-node permet de récupérer également tous les points empruntés par les chemins récupérés. Si on ne veut que le linéaire des autoroutes, on n'est pas obligé d'ajouter cette option. Le traitement a duré environ 20 minutes pour un fichier d'entrée de 620Mo. Le fichier de sortie obtenu faisait une taille de 45Mo.

3ème étape : la transformation en shape


Pour cette étape il existe plusieurs outils, dont un également en java ligne de commande. J'ai essayé de l'utiliser mais je n'ai pas réussi à le faire fonctionner correctement.  Du coup, j'ai choisi d'utiliser un SIG libre bien connu : QuantumGIS. En effet depuis la version 1.2, ce SIG propose une extension pour OpenStreetMap. Il suffit de l'activer avec le gestionnaire d'extensions pour bénéficier d'une nouvelle barre d'outils dédiés à OpenStreetMap.

qgis_osm

Le premier icône à gauche permet d'ouvrir un fichier local au format OSM. J'ai donc pu ouvrir le fichier germany.motorway.osm contenant les autoroutes d'Allemagne.

qgis_osm2
Pour finir, il ne reste plus qu'à sauver la couche nommée germany_lines au format shapefile en sélectionnant la couche puis en cliquant sur le menu Couche > Sauvegarder sous. A noter que QGIS propose un grand nombre de formats de sauvegarde autres que le shape (MapInfo, KML, ...)

Vous voilà maintenant prêt à utiliser les données d'OpenStreetMap dans vos SIG.

 

Commentaires  

 
#1 maxe 02-02-2012 09:26
jai besoin de plus des détails si possible merci.
Citer
 

Ajouter un Commentaire

Tout les contenus de ce site sont publiés selon les termes de la licence Creative Commons by sa. En ajoutant votre commentaire, vous acceptez implicitement sa mise à disposition selon les termes de cette licence.


Code de sécurité
Rafraîchir