有没有好的GPS轨迹分析库?


35

我一直在编写自定义代码来处理GPS轨道:手机中的GPX文件和NMEA日志,专用GPS记录器等。我感觉自己在重新发明轮子,并且想知道是否有一些标准的库/工具可以用来工作GPS轨道。我喜欢做的一些事情:

  • 计算在轨道上行驶的距离
  • 计算沿轨道的平均速度和瞬时速度
  • 计算运动时间与静止时间
  • 简化轨道,消除固定路段
  • 将轨道分段为单独的轨道,每趟一次
  • 消除GPS采样误差
  • 通过在DEM中查找点来创建高程剖面
  • 将曲目转换为GPX,KML等以进行可视化

有许多分析GPS轨迹的应用程序。我正在寻找软件库或可编写脚本的工具集,以便可以编写自己的应用程序。我不太在乎输入格式;任何带有时间戳的经纬度点都可以。我主要在Unix上使用Python工作,但几乎所有语言都可以。

我使用的现有工具包括GPSBabelGDAL / OGR用于转换,以及PostGIS用于将轨迹几何图形作为线串使用。但是,大多数情况下,我最终还是编写了自己的Python代码,该代码可用于经纬度对数组,而且感觉太低了。同样,上述某些任务(例如消除GPS错误)非常微妙。我应该使用一些现有的库吗?


1
经过一两个星期的赏金后,我认为我的问题的答案是“不,没有用于GPX音轨处理的库”。许多应用程序和代码,但没有通用工具。知道这一点很有帮助。对我而言,前进的道路是编写一些与ogr2ogr的GPX导入创建的架构兼容的PostGIS代码。该模式既包含用于轨道的简单LineString,又包含具有时间维度的时间戳的点表。
尼尔森

Delphi代码也可以吗?

Google刚刚宣布了Tracks API,为完整性起见,我在此提及。它看起来很有用,但与我所寻找的方向不同;有关面包屑和地理围栏的更多信息。
尼尔森

1
@Nelson(来自一位出色的在线乘车编辑)的创建者之一,看看这个答案:GPS骑行:stackoverflow.com/a/13084082/401828
heltonbiker,2012年

@尼尔森这个问题对我来说仍然是最新的问题,将近四年。在此期间,您找到了一个好的解决方案吗?
amball

Answers:


7

好吧,这取决于您选择的编程语言,但是我用Java开发了mineturer.org(该站点实质上是一个用于上载,分析和显示GPX数据的站点)。

Iv's使用JAX-B(http://jaxb.java.net/)读取了GPX文件(基于GPX模式)和JTS(http://www.vividsolutions.com/jts/)+自己的代码分析。

mineturer.org的源代码在MIT许可证下提供,网址https://bitbucket.org/atlefren/gpsorganizer/

我猜代码至少可以给您一些指针?


谢谢!您的网站看起来很棒(即使您不阅读挪威语,也可以通过Google翻译使用)。您所做的正是我想要的分析,这对您开源它有很大的帮助。对于Python,我可能会使用GEOS而不是JTS。有不错的绑定。
尼尔森

2
如果您喜欢...请投票!!
Stev_k 2012年

1
这里只是一个后续步骤:我已经开始使用Shapely和GeoAlchemy(和Flask)将该项目移植到Python,它可以工作,但目前速度很慢。好奇的代码在github.com/atlefren/mineturer2上
atlefren,2014年

3

我写了一个数学C#-lib,用于针对GPS处理的2d / 3d数学:读取GPX和TCX,对轨迹进行过滤和简化,对轨迹/线段进行聚类并转换为2d平面。

https://www.nuget.org/packages/Math.Matthey/

https://www.nuget.org/packages/Math.Matthey.Tools.TrackReaders/


是否可以获取有关该Nugets的一些描述或文档?
Petr Krampl

我将查看是否可以将Readme.MD添加到NuGet pkg。
tma

谢谢,无法访问存储库。除了元素之外,是否还可以解析包含<rte><rtept>元素的gpx文件<trk>
Petr Krampl

1
目前只支持Garmin跟踪点扩展的trrk-> trkseg-> trkpt,但我在2.3.0中添加了rte-> rtept,但到目前为止尚未进行验证。
tma

1
在nuget.org上添加了两个软件包的文档。
tma

2

GPS工具包应该有所帮助。它是一个开放源代码库和一组应用程序,旨在使研究人员摆脱底层编码的困扰。

它提供以下功能:

  • RINEX实用程序
  • 定位
  • 残留分析
  • 电离层建模
  • 信号跟踪仿真T
  • 基本转换
  • 观测数据收集与转换
  • 文件比较和验证。
  • 资料编辑
  • 自主和相对定位。

感谢您的回答!GPSTk看起来很迷人,但是它的水平比我想要的低。这似乎与处理原始GPS无线电信号有关,并从中获取定位信息。我已经从消费者的GPS硬件中获得了定位信息,并且无法访问低层卫星数据。
尼尔森


0

很好的问题!最近,我一直在处理GPX数据,而我发现的最简单的解决方案是将跟踪点转换为空间db格式,然后创建视图(空间和表格)以根据需要汇总数据。我无法获得使用OGR导入GPX数据所需的结果,因此我结束了使用简单的python脚本遍历GPX的XML树结构并将其加载到数据库(在我的情况下为SpatiaLite)。这绝对不会帮助您避免重新发明轮子,但是我发现,使用现有的SQL和空间SQL函数,我能够按行程获得汇总轨道的理想结果。


1
我在使用PostGIS LineString时看到的主要缺点是它们不包含时间戳数据。我当然可以在单独的模式中跟踪它们,但是PostGIS并没有做任何事情来帮助我进行基于时间的计算。你有什么窍门吗?
尼尔森

0

我正在开发这种小软件供我自己使用。它主要用于可视化,不能满足您的所有需求,但也许有帮助!


谢谢!它是开源的,并且使用Java编写,因此绝对有帮助。
尼尔森

0

冒着无法回答您的实际问题的风险:-),让我建议您一个从未听说过的出色应用程序,它可以完成您列出的所有内容-

这是我的一站式商店,用于查看,编辑和传输GPX等。

也许更多的是在主题上,也许请查看dotSpatial(.NET)的Positioning名称空间:http ://dotspatial.codeplex.com/wikipage?title=DotSpatial.Positioning

问候。


谢谢!TopoFusion是Windows的出色应用程序,但我确实需要一个库。dotSpatial有一些实用的代码可用于婴儿床。它受Mozilla公共许可证的约束。
尼尔森

0

如果您想要某种与语言无关的API的抽象规范,可以使用GeoAPI:

“开发GIS解决方案的开发社区正在付出巨大的努力。GeoAPI项目旨在通过提供源自OGC / ISO标准的中性,纯接口API来减少重复并提高互操作性。”

http://www.geoapi.org/

尤其是实施标准(PDF)


0

将您的GPX曲目上传到此URL

您将获得所需的大多数服务,特别是:

  • 计算在轨道上行驶的距离
  • 计算平均速度
  • 计算运动时间与静止时间(在速度曲线上可见)
  • 简化轨道,消除固定路段
  • 消除GPS采样误差
  • 转换轨迹KML / KMZ等以进行可视化
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.