用Ruby绘制GPS信息

用Ruby绘制GPS信息,ruby,gps,plot,spatial,gpx,Ruby,Gps,Plot,Spatial,Gpx,我正在寻找以编程方式将我的GPS日志转换为图像的方法,并希望在Ruby中实现这一点。。。如果这是一个可接受的工具。我没有任何GIS背景,但作为一名程序员,我认为这是一个有趣的问题 以下是我到目前为止的想法。首先,您需要某种图形库。我找了一个合适的,但最近似乎很热。我创建了一个小脚本,用于转换GPX文件并将数据提供给gnuplot,结果如下: 这看起来不错,但gnuplot似乎真的是一个创建图形的工具,而不是空间数据。是这样做的,还是有更好的解决方案 还有一个问题,你知道如何构建这样的东西吗?你真

我正在寻找以编程方式将我的GPS日志转换为图像的方法,并希望在Ruby中实现这一点。。。如果这是一个可接受的工具。我没有任何GIS背景,但作为一名程序员,我认为这是一个有趣的问题

以下是我到目前为止的想法。首先,您需要某种图形库。我找了一个合适的,但最近似乎很热。我创建了一个小脚本,用于转换GPX文件并将数据提供给gnuplot,结果如下:

这看起来不错,但gnuplot似乎真的是一个创建图形的工具,而不是空间数据。是这样做的,还是有更好的解决方案


还有一个问题,你知道如何构建这样的东西吗?

你真的想要图像,还是仅仅是一种可视化数据的方法?使用谷歌地图api怎么样

查看此链接:


如果您想更深入地了解R,也有Ruby绑定,但该项目已有一年多没有任何活动:


我认为从任何编程语言使用gnuplot都是一个良好的开端

但是,我强烈建议在代码中的某个地方添加
set size ratio-1
gnuplot命令,因为这将使绘图中的x轴和y轴比例相等,这一点非常重要

您还可以使用时间间隔相等的非常小的点标记(假设您的数据中有时间信息,或者至少您知道行是按固定时间间隔采样的)来增加直线,这样您就可以感觉到移动的速度,否则就会丢失(即,直线上间隔较大的点标记意味着移动速度更快). 显然,您应该在点标记之间选择一个时间间隔,使其具有适当的间距,或者自动计算该时间间隔:即,通过计算曲线的长度,以像素为单位进行转换,然后除以10到100之间的任何值,以获得要放置的点的总数。然后,时间间隔由轨迹的总时间除以该点数得出。这对于合理规律的运动应该有效

另一个选择是使用与gnuplot不同的图表系统,它功能强大,但有点旧。我知道的选项包括:

  • ,这适用于ruby,但似乎缺少2D绘图功能(这是一个明显的要求)
  • ,功能强大且灵活,但具有商业价值。在本例中,您将使用ruby或任何其他编程语言生成一个XML文件,然后将其解释为一个交互式图形
  • ,它可以通过web返回图表图像,在代码中伪造适当的GET或POST请求。在本例中,您对
    lxy
    图表类型感兴趣,可能与点标记的图表混合
第三种选择似乎最有趣。

也许你已经听说过,但你听说过吗

从Ruby Processing自述文件中:

Ruby Processing是处理代码艺术框架的Ruby包装器

如果你喜欢与Ruby共度美好时光 一个愉快的下午的想法,或者你
怀有进入世界的野心 快节奏的,而不是完全的 那么,代码艺术的残酷世界 Ruby处理可能是一种 你应该试穿一下尺寸

处理是麻省理工学院开发的 用于生成小代码的框架 人工制品,动画, 可视化等等, 最初由Ben Fry和 Casey Reas,由一支小型军队支持 开源贡献者的数量。
处理已经成为一种 视觉导向标准 编程,影响深远 Nodebox的设计,鞋子, Arduino和其他类似项目

对第一个问题的答复 既然你说你“想用Ruby做这件事……如果这是一个可以接受的工具的话”,我就冒险假设你可能会接受一个非Ruby的解决方案,如果它满足你所有的其他需求的话

我之所以推荐,主要是因为在第一章中,作者Shai Vaingast介绍了一个从GPS接收器读取GPS数据的示例,然后绘制了结果。如果您对基于Python的解决方案持开放态度,这本书将是一个很好的资源

以下是用于读取和绘制GPS数据的Python包:

  • 从串行端口读取GPS数据的步骤
  • 绘制数据。是一个用Python绘制数组2D图的库。虽然它起源于模拟MATLAB®图形命令,但它独立于MATLAB,并且可以以Python的、面向对象的方式使用
下面是Shai Vaingast创建的示例图,展示了绘制GPS数据的一些不同功能

如果您不愿意使用Python解决方案,并且出于任何原因更喜欢Ruby,我理解。我试图在Ruby中搜索等效的,但没有找到等效的包

对最后一个问题的答复 这是另一个,你知道怎么做这样的东西吗

看右下角,它似乎是用来创建该图像的。尽管许多编程语言都可以使用DISLIN,但该页面并没有显示Ruby是受支持的

据该网站介绍,

DISLIN是一个高级绘图库,用于将数据显示为曲线、极坐标图、条形图、饼图、三维彩色图、曲面、等高线和地图

该软件可用于UNIX、Linux、FreeBSD、OpenVMS、Windows、Mac OSX和MS-DOS操作系统上的多个C、Fortran 77和Fortran 90/95编译器。DISLIN程序非常独立于系统,它们可以在不做任何更改的情况下从一个操作系统移植到另一个操作系统

对于某些操作系统,还支持编程语言Perl、Python、Java和C/C++解释器Ch