GPX Parser for Java?

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

这个问题太旧了,答案也是如此。 感谢开源世界,我们现在有了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 } 

经过一些研究,实际上没有用于解析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 tracks = root.getTrk(); .... 

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

  GpxType gpx = null; try { JAXBContext jc = JAXBContext.newInstance(PACKAGE_NAME); Unmarshaller unmarshaller = jc.createUnmarshaller(); JAXBElement root = (JAXBElement)unmarshaller .unmarshal(new File(TEST_FILE)); gpx = root.getValue(); } catch(JAXBException ex) { // TODO } List tracks = gpx.getTrk(); for(TrkType track : tracks) { System.out.println(track.getName()); } 

BTW我使用http://www.topografix.com/GPX/1/1 。

-Ken

准备使用,开源和function齐全的java GpxParser(以及更多) https://sourceforge.net/projects/geokarambola/

详情请访问https://plus.google.com/u/0/communities/110606810455751902142

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

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

得到它的点,路线或轨道也是微不足道的:

 ArrayList routes = gpx.getRoutes( ) ; 

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