Openstreetmap : Quelques astuces 2

De nouveau un petit billet avec des astuces pour Openstreetmap. Enfin ici c'est juste une.

J'avais besoin d'extraire les donnés ajoutés par un utilisateur spécifique.

Je montre une manière de faire, il y a certainement plus rapide ou plus pratique. Genre overpass-API. Si vous en connaissez, y a les commentaires

Comme d'habitude je travaille d'abord dans une zone définie, la Wallonie [1]

Donc la première étape après avoir téléchargé le fichier pour la Belgique et pour un usage interne aux contributeurs d'openstreepmap sur le site de Geofabrik

Le fichier obtenu est "belgium-latest-internal.osm"

Il me faut aussi les frontières de la Wallonie, pour ça on fait une recherche sur le site d'openstreetmap,

On clique logiquement sur "Frontière de"

Et je vois que la Wallonie a le numéro d'id 90348. C'est visible dans l'url https://www.openstreetmap.org/relat.... Puis on copie l'id sur le site polygons openstreetmap pour obtenir un fichier .poly

Puis je lance la commande

osmconvert belgium-latest-internal.osm.pbf -B=wallonie.poly -o=wallonie.osm

Pour extraire la Wallonie de la Belgique.

Vu que je ne bosse que sur les buildings, je filtre de nouveau le fichier pour ne garder qu'eux. [2]

osmfilter wallonie.osm --keep="building=" -o=walloniee_building.osm

Le fichier produit ne contient donc "que" les buildings crée par n'importe qui en Wallonie (ça représente 1.6 Gio en novembre 2021, la Wallonie au complet donne 3.3 Gio)

Puis vu que j'ai besoin que des modifications faites par un utilisateur, il faut arriver a le trouver.

Vu qu'un utilisateur est susceptible de changer de nom, Openstreetmap lui attribue un numéro universel qui lui ne change pas.

Pour trouver ce numéro, il faut aller sur la page openstreetmap de l'utilisateur et regarder l'historique de ses contributions https://www.openstreetmap.org/user/XXXXXX/history.

On clique sur une des modifications et tout en bas il y a "XML du groupe de modification" on clique dessus et ça ouvre les données brutes du changement

<changeset id="XXXX" created_at="2021-11-10TXXX" closed_at="2021-11-10TXXX" open="false" user="XXXXX" uid="XXXXX" min_lat="XXXXX" min_lon="XXXX" max_lat="XXXXX" max_lon="XXXXX" comments_count="0" changes_count="X">

Ce dont a besoin, c'est le uid

On lance donc une commande

osmfilter wallonie_building.osm --keep="@uid=XXXX" -o=wallonie_building_user.osm

Qui produit un fichier osm avec les changements d'un seul utilisateur.

(Il y a moyen aussi de faire l'inverse en supprimant un utilisateur. Il suffit de remplacer keep par drop)

Alors pourquoi j'ai fait ça ?

Car je voulais voir les contributions d'un utilisateur dont croise parfois des contributions quand je cartographie. Et une des particularités de ses contributions, c'est qu'il fait très souvent une seule maison dans une rue.

C'est étrange mais après réflexion, c'est possiblement pour aider les GPS à trouver cette rue (car s'il ne trouve pas le n°5 mais qu'il connaît le n°75 ben il va l'indiquer)

Voilà ce que ça donne avec Josm et un fond de carte en semi-transparent pour vous permettre de mieux situer.

(Attention, s'il y a bcq de données Josm va avoir du mal)

Et un zoom, on remarque bien les "une maison par rue" sauf sur certains secteurs.

Notes

[1] partie sud de la Belgique

[2] Y a moyen de faire toutes les commandes en une, mais bon je fais de la pédagogie

Ajouter un commentaire

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

Haut de page