- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个问题与地理空间信息系统的知识有些重叠,但我认为它属于这里而不是 GIS.StackExchange
有很多应用程序处理具有非常相似对象的 GPS 数据,其中大多数由 GPX standard 定义。 .这些对象将是路线、轨迹、航点等的集合。一些重要的程序,如 GoogleMaps,以 KML 格式或多或少地序列化相同的实体。有许多其他在线 map 应用程序(ridewithgps、strava、runkeeper,仅举几例)以不同的方式处理此类数据,但允许或多或少地对数据进行等效的“操作”。这些操作的示例是:
最佳答案
据我所知,在存储/操作/处理“路线”数据时,没有标准库、接口(interface),甚至没有一套既定的最佳实践。我们在 Ride with GPS 上为解决这些问题付出了很多努力,我知道其他解决相关问题的网站也可以这么说。我希望有一个标准,并愿意与某人一起工作。
GPX 还可以,而且似乎是一种标准……至少在您开始处理 GPX 文件并发现每个人同时为格式添加了自己的自定义扩展以处理心率、节奏、功率等数据之前。此外,没有将路线点与跟踪点相关联的标准方法。路线的“面包屑路径”表示为一系列 trkpt 元素,路线点(例如“左转进入第 4 街”)表示为一系列单独的 rtept 元素。理想情况下,您希望将给定的类(class)点与特定的轨迹点相关联,而不是仅仅为类(class)点提供纬度和经度。如果您的路径在同一条街道上进行了多次循环,则可能会在路线上的路线点应附加的位置上引入一些歧义。
KML 和 Garmin 的 TCX 格式与 GPX 类似,各有优缺点。最后,这些格式实际上仅用于在程序之间传输数据。它们没有解决如何在程序中表示数据的问题,或者可以对数据执行什么类型的操作。
我们将轨迹数据存储为对象数组,键对应不同的属性,例如纬度、经度、海拔、起点时间、起点距离、速度、心率等。此外,我们沿路线存储一些元数据以指定每个部分的详细信息。在解析跟踪点数组时,我们使用此元数据将 Route 拆分为一系列 Segment。段可以被拆分、连接、移除、附加、反转等。它们还封装了轨迹点生成的方法,无论是通过沿直线插入点,还是请求表示端点之间方向的路径。这些方法允许相当简单地实现拖放编辑和其他常见操作。 Route 对象可用于处理涉及多个段的操作。一个例子是,如果您有一条由路段组成的路线 - 一些行车路线、直线、步行路线等等 - 并且想要反转路线。您可以要求每个段自行反转,在此过程中保持其设置。在更高的层次上,我们使用 Map 类来连接接口(interface),将命令分派(dispatch)到 Route(s),并保持一系列快照或转换功能正确更新以支持合理的撤消/重做。
路线操纵和生成是目标之一。其他聚合汇总统计数据正在构建数据以实现高效的可视化/交互。任何能够接收数据并生成折线图的系统都在一定程度上解决了这些问题。这里并不完全是新领域。路线数据的一个有趣特征是,您通常会为 x 轴选择两个变量:距起点的时间和距起点的距离。两者都是单调递增的,并且都提供有用但不同的数据解释。查看以距离为 x 轴的高程图将显示骑自行车上下山对称。使用时间的 x 轴,上坡部分要宽得多。这不仅仅是在图表上可视化数据,它还转化为您在将数据处理为汇总统计数据时做出的决策。一些加权平均值基于时间,一些基于距离。您最终想要的操作是最小值、最大值、加权(基于您选择的独立变量)平均值、过滤点和执行过滤的最小值/最大值/平均值的能力(仅使用您移动的点,忽略异常值等)、不同的平滑函数(例如帮助计算总高程增益)、 map /减少功能的基本概念(我在 20-30mph 之间花费了多少时间等),以及涉及一些插值的固定窗口移动平均值。如果您想确定最快的 10 分钟或 10 分钟的最高平均心率等,则后者是必要的。最后,您将需要一种简单有效的方法来执行您在跟踪点子集上运行的任何计算.
如果您有兴趣,可以在此处查看所有这些操作的示例:http://ridewithgps.com/trips/964148
底部的图形可以鼠标悬停,拖动选择放大。x轴有一个链接,可以在距离/时间之间切换。在底部的左侧边栏上,您会看到 30 秒和 60 秒的最佳效果 - 这些是通过带有插值的固定窗口移动平均线完成的。在右侧边栏上,单击“指标”选项卡。拖动选择以放大图表上的某个部分,您将看到所有指标更新以反射(reflect)您的选择。
很高兴回答任何问题,或与任何人合作,以某种标准或开放的方式实现其中一些想法。
这可能不是您正在寻找的答案,但我想我会提供一些关于我们如何在 Ride with GPS 上做事的细节,因为我们不知道您似乎正在寻找任何真正的标准。
谢谢!
关于oop - 是否有通用/标准/接受的方式来建模 GPS 实体(航点、轨迹)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13073663/
我正在本地编程应用程序,但是当我迁移到服务器时,使用此行出现解析错误: if(!is_array($data[array_keys($data)[0]])) 返回值: Parse error: syn
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 9 年前。 Improv
我已经开始尝试用 C++ 学习 Winsock,但我遇到了一些问题。我首先遵循 MSDN 上的 Winsock 示例(一个基本的客户端-服务器)。 http://msdn.microsoft.com/
我有一段使用 epoll 的代码,但它有问题。当我运行它时,它给出输出:服务器套接字()没问题......服务器绑定(bind)()没问题......3个4个接受:无效参数 我在 ubuntu lin
我正在寻找一种方法来接受 $_GET 变量作为文件路径,例如 - /page/test将转换为 page.php?page=test .我已经搜索过,但找不到任何可以帮助我的东西,因此我在这里问。 我
我想要一个只接受从 0 到 9 和减号的浮点数的正则表达式。 请帮忙。 最佳答案 ^[-+]?[0-9]*\.?[0-9]+$ ^ - 字符串开头 [-+]? - 0 或 1 符号指示符 [0-9]*
请问如何接受\r\n无需将其更改为 \\r\\n , 与 fgets . 我想让程序翻译 \r\n到换行符而不是将其打印为字符串。 当前代码: char buff[1024]; printf("Msg
我正在编写一个 Cocoa 应用程序,该应用程序需要在其 Dock 图标上接受已安装卷的滴落。它不是基于文档的;我打算将每个卷分派(dispatch)到 application:openFiles 中
我在 SQLite 中发现了这种意外行为。 SQLite 似乎接受 SQL 连接语法中的任意关键字。如果我不小心键入了 natural join 而不是 natural join,则会生成笛卡尔积。这
我在 Windows 窗体的同一个窗体上有一个 TreeView 和一个多行文本框。我有拖放设置,以便我可以将节点从 TreeView 拖到文本框并将文本插入文本框(这是有效的)。 我想增强这一点,以
我正在创建一棵类似于 D3 Layout Tree 的树并尝试绑定(bind)我的自定义 JSON 对象。切换树节点的代码如下。 function toggleAll(d) { if (d.c
所以,我希望能够向我的 DOB 字段发送空选项。 这是我的表单生成器: ->add('birthDate', DateType::class, array( 'widg
错误可以在这里看到:http://djaffry.selfip.com:8080/ 我希望索引页接受参数,无论是 mysite.com/search/param_here 或 mysite.com/?
我想知道标准 Scala 解析器组合器是否包含一个解析器,该解析器接受 Scala 语言本身也接受的相同标识符(如 Scala 语言规范第 1.1 节中所指定)。 StdTokenParsers 特征
我暂时使用以下行在我的 Android 手机上创建 ServerSocket: socketl = new ServerSocket(port, 0, InetAddress.getByName("1
今天早上刚刚发布了一个应用程序,我在所有可能的设备和模拟器上测试了它,但是当我从商店下载它时,应用程序在启动时崩溃。我在很多设备和iOS版本上测试过,但结果都是一样的: Incident Identi
我想要 5 个名字中最长的一个。我想我应该使用 compareTo() 方法或 length()? 输出必须是这样的: enter 5 names : Joey Mark Catherine Zach
抱歉,我不熟悉泛型,我可以创建一个如下所示的泛型类: public class InfoField { } 上面的类可以接受如下值: , User> 但是我可以有接受 map 对象作为值的类吗?
我想让一个单元格等于它上面的单元格。 当我写作时 =address(row()-1;column()) 它只是写入上面单元格的名称(例如,对于 B2,它写入 $B$1) 是否有一个函数可以输入地址并放
我正在使用Asm访问java字节码来获取方法信息。看来ClassReader类的accept方法是异步调用的,所以不可能立即获取方法信息。我该怎么办? 最佳答案 实际上,accept 方法是从您自己的
我是一名优秀的程序员,十分优秀!