3

建议什么可以在Ruby中解析GPX文件?

我试过gpx,但它不适用于 Ruby 企业版(https://github.com/dougfales/gpx/issues/1)。

我不想写解析器。

4

2 回答 2

12

我一直在寻找同样的东西,但最后 GPX 文件只是另一个 XML 文件,因此您可以使用像Nokogiri这样的 XML 解析库来解析它。以下是我如何从 GPX 日志中提取所有纬度和经度:

#!/usr/bin/env ruby
require 'rubygems'
require 'nokogiri'
doc = Nokogiri::XML(open(my-log.gpx))
trackpoints = doc.xpath('//xmlns:trkpt')
points = Array.new
trackpoints.each do |trkpt|
  points << [trkpt.xpath('@lat').to_s.to_f, trkpt.xpath('@lon').to_s.to_f]
end

可能有更好的方法可以做到这一点,但这对我有用。

于 2010-07-14T22:35:01.020 回答
0

我对使用 GPX 和 Nokogiri 不是很熟悉,而且我的 GPX 文件只有很多<wpt>而不是<trkpt>,这对我有用:

require 'rubygems'
require 'nokogiri'
doc = Nokogiri::XML(open("my_route.gpx"))

trackpoints = doc.xpath('//wpt')
points = Array.new
trackpoints.each do |trkpt|
  points << [trkpt.xpath('@lat').to_s.to_f, trkpt.xpath('@lon').to_s.to_f]
end

p points

或这个:

require 'rubygems'
require 'nokogiri'
doc = Nokogiri::XML(open("my_route.gpx"))

waypoints = doc.xpath('//wpt')
points = waypoints.map{|wpt| [wpt.xpath('@lat').to_s.to_f, wpt.xpath('@lon').to_s.to_f]}

p points
于 2020-11-17T03:52:54.817 回答