Extraire les nœuds intermédiaire à partir de way

Bonjour,
je suis débutant avec les données OSM, ma question est : comment récupérer à partir d’un fichier .osm une liste de way avec les nœuds qui les composent.
Pour donner une idée de la structure de données que j’aimerai obtenir voici un example :

way nodes
583176 269521911, 269521912, 269521913
583178 269521915, 269521916, 269521917, 269521918, 269521919
68748 26952, 26959, 269521919

(pour chaque way tous les nodes qui le composent)

dois-je m’orienter vers des outils de types : osmosis, ou osmfilter.
ou sinon attaquer directement le fichier osm et extraire avec un script maison ?

Je vous remercie par avance.
Respectueusement
Concalite

Bonsoir,
Ce que tu recherches reprend fidèlement la structure des données OSM, où un way n’a pas de géométrie en tant que tel mais est une suite de références à des points. Si tu parses un fichier OSM (en fait un fichier xml), tu verras en début de fichier tous les points, puis seulement ensuite les ways ave des tags “nd” suivis des IDs des noeuds.

Après, la manière de procéder va dépendre du volume que tu veux brasser : le XML pour quelques Mo, et assez vite un chargement en BD sinon.

vincent

Comme le dit vdct, les infos que tu cherches, c’est exactement ce que contient un fichier osm sans transformations spéciales. Ce qu’il te faut donc, c’est “juste” passer d’un format xml vers ton format.
Je pense que tous les autres programmes dont osmconvert qui est bien pour manipuler des fichiers osm ne te permettrons pas une opération à la foi “simple” et “spécifique”

C’est ce que je pense qui a le plus de chance d’aboutir, un langage qui propose un parseur xml et à mon avis en 10 lignes de code c’est fait.

Mais je m’étonne quand même du format que tu souhaites obtenir, à quoi peut-t-il te servir ? Si ce n’est qu’un format intermédiaire pour ensuite re-traiter ce fichier, il y a peut-être des chances qu’il existe cette fois un outil pour arriver à ton objectif final :wink:

Bonsoir,

D’abord merci pour votre réactivité, l’objectif de ce projet est de construire un graphe routier (sommet arc : théorie des graphe) avec un coût spécifique pour les arcs (qui seront représenté par les way) mais j’ai besoin des points intermédiaire.
Le soucis c’est que je veux le faire sur un bloc de données de taille importante (la taille d’une région, ex : ile de france).
le bloc de données fait 6 giga :s
Donc la meilleure option c’est un script fait maison c’est bien ça ?

sinon c’est quoi cette approche de base de donnée ??

Et comment vas-tu calculer le coût des arcs si tu n’as pas les coordonnées des noeuds ? A un moment donné, il te les faudra forcément non ?
En même temps, j’imagine qu’il te faudra d’abord découper tous tes ways en arcs, et pour ça, tu peux te passer pour l’instant des coordonnées, mais tu en aura besoin pour calculer tes coûts.

Si plus tard tu as besoin des coordonnées, perso, je tenterais sans doute d’abord quelque chose avec osmosis. Sachant en plus que tu vas manipuler des grosses données, osmosis te mettra tout ça dans une base postgresql et ça sera peut-être plus performant que de bosser avec 2 énormes fichiers (un qui contient id ways->ids nodes et l’autre id node → coordonnées)

Et si jamais une base de données ne t’apporte pas assez de performance, il sera toujours temps de faire des requêtes SQL pour tout charger en RAM et de faire ton routage là dessus.

Bon, je propose ça, mais j’ai jamais fais, donc c’est un peu doigt mouillé pour savoir quelle est la meilleure route à prendre ( haha :wink: )