建议什么可以解析Ruby中的GPX文件?
我尝试了gpx,但它不适用于Ruby Enterprise Edition(https://github.com/dougfales/gpx/issues/1)。
我不想写一个解析器。
答案 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