Domanda

Ci sono librerie Java per analizzare file GPX? Ho bisogno di analizzare più file GPX nella nostra struttura dati (la nostra propria base di dati).

È stato utile?

Soluzione 2

Dopo alcune ricerche, non c'è davvero nessuna API Java / Lib per analizzare file GPX, ma ho trovato un approccio piacevole per l'analisi utilizzando JAXB

Con questo Tutorial: http://www.oracle.com/ technetwork / articoli / JavaSE / index-140168.html

Passi:
 1. Scarica il file GPX 1.0 e 1.1 Schema (XSD)
 2. Generare file Java da utilizzando Eclipse Plugin < br>  3. Init JAXBContext con il nome pacchetto di file java GPX generati (il mio era "topografix.gpx.schema10")
 4. File 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();
....

Altri suggerimenti

Questa domanda è troppo vecchio e così fanno le risposte. Grazie al mondo open source, abbiamo ora jgpx, su Google Code ( biforcuta più volte su GitHub ) e GPXParser, su sourceforge.net . Ci sono anche un sacco di risultati per una ricerca su Github .

Non sono sicuro che uno è più maturo (uno dei quali è contrassegnato come Alpha), ma li si può provare e farci sapere qui.

Modifica

Date un'occhiata al elaborazione-GPX , sembra promettente.

Ecco un rapido esempio

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
  }

Molto bello. Tuttavia, ho bisogno di fare:

    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());
    }

A proposito ho usato http://www.topografix.com/GPX/1/1 .

-Ken

Pronto all'uso, open source, e GpxParser java pienamente funzionale (e molto altro) qui https://sourceforge.net/projects/geokarambola/

I dettagli qui https://plus.google.com/u/0/communities/110606810455751902142

Con la libreria sopra l'analisi di un file GPX è uno di linea:

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

Come i suoi punti, rotte o tracce banali troppo:

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

Non sono a conoscenza di qualsiasi biblioteca specializzata in analisi di file GPX, ma dal momento che è GPX XML è possibile utilizzare il preferito parser XML Java per leggerlo.
Il formato GPX è documentato qui (include schema XSD): http://www.topografix.com/gpx.asp

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top