这个问题太旧了,答案也是如此.感谢开源世界,我们现在有了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
}
Run Code Online (Sandbox Code Playgroud)
经过一些研究,实际上没有用于解析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();
....
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
15977 次 |
最近记录: |