Ruby GPX文件解析器

时间:2010-06-07 06:31:18

标签: ruby-on-rails ruby gpx

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

我尝试了gpx,但它不适用于Ruby Enterprise Edition(https://github.com/dougfales/gpx/issues/1)。

我不想写一个解析器。

2 个答案:

答案 0 :(得分:11)

我一直在寻找相同的东西,但最终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

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

答案 1 :(得分: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
相关问题