Telecharger les données sur le serveur depuis Android

Extraire des données OSM, créer sa carte, uMap, utiliser sur un GPS ou un smartphone...
thomas_r

Telecharger les données sur le serveur depuis Android

Message par thomas_r » jeu. mars 01, 2012 5:06 pm

Bonjour à tous,

Je dois développer une application Java qui fonctionnera sous Android. Et je dois donc pouvoir récupérer des cartes et des fichiers osm directement depuis mon application. En gros je veux obtenir le même résultat que sous mon navigateur lorsque je demande http://www.openstreetmap.org/api/0.6/ma ... ,-0.4,21.4

Comment puis-je le faire ?

Merci pour votre aide.

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

Re: Telecharger les données sur le serveur depuis Android

Message par cquest » jeu. mars 01, 2012 5:22 pm

Au risque de ne pas avoir bien compris la question, voici quand même une réponse...

Tu veux récupérer les données XML sur une bounding-box donnée ?

Oui, il suffit de faire une requête HTTP comme celle indiquée et de récupérer le résultat.

Attention toutefois, l'API des serveurs OSM n'est pas à usage illimité.

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

Re: Telecharger les données sur le serveur depuis Android

Message par sly » jeu. mars 01, 2012 5:23 pm

Avec ou sans connexion internet ?

Si tu veux pouvoir faire marcher sans connexion Internet, alors tu peux télécharger des extraits que tu mets sur le téléphone et que tu t'occupe ensuite de traiter en local
Si tu comptes utiliser la connexion Internet, tu peux utiliser XAPI ( http://wiki.openstreetmap.org/wiki/Xapi ) pour demander des "petits" morceaux, mais tu va dépendre du bon vouloir du serveur en face qui ne garanti en général rien.

thomas_r

Re: Telecharger les données sur le serveur depuis Android

Message par thomas_r » ven. mars 02, 2012 3:48 pm

Bonjour,

Actuellement j'ai un programme Java qui me permet de télécharger une image/document directement depuis un serveur. Je m'explique : par exemple je télécharge une image depuis mon navigateur firefox. Dans la fenêtre Téléchargements je peux alors faire clic droit puis "copier l'adresse d'origine du téléchargement". Je donne cette url a mon programme, et il arrive également a me télécharger l'image.

Par contre si je tente de le faire avec un document xml ou une image OpenStreetMap dont j'ai récupérer l'adresse de la même façon que précédemment : impossible .... :(
Les url que je récupère depuis la fonction exporter du site : http://www.openstreetmap.org sont de l'ordre de :
http://parent.tile.openstreetmap.org/cg ... format=png
et http://api.openstreetmap.org/api/0.6/ma ... 8,47.66372

Merci pour votre aide.

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

Re: Telecharger les données sur le serveur depuis Android

Message par sly » dim. mars 04, 2012 12:37 am

Change de librairie dans ton programme et prend en une qui marche ;-)

thomas_r

Re: Telecharger les données sur le serveur depuis Android

Message par thomas_r » lun. mars 05, 2012 9:25 am

De librairie ?
Pour le moment j'utilise un programme tout simple :

Code : Tout sélectionner

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;

public class Download
{
    public static void getFile(String host)
    {
        InputStream input = null;
        FileOutputStream writeFile = null;

        try
        {
            URL url = new URL(host);
            URLConnection connection = url.openConnection();
            int fileLength = connection.getContentLength();

            if (fileLength == -1)
            {
                System.out.println("Invalide URL or file.");
                return;
            }

            input = connection.getInputStream();
            String fileName = url.getFile().substring(url.getFile().lastIndexOf('/') + 1);
            writeFile = new FileOutputStream(fileName);
            byte[] buffer = new byte[1024];
            int read;

            while ((read = input.read(buffer)) > 0)
                writeFile.write(buffer, 0, read);
            writeFile.flush();
        }
        catch (IOException e)
        {
            System.out.println("Error while trying to download the file.");
            e.printStackTrace();
        }
        finally
        {
            try
            {
                writeFile.close();
                input.close();
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
        }
    }

    public static void main(String[] args)
    {
    	System.out.println("Begin");
        //getFile("http://www.drm-x.com/download/Haihaisoft_PDF_Reader.exe");
        //getFile("http://api.openstreetmap.org/api/0.6/map?bbox=4.5871,47.63668,4.61988,47.66372");
        //getFile("http://parent.tile.openstreetmap.org/cgi-bin/export?bbox=4.5871,47.63668,4.61988,47.66372&scale=14000&format=png");
        //getFile("http://www.overpass-api.de/api/xapi?map?bbox=7.1,51.2,7.2,51.3");
        getFile("http://www.telecharger-logiciels.net/IMG/arton148.jpg");
        getFile("http://parent.tile.openstreetmap.org/cgi-bin/export?bbox=4.5871,47.63668,4.61988,47.66372&scale=14000&format=png");
        
        System.out.println("End.");
    }
}

Répondre

Qui est en ligne ?

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