Utilisation des données OSM dans le cadre scolaire.

Extraire des données OSM, créer sa carte, uMap, utiliser sur un GPS ou un smartphone...
okno
Messages : 4
Inscription : dim. févr. 05, 2017 3:20 pm

Utilisation des données OSM dans le cadre scolaire.

Message par okno » dim. févr. 05, 2017 3:38 pm

Bonjour à tous,
Je suis actuellement dans une formation de dev et on doit faire cette année une application qui utilise A*. On voudrait que notre application mobile (en java donc ) utilise la base de données osm comme . J'avoue que je suis un peu paumé quand à la façon dont on devrait procéder pour récupérer et exploiter les données qui nous intéressent.

Vos conseil sont les bienvenue. Merci d'avance!

Avatar de l’utilisateur
cquest
Messages : 1659
Inscription : ven. avr. 16, 2010 12:22 am
Localisation : Val de Marne
Contact :

Re: Utilisation des données OSM dans le cadre scolaire.

Message par cquest » lun. févr. 06, 2017 12:32 am

Une piste à suivre pour ce qui touche au calcul d'itinéraires: http://wiki.openstreetmap.org/wiki/Routing

Les données OSM sont très riches et contiennent bien plus que les routes. Il faut donc filtrer pour ne récupérer que ce qui vous est utile.

Ceci peut être relativement complexe si vous voulez récupérer des détails dans le graphe, comme les interdictions de tourner, les limites de vitesse, etc... mais il y a plein de code déjà existant ;)

okno
Messages : 4
Inscription : dim. févr. 05, 2017 3:20 pm

Re: Utilisation des données OSM dans le cadre scolaire.

Message par okno » mar. févr. 14, 2017 3:08 pm

Merci pour votre réponse,

Je crois que mon premier message n'était pas très clair. Notre but est de recréer une application de routing. Après pas mal de galère le cœur de notre programme est fonctionnel et capable de trouver un chemin dans n'importe quel graphe simple contenant les coordonnées des nodes et les connexions entre eux. La prochaine étape est donc de lui fournir les données OSM. Par soucis d'économie et pour ne pas trop se compliquer la tâche on va se contenter du réseau ferroviaire dans un premier temps.
Pour le moment j'arrive à récupérer l'intégralité du réseau ferroviaire en Json via overpass mais on se retrouve avec un fichier relativement lourd que notre programme et nos petits ordinateurs d'étudiant ont du mal à traiter.

L'idéal serait-il pour les trains de récupérer uniquement les nodes(gare) qui possède une connexion avec le nodes(current) actuellement traité par le programme avant de faire une nouvelle requête overpass similaire pour l'itération suivante ? Je vais continuer mes recherches, tous vos conseils sont les bienvenues :D

Avatar de l’utilisateur
cquest
Messages : 1659
Inscription : ven. avr. 16, 2010 12:22 am
Localisation : Val de Marne
Contact :

Re: Utilisation des données OSM dans le cadre scolaire.

Message par cquest » mer. févr. 15, 2017 8:07 am

Sûr que le json c'est verbeux (moins que l'XML toutefois).

Si vous voulez vérifier que votre code fonctionne, prenez des données sur une plus petite zone, mais la capacité à traiter un gros volume de données reste quand même un très bon second exercice !

Récupérer les voies ferrées + les positions des gares et découper les unes avec les secondes... ça peut se faire bien sûr, mais c'est pas forcément simple non plus.

Votre code est dispo en ligne pour regarder ?


Un exemple récent: besoin de découper le fichier SIRENE national (10 millions de lignes de CSV) en un fichier par commune (donc plus de 35000 fichiers).

Version lourde/longue: charger l'ensemble dans une base, puis générer les 35000 fichiers...
Version courte/rapide: une ligne de commande avec awk ;)

okno
Messages : 4
Inscription : dim. févr. 05, 2017 3:20 pm

Re: Utilisation des données OSM dans le cadre scolaire.

Message par okno » mer. févr. 15, 2017 11:32 am

Merci pour les conseils je vais aller voir du côté de awk.

Pour l'instant on en est au balbutiement niveau BDD et c'est bien là que ça bloque, on arrive à faire des requêtes Overpass assez simples ( un exemple par ici : http://overpass-turbo.eu/s/mLo ) et pas tout à fait précise mais on va s'améliorer :D .

On a fait quelque test pour intégrer du MySQL/PostgreSQL dans notre programme et on a été voir du coté des parsers XML.
Pour l'instant on a aucune idée de ce qui serait le plus adapté/léger.

Le problème principal reste la vitesse de traitement : est ce que la meilleur solution est d'héberger nous même l'intégralité des données que notre algorithme va utiliser ou de faire plusieurs sous requêtes au fur et à mesure qu'il travaille (ce qui nous permettrait de rendre l'application portable?) ?

Le code est en pièce jointe.
Pièces jointes
archiveProjetGraph.zip
le projet
(4.7 Kio) Téléchargé 31 fois

Avatar de l’utilisateur
cquest
Messages : 1659
Inscription : ven. avr. 16, 2010 12:22 am
Localisation : Val de Marne
Contact :

Re: Utilisation des données OSM dans le cadre scolaire.

Message par cquest » mer. févr. 15, 2017 7:36 pm

euh... awk c'était pour mon exemple, pas une solution dans votre cas ;)

Pour la requête overpass, en voici une plus light qui sort les trains au départ ou à l'arrivée de Lille:

Code : Tout sélectionner

/*
  les trains au départ ou à l'arrivée de Lille
*/
[out:json][timeout:45];    

(
relation["from"~"^Lille"]["route"="train"];
relation["to"~"^Lille"]["route"="train"];
);

out body;
>;
out skel qt;
Le json récupéré donne le détail "à la OSM", c'est à dire les noeuds (avec lat/lon), les way (suite de noeuds), les relations (ici une liste de way).

On va revenir au départ: votre appli doit faire quoi au final (on rentrera ensuite dans la technique)

Proposer un itinéraire en train avec correspondances ?
Faire n'importe quoi mais avec du A* et des données OSM ?

okno
Messages : 4
Inscription : dim. févr. 05, 2017 3:20 pm

Re: Utilisation des données OSM dans le cadre scolaire.

Message par okno » ven. févr. 24, 2017 5:11 pm

Pour l'instant on voudrait que notre appli soit capable de proposer uniquement des itinéraires de train, ça nous permettra de nous faire la main (api osm, android studio..etc) et d'avoir une vue d'ensemble du projet pour pouvoir éventuellement implémenter d'autre moyen de transport par la suite.

Le coeur du programme (A*) est fonctionnel, on a commencé à bosser sur une interface avec android studio mais on est toujours bloqué sur l'utilisation des données osm. Dans le pire des cas on présentera une sorte de prototype (sans les données osm) mais on aimerait bien pouvoir intégrer de vrais cartes et de l’auto complétion (avec nominatim?).

Le gros problème c'est que les requêtes sont longue, très longue...

PS : la syntaxe suivante renvoie les trains au départ de Lille mais aussi d'une ville en suède je crois.

Code : Tout sélectionner

relation["from"~"^Lille"]
["route"="train"];
De plus les requête overpass ne renvoient pas de coordonnées, uniquement l'attribut "ref" sous la forme suivante :

Code : Tout sélectionner

  "type": "way",
      "ref": 8071290,
      "role": ""

Est ce que vous savez si on peut rencontrer des gens à Lille qui connaissent bien OSM ? Il nous reste 3-4 semaines pour boucler le projet :?

Avatar de l’utilisateur
cquest
Messages : 1659
Inscription : ven. avr. 16, 2010 12:22 am
Localisation : Val de Marne
Contact :

Re: Utilisation des données OSM dans le cadre scolaire.

Message par cquest » ven. févr. 24, 2017 5:27 pm

Voici qui devrait mieux aller:

Code : Tout sélectionner

[out:json][timeout:45];    

(
relation["from"="Lille"]["route"="train"];
relation["to"="Lille"]["route"="train"];
);

out body;
>;
out skel qt;
Il n'y aura que Lille (France) et les way/nodes sont retournés.

Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité