【发布时间】:2011-03-30 12:46:13
【问题描述】:
是否有任何用于解析 GPX 文件的 Java 库?我需要将许多 GPX 文件解析成我们自己的数据结构(我们自己的数据库)。
【问题讨论】:
是否有任何用于解析 GPX 文件的 Java 库?我需要将许多 GPX 文件解析成我们自己的数据结构(我们自己的数据库)。
【问题讨论】:
这个问题太老了,答案也太老了。 感谢开源世界,我们现在拥有jgpx, on google code (forked multiple times on github) 和GPXParser, on sourceforge.net。 a search on 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 Plugin从中生成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();
....
【讨论】:
非常好。但是,我需要这样做:
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。
-肯
【讨论】:
即用型、开源且功能齐全的 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( ) ;
【讨论】:
我不知道有任何专门用于解析 GPX 文件的库,但由于 GPX 是 XML,您可以使用您喜欢的 Java XML 解析器来读取它。
GPX 格式记录在这里(包括 XSD 模式):
http://www.topografix.com/gpx.asp
【讨论】: