Consommer des données depuis une application

Extraire des données OSM, créer sa carte, uMap, utiliser sur un GPS ou un smartphone...
Répondre
Truitemouth
Messages : 5
Inscription : ven. févr. 13, 2015 10:24 am
Contact :

Consommer des données depuis une application

Message par Truitemouth » ven. févr. 13, 2015 10:54 am

Bonjour à tous,
Je suis sur le point de développer une application mobile exploitant certains nœuds de la base openstreetmap.

Ma principale question porte sur la stratégie d’extraction des données ; est-il d’usage d’extraire les données que l’on souhaite et intégrer cette extraction (sous forme de fichier formaté en json par exemple) directement dans l’application ? Ou bien vaut-il mieux faire appel au APIs pour extraire en temps réel les données depuis l’application ?

Je suis davantage partisan de la seconde approche, mais dans ce cas, les webservices à appeler sont-ils bien ceux-ci : http://overpass-api.de/ ou http://overpass.osm.rambler.ru/ ? Auquel cas un doute m’assaille, ces serveurs ont une capacité de 1 000 000 requêtes par jour, or, bien que mon application soit avant tout développé pour mon besoin propre, il n’est pas impossible qu’elle rencontre un minimum de succès auprès du public (qui sait) et je me demande si la limite de 10 000 requête par jour (limite estimée pour ne pas gêner les autres utilisateurs d’après le wiki officiel) n’est pas un peu juste.

Peut-être que je me fourvoie complètement et qu’il ne faut pas que je consomme mes données à parti de ces serveurs, auquel cas je vous prie de m’éclairer avant que je fasse une bêtise =P

Un grand merci d’avance.

Gustry
Messages : 135
Inscription : mer. nov. 23, 2011 2:30 pm

Re: Consommer des données depuis une application

Message par Gustry » sam. févr. 14, 2015 8:04 am

Salut,

On n'en sait peu sur ton projet, donc pas facile de répondre.

Quelle est la requête que tu vas effectuer ? A quelle fréquence ? Quelle quantité de donnée en retour ?
Tu fais les requête en live dans ton application ?
Ton application, elle s’exécute sur un serveur ou un client ?
Quelle couverture géographique ?

Mais si tu pense sérieusement à 10 000 requêtes par jour, je t'invite grandement à avoir une copie locale, sûrement avec juste les données qui t'intéresse.

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

Re: Consommer des données depuis une application

Message par cquest » sam. févr. 14, 2015 9:14 am

Plutôt que de taper 1 million de fois sur l'overpass, il est préférable de déployer ta propre instance overpass et de maintenir son contenu à jour à partir des diff OSM disponibles sur http://planet.osm.org/replication/

Mise à jour possible en daily, hourly ou à la minute !

De cette façon:
- tu deviens autonome
- tu ne dépend plus de la disponibilité de services externes
- tu gère ta SLA toi même comme tu veux
- tu n'abuse pas de services gratuits

C'est tout le principe d'OSM: devenir autonome avec des données et des outils logiciels libres.

sly
Messages : 489
Inscription : sam. févr. 07, 2009 6:33 pm
Localisation : Chambéry - savoie

Re: Consommer des données depuis une application

Message par sly » sam. févr. 14, 2015 12:44 pm

Mon avis :
Ton appli n'existe pas encore, avant de faire des plans sur la comète, essaye déjà de faire une truc qui marche le plus simplement pour la partie récup de données, utilise donc une Overpass API publique dans un premier temps. Tu pourra toujours, en temps et heure, installer une Overpass API toi même ou proposer une mise à jour de ton appli qui cette fois garde en local les données.

Assures toi uniquement que les logiciels déjà diffusés vont mettre à jour tout seul l'url utilisée, comme ça, si tu te fais bannir ton appli par l'overpass publique, tu pourra faire la bascule facilement.
Idée d'exemple: sur un site sous ton crontrôle, rend disponible un fichier qui contient un truc du genre:
overpass_url;priorité
http://overpass-api.de/api/;1
http://overpass.osm.rambler.ru/api/;2

Yves

Re: Consommer des données depuis une application

Message par Yves » sam. févr. 14, 2015 8:06 pm

Le conseil de Sylvain est le bon
Il est préférable de mettre d'abord en place un serveur à toi, au moins pour récupérer l'URL du service utilisé par l'appli ou servir de relais vers un service tiers pour éviter les problèmes futurs. Dès la première release !
Les utilisateurs sont souvent les rois pour abuser d'un service au travers du tien.
Yves

Truitemouth
Messages : 5
Inscription : ven. févr. 13, 2015 10:24 am
Contact :

Re: Consommer des données depuis une application

Message par Truitemouth » sam. févr. 14, 2015 9:52 pm

Un grand merci à vous, j’ai eu mes réponses.

Donc pour mon besoin j’ai deux options ; soit j’intègre un snapshot des nœuds que je souhaite traiter directement dans mon application (j’ai fait un test, une fois les données qui m’intéressent importées dans une petite base SQLite, j’en ai pour 11Mo, ce n’est pas la mort à télécharger), soit je déploie une instance overpass sur un serveur perso.

La seconde option est très certainement la meilleure approche (ne serait-ce que pour déployer des MAJ sans devoir resoumettre à chaque fois l’application dans son intégralité), mais je pense que dans un premier temps c’est un peu sortir le char d’assaut pour écraser une mouche.

@Gustry : il s’agit d’une application mobile permettant de localiser les distributeurs de billets à proximité (j’ai un Windows Phone et j’ai eu besoin de ce type d’application le mois dernier, or je n’ai rien trouvé sur le store... on n’est pas très gâté en terme d’applications sur cet OS, il faut bien l’avouer). Donc techniquement la requête serait exécutée côté client à chaque fois que l’utilisateur navigue sur la carte (requête bornée sur la bounding box correspondant à la portion de carte affichée par l’écran du mobile... bref du grand classique, mais qui peut vite chiffrer en termes d’appels API).

Bon par contre les 11Mo de données ne représentent que les DAB de France. Si je veux faire en sorte que mon appli traite les DAB du monde entier, c’est là que l’instance répliquée sur un serveur perso devient obligatoire.

Du coup j’ai une seconde question (sans doute encore plus bête que la précédente) ; pour récupérer en local les nœuds que je souhaitais traiter, j’ai justement utilisé les instances Overpass publiques. Mais admettons que je souhaite faire cette extraction directement sur mon poste en local, comment dois-je m’y prendre ? En somme, une fois que j’ai téléchargé le fichier osm.pbf de mon choix (Europe.osm.pbf par exemple) existe-t-il un outil pour extraire uniquement ce qui m’intéresse (sous la forme d’un fichier Json ou XML par exemple), ou bien dois-je, là encore, déployer en local une instance Overpass pour requêter le fichier pbf ?

Yves

Re: Consommer des données depuis une application

Message par Yves » dim. févr. 15, 2015 8:30 am

La solution la plus simple si tu ne veux que les DAB c'est probablement les outils en c Osmfilter et Osmupdate.

Truitemouth
Messages : 5
Inscription : ven. févr. 13, 2015 10:24 am
Contact :

Re: Consommer des données depuis une application

Message par Truitemouth » dim. févr. 15, 2015 11:08 am

Je vais regarder ça, merci bien.

Gustry
Messages : 135
Inscription : mer. nov. 23, 2011 2:30 pm

Re: Consommer des données depuis une application

Message par Gustry » dim. févr. 15, 2015 4:34 pm


Truitemouth
Messages : 5
Inscription : ven. févr. 13, 2015 10:24 am
Contact :

Re: Consommer des données depuis une application

Message par Truitemouth » lun. févr. 16, 2015 2:39 pm

Merci à vous tous.
J'ai réussi à faire ce que je voulais avec osmosis. Par contre je sens que les phases de mise à jour vont être laborieuses, mais bon c'est mon problème. Je sens que je vais vite investir dans un serveur, ce sera plus pratique ^^'

Encore merci pour votre aide.

Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 5 invités