Question

Y a-t-il des bibliothèques Java pour l'analyse des fichiers GPX? Je dois analyser plusieurs fichiers GPX dans notre propre structure de données (notre propre base de données).

Était-ce utile?

La solution 2

Après quelques recherches, il n'y a vraiment pas d'API Java / Lib pour l'analyse des fichiers GPX, mais je l'ai trouvé une approche agréable pour l'analyse à l'aide de http://www.oracle.com/ TechNetwork / articles / JavaSE / index-140168.html

Étapes:
 1. Télécharger GPX 1.0 et 1.1 fichier de schéma (XSD)
 2. Générer Java fichier à l'aide de Eclipse Plugin < br>  3. Init JAXBContext avec le nom du package de fichiers Java générés GPX (le mien était "topografix.gpx.schema10")
 4. Fichier Parse GPX

JAXBContext jc = JAXBContext.newInstance("topografix.gpx.schema10");
Unmarshaller unmarshaller = jc.createUnmarshaller();
Gpx root = (Gpx) unmarshaller.unmarshal(new File("sample.gpx"));
List<Trk> tracks = root.getTrk();
....

Autres conseils

Cette question est trop vieux et aussi les réponses. Merci au monde open source, nous avons maintenant jgpx, sur le code de google ( en forme de fourche plusieurs fois sur github ) et GPXParser, sur sourceforge.net . Il y a aussi beaucoup de résultats pour une recherche sur Github .

Je ne suis pas sûr que l'on est plus mature (l'un d'entre eux est marqué comme Alpha), mais vous pouvez les essayer et laissez-nous savoir ici.

Modifier

Jetez un oeil à traitement-GPX , il semble prometteur.

Voici un exemple rapide

import tomc.gpx.*;

// outside setup()
GPX gpx;

  // inside setup()
  gpx = new GPX(this);

  // when you want to load data
  gpx.parse("test.gpx"); // or a URL

  // inside draw()
  for (int i = 0; i < gpx.getTrackCount(); i++) {
    GPXTrack trk = gpx.getTrack(i);
    // do something with trk.name
    for (int j = 0; j < trk.size(); j++) {
      GPXTrackSeg trkseg = trk.getTrackSeg(j);
      for (int k = 0; k < trkseg.size(); k++) {
        GPXPoint pt = trkseg.getPoint(k);
        // do something with pt.lat or pt.lon
      }
    }
  }

  for (int i = 0; i < gpx.getWayPointCount(); i++) {
    GPXWayPoint wpt = gpx.getWayPoint(i);
    // do something with wpt.lat or wpt.lon or wpt.name or wpt.type
  }

Très agréable. Cependant, je devais faire:

    GpxType gpx = null;
    try {
        JAXBContext jc = JAXBContext.newInstance(PACKAGE_NAME);
        Unmarshaller unmarshaller = jc.createUnmarshaller();
        JAXBElement<GpxType> root = (JAXBElement<GpxType>)unmarshaller
            .unmarshal(new File(TEST_FILE));
        gpx = root.getValue();
    } catch(JAXBException ex) {
       // TODO
    }

    List<TrkType> tracks = gpx.getTrk();
    for(TrkType track : tracks) {
        System.out.println(track.getName());
    }

http://www.topografix.com/GPX/1/1 .

-Ken

Prêt à l'emploi, open source et GpxParser java entièrement fonctionnel (et beaucoup plus) ici https://sourceforge.net/projects/geokarambola/

Détails ici https://plus.google.com/u/0/communities/110606810455751902142

Avec la bibliothèque au-dessus de traitement d'un fichier GPX est une seule ligne:

Gpx gpx = GpxFileIo.parseIn( "SomeGeoCollection.gpx" ) ;

Obtenir ses points, routes ou pistes trop triviales:

ArrayList<Route> routes = gpx.getRoutes( ) ;

Je ne suis pas au courant d'une bibliothèque spécialisée dans l'analyse des fichiers GPX, mais comme GPX est XML, vous pouvez utiliser votre analyseur XML Java préféré pour le lire.
Le format GPX est documenté ici (comprend schéma XSD): http://www.topografix.com/gpx.asp

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top