Extraction de donnée openstreetmap

J'avais besoin de télécharger des donnés d'openstreetmap.

La solution la plus simple c'est d'aller sur le Planet

Mais le monde fait 70 giga (malgré la compression bz2) donc c'est lent à télécharger, et très lent à manipuler.

Pour aider, il y a Geofabrik qui propose des zones plus petits (pays généralement) sur cette page , ici l'europe

Vu que j'avais juste besoin de la ville de Namur, la solution la plus simple c'est de télécharger les limites de la zone.

Pour ce faire, dans openstreetmap j'utilise le moteur de recherche. Pour Namur, il y a plusieurs limite (ville, commune et province) , moi c'est la commune dont j'ai besoin.

Bon ça s'appelle "City Namur, Wallonia, Belgium" dans openstreetmap .

Quand on clique dessus, on remarque sur le coté qu'il indique Relation: Namur (1405439)

Pour en obtenir les limites, le site Polygons.openstreetmap.fr est facile à utiliser.

Il propose donc de télécharger un fichier WKT, un fichier GeoJSON, un fichier poly (ce qu'on va utiliser) et un fichier image

openstreetmap_limite_namur.png

Je renomme le fichier en namur.poly ça sera plus simple

L'utilisation des fichiers .poly est très bien expliqué sur la page Poly d'opensteetmap

Attention que si vous téléchargez un fichier en .osm.pbf, il faut d'abord le convertir en .osm via 

osmium cat belgium-140101.osm.pbf -o belgium-140101.osm

Après avoir extrait le fichier osm de l'archive, je lance donc la commande

osmosis read-xml file="belgium-180428.osm " bounding-polygon file="namur.poly" --write-xml file="namur.osm"

Je me ramasse une erreur

Node 123295 does not have a version attribute as OSM 0.6 are required to hav

(un nœud est tellement vieux qu'il date de la version précédente d'openstreetmap)

La solution indiqué dans les forums est d'utiliser cette commande

osmconvert belgium-180428.osm --fake-version -o=belgium-180428_correct.osm

Qui permet d'ajouter des fausses infos de version si besoin

J'aurais put relancer la première commande, mais j'ai décidé de continuer à tester osmconvert, donc

osmconvert belgium-180428_correct.osm -B=namur.poly -o=namur-180428.osm

Et on obtient un fichier .osm de 16.5mo, facilement ouvrable avec JOSM etc

Vu que j'ai télécharger plusieurs années (2014->2018) Voici une commande qui permet de lancer tout le processus pour chaque année

osmium cat belgium-140101.osm.pbf -o belgium-140101.osm && osmconvert belgium-140101.osm --fake-version -o=belgium-140101_correct.osm && osmconvert belgium-140101_correct.osm -B=namur.poly -o=namur-140101.osm

Il y a peut être moyen de simplifier ça avec les pipe, mais je ne vais pas en apprendre l'usage pour si peu.

On pourrait aussi certainement utiliser des expressions régulières pour avoir toutes les années en un coup mais bon... , j'ai simplement faire un "control-h" dans un éditeur de texte pour remplacer 14 par 15, 16 etc

Ajouter un commentaire

Les commentaires peuvent être formatés en utilisant une syntaxe wiki simplifiée.

Haut de page