我正在寻找以编程方式将我的GPS日志转换为图像的方法,并希望在Ruby中执行此操作...如果这是可接受的工具。我没有任何GIS背景,但作为程序员,我认为这是一个有趣的问题。
到目前为止,我已经提出了这个问题。首先,您需要某种图形库。我去了gnuplot,因为我找到了Ruby binding,但R这些天似乎很热。我创建了一个小脚本,用于转换GPX文件并将数据提供给gnuplot,结果如下:alt text http://dl.dropbox.com/u/45672/gpslog.png
这看起来很好但是gnuplot似乎真的是一个创建图形的工具,而不是空间数据。这是做到这一点的方式还是有更好的解决方案?
这是另一个example,你知道如何构建这样的东西吗?
答案 0 :(得分:4)
既然你说过“你想在Ruby中做这件事...... 如果那是一个可以接受的工具”,那么我会苟延残喘地假设你可能会对非Ruby解决方案,如果它满足您的所有其他要求。
我建议Python主要是因为在Beginning Python Visualization的第一章中,作者Shai Vaingast通过一个从GPS接收器读取GPS数据然后绘制结果的例子。如果您对基于Python的解决方案持开放态度,那么本书将是一个很好的资源。
以下是用于读取和绘制GPS数据的Python包:
以下是Shai Vaingast创建的示例图,展示了matplotlib用于绘制GPS数据的一些不同功能。
如果您不熟悉Python解决方案,并且不喜欢Ruby,无论出于何种原因 - 我理解。我试图在Ruby中搜索等效的matplotlib,但我找不到相应的包。
这是另一个example,你知道如何构建这样的东西吗?
查看右下角,似乎DISLIN用于创建该图像。虽然DISLIN可用于很多编程语言,但DISLIN software requirements页面并未显示支持Ruby。
根据DISLIN网站,
DISLIN是一个高级绘图库,用于以曲线,极坐标图,条形图,饼图,3D颜色图,曲面,轮廓和贴图显示数据。
该软件适用于UNIX,Linux,FreeBSD,OpenVMS,Windows,Mac OSX和MS-DOS操作系统上的多个C,Fortran 77和Fortran 90/95编译器。 DISLIN程序与系统无关,它们可以从一个操作系统移植到另一个操作系统而无需任何更改。
对于某些操作系统,DISLIN也支持编程语言Perl,Python,Java和C / C ++解释器Ch。 DISLIN解释器DISGCL适用于所有支持的操作系统。查看支持的操作系统和编译器的完整列表。
答案 1 :(得分:1)
您真的想要图像,还是只想一种可视化数据的方法?如何使用谷歌地图api?
点击此链接:
http://google-dox.net/O.Reilly-Google.Maps.Hacks/0596101619/googlemapshks-CHP-4-SECT-10.html
答案 2 :(得分:1)
我认为使用任何编程语言的gnuplot是一个很好的开始方法。
但是,我强烈建议在代码中的某处添加set size ratio -1
gnuplot命令,因为这会使得x和y轴在图中的比例相等,这非常重要。
您还可以使用非常小的点标记来增加线条(假设您的数据中包含时间信息,或者至少您知道按常规时间间隔对行进行采样),因此您可以感受到运动的速度,否则会丢失(即,线上的大间距点标记意味着更快的运动)。显然你应该在点标记之间选择一个时间间隔使它们适当间隔,或者自动计算这样的时间间隔:即通过计算曲线的长度,以像素为单位转换它,然后除以10到100之间的任何值,得到要放置的总点数。然后通过轨道的总时间除以这样的点数来给出时间间隔。对于合理规则的动作,这应该有效。
另一个选择是使用与gnuplot不同的图表系统,这个功能强大但有点旧。我知道的选项包括:
lxy
图表类型,可能与点标记的scatter图表相混淆。第三种选择似乎最有趣。
答案 3 :(得分:1)
GDAL是非常受欢迎的开源GIS工具包,有GDAL Ruby bindings。如果您想要地图数据,open street map非常有用。 OSM和GPS的组合绘图将给出相当不错的结果。 GDAL / OGR Api tutorial就在这里。
答案 4 :(得分:0)
如果你想进一步研究R,那里也有Ruby绑定,但是该项目一年没有活动了:
答案 5 :(得分:0)
也许您已经听说过Processing,但您听说过Ruby-Processing吗?
来自 Ruby-Processing 自述文件:
Ruby-Processing是Processing代码艺术框架的Ruby包装器。
...
如果使用Ruby的一些高质量时间是你的 一个愉快的下午的想法,或者你 港口野心的进入 快节奏,而不是完全 那么代码艺术的残酷世界 Ruby-Processing可能就是其中之一 你应该尝试尺寸。
...
处理是麻省理工学院开发的 制作小代码的框架 文物,动画, 可视化等等 由Ben Fry和 Casey Reas,由一支小军队支援 开源贡献者。
加工已成为一种 视觉导向的标准 编程,强烈影响 Nodebox,Shoes的设计, Arduino和其他同类项目