9

是否有任何用于解析 GPX 文件的 Java 库?我需要将许多 GPX 文件解析为我们自己的数据结构(我们自己的数据库)。

4

5 回答 5

10

这个问题太老了,答案也是如此。感谢开源世界,我们现在有jgpx,在 google 代码在 github 上多次分叉)和GPXParser,在 sourceforge.net 上在 Github 上搜索也有很多结果。

我不确定哪个更成熟(其中一个标记为 Alpha),但您可以尝试并在此处告诉我们。

编辑

看看processing-gpx,它似乎很有希望。

这是一个简单的例子

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
  }
于 2013-01-17T09:24:47.080 回答
7

经过一番研究,确实没有用于解析 GPX 文件的 Java API/Lib,但我发现了一种使用JAXB解析它的好方法

使用本教程:http ://www.oracle.com/technetwork/articles/javase/index-140168.html

步骤:
1. 下载 GPX 1.0 和 1.1 Schema 文件 (xsd) 2. 使用Eclipse 插件
从中生成 Java 文件 3. 使用生成的 GPX java 文件的包名初始化 JAXBContext (我的是“topografix.gpx.schema10”) 4. 解析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();
....
于 2010-08-19T08:55:27.597 回答
3

非常好。但是,我需要这样做:

    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

-肯

于 2010-08-19T20:13:24.317 回答
3

可在此处使用、开源且功能齐全的 java GpxParser(以及更多) https://sourceforge.net/projects/geokarambola/

详情在这里 https://plus.google.com/u/0/communities/110606810455751902142

使用上面的库解析 GPX 文件是一个单行:

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

获得它的点、路线或轨道也很简单:

ArrayList<Route> routes = gpx.getRoutes( ) ;
于 2016-03-27T21:51:06.573 回答
0

我不知道有任何专门用于解析 GPX 文件的库,但由于 GPX 是 XML,因此您可以使用首选的 Java XML 解析器来读取它。
GPX 格式记录在这里(包括 XSD 模式): http ://www.topografix.com/gpx.asp

于 2010-08-16T16:21:26.157 回答