Ruby GPX 文件解析器

发布于 2024-09-04 11:13:01 字数 299 浏览 5 评论 0原文

请教什么可以在 Ruby 中解析 GPX 文件?

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

我不想写一个解析器。

Advise what can parse GPX file in Ruby?

I tried gpx, but it does not work with Ruby Enterprise Edition (https://github.com/dougfales/gpx/issues/1).

I would not like to write a parser.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

〃温暖了心ぐ 2024-09-11 11:13:01

我一直在寻找同样的东西,但最终 GPX 文件只是另一个 XML 文件,因此您可以使用 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

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

I was looking for the same thing but in the end a GPX file is just another XML file so you can parse it with XML parsing libraries like Nokogiri. Here is how I extract all the latitudes and longitudes form a GPX log:

#!/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

There are probably better ways to do this but this works for me.

红玫瑰 2024-09-11 11:13:01

我对使用 GPX 和 Nokogiri 不太熟悉,而且我的 GPX 文件只有很多 而不是 ,这适用于我:

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

I wasn't that familiar with using GPX and Nokogiri, and my GPX file only has a lot of <wpt> instead of <trkpt>, and this works for me:

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

Or this:

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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文