我一直在编写自定义代码以处理GPS轨道:手机中的GPX文件和NMEA日志,专用GPS记录器等。 GPS轨道。我想做的一些事情:


计算在轨道上的行驶距离
计算在轨道上的平均速度和瞬时速度
计算运动时间相对于固定时间的变化
简化轨道,消除静止的部分
将一条轨道分段成单独的轨道,每趟一个在DEM中
将轨迹转换为GPX,KML等以进行可视化

分析GPS轨迹的应用程序很多。我正在寻找软件库或可编写脚本的工具集,以便可以编写自己的应用程序。我不太在乎输入格式;任何带有时间戳的经/纬度点都可以。我主要在Unix上使用Python进行工作,但是几乎所有语言都可以。但是大多数情况下,我最终还是写了自己的Python代码,该代码可用于经纬度对数组,而且感觉太低了。同样,上述某些任务(例如消除GPS错误)非常微妙。我应该使用一些现有的库吗?

评论

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

Delphi代码也可以吗?

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

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

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

#1 楼

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

Iv' e使用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。有不错的绑定。

–尼尔森
2012年4月16日在18:49

如果你喜欢它...赞它!!

– Stev_k
2012年4月17日14:50

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

– atlefren
2014年8月28日在14:15

#2 楼

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

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

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

评论


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

–Petr Krampl
19 Mar 29 '19在9:53

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

–tma
19 Mar 30 '19 at 18:12

谢谢,无法访问存储库。除了元素外,是否还可以解析包含元素的gpx文件?

–Petr Krampl
19 Mar 30 '19 at 19:24

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

–tma
19 Mar 30 '19 at 22:10

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

–tma
19年3月31日在19:34

#3 楼

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

它提供以下功能:


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


评论


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

–尼尔森
2012年4月15日18:52

#4 楼

我刚刚完成了一个开放源代码库(已稳定)并分析了GPX,TCX和Fit文件。

库为https://github.com/jimmykane/quantified-self-lib
基于Angular的UI https://github.com/jimmykane/quantified-self

实时演示https://www.quantified-self.io

它可以做的是解析GPX,TCX或Fit文件,生成诸如上升,下降,距离之类的统计信息,

#5 楼

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

评论


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

–尼尔森
2012年4月16日18:43

#6 楼

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

评论


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

–尼尔森
2012年4月21日,0:47

#7 楼

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

“构建GIS解决方案的开发社区正在付出巨大的努力。GeoAPI项目旨在减少通过提供从OGC / ISO标准派生的中性,仅接口的API来实现重复并提高互操作性。“实施标准(PDF)

#8 楼

将您的GPX轨道上传到此URL

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


计算轨道上的行进距离
计算平均速度
计算运动时间与静止时间(在速度曲线上可见)
简化轨道,消除静止段
消除GPS采样误差轨道KML / KMZ等用于可视化


#9 楼

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


http:// www .topofusion.com /
http://www.topofusion.com/features.php

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

也许还有更多的话题,也许请查看dotSpatial(.NET)的定位名称空间:http://dotspatial.codeplex.com/wikipage?title=DotSpatial.Positioning



评论


谢谢! TopoFusion是Windows的出色应用程序,但我确实需要一个库。 dotSpatial可以为婴儿床添加一些有用的代码。它已获得Mozilla公共许可。

–尼尔森
2012年4月21日,0:53