从GPS轨迹创建基于折线的“热图”?


30

今年冬天,我计划使用GPS跟踪下坡滑雪/单板滑雪。我的大部分骑行都将在同一度假村进行。我希望能够创建一种“热图”,以显示我在给定区域内进行的运行次数。当我向数据库中添加越来越多的GPS轨迹时,我的目标是看到一种最频繁旅行的区域的线性热图。考虑到下坡滑雪的性质,您会希望上坡的吊椅索道将是“最热”的路线,因为它将是唯一一遍又一遍的地方。

假设1)我的轨迹每次都不相同,以及2)进行一次“运行”所覆盖的区域可能是几百英尺宽,那么分析这种“线性”数据以创建一种分类的最佳方法可能是什么热图?我的想法是缓冲线条,然后将多边形相交以得到某种维恩图图。我更喜欢使用开源技术。我已经加载了QGIS和PostGIS并可以使用。

更新:关于@ blah238的响应,我在想一些可能可以“收集”通过某个区域的通过次数(“行程”),然后以计数表示的东西。从概念上讲,这类似于ArcGIS的“ 收集事件 ”(但对于线而不是点)或将双线折叠为中心线(但对于大致相同区域中的多条线)。

类似概念的一个更直观的示例可能是交通流图,其中高度拥挤的区域等同于“高度行驶”的滑雪道/区域:

Google流量图

我阅读了以下问题,这些问题可能会提出一些想法,但是它们并没有真正解决我要完成的任务:

聚类轨迹((x,y)点的GPS数据)和数据挖掘

使用GPS路线管理错误(理论框架?)


假设您将使用GPX数据,则应该仅按间隔读取纬度/经度读数,因此它应该已经在点要素中。然后,您将无法使用热图吗?还是不使用GPX兼容设备?
RomaH 2012年

嗯 我误读了你想要的东西。没关系。
罗马2012年

@RomaH,实际上,您很可能对使用点生成热图而不是使用线条的想法有所了解。我之前没有考虑过使用源点,因此我将对此进行肯定的调查。
RyanDalton 2012年

您正在处理一个领域,因为这条街道的边界明确。如果要创建线模型,则可以进行多个多边形叠加,连接并使用point2one插件制作具有继承值的线图。但是随后您需要确定一个人需要滑行多远才能证明一个新的线要素。就我个人而言,我将对热图解决方案感到满意,但同样,我不知道您的需求。
RomaH 2012年

我偶然发现了这个问题,这是完成基本相同任务的一种非常酷的方法,但是使用GPS跟踪点创建热图。
RyanDalton

Answers:


17

通过扩展热图渲染转换以支持点以外的几何形状,我在GeoTools / GeoServer中做了一些工作。

比萨外卖热图

尚未完成,但是您可以从GitHub上的存储库中获取功能分支。

屏幕截图是我担任披萨送货司机时的GPS轨迹。


它仍然没有输出矢量几何图形,但它正在收集重叠以提供更高的值。
smithkm

有什么想法如何仅通过postgis来获得这种效果?还是qgis?
chrismarx

15

这是一个很好的教程,可以使用MapBoxTileMill做到这一点

屏幕截图


1
同意,这个概念几乎是相同的,并且可以在任何GIS中轻松完成。但这基本上是在暗示“只要用浅绿色缓冲区将所有轨道变成红色”,它们就会在地图上脱颖而出?为了视觉效果,我一定会工作。我想我本来是想尝试一些更具“分析性”的东西,在这个例子中可以显示“次数”。我会继续考虑。
RyanDalton 2012年

@ blah238我在寻找类似的例子...非常感谢!
Sunil 2012年

1
@ blah238,考虑了一段时间之后,您对我的最初问题提供了非常有效的答案。我应该更加清楚自己的想法。感谢您的回答,我已经更新了我的问题,以更准确地反映我想要达到的目标。感谢您的帮助。
RyanDalton 2012年

5

这是我的简单方法:

  1. 在umap中创建一个新地图: http //umap.openstreetmap.fr/en
  2. 点击导入数据,选择所有拥有的gpx文件并将其上传到地图(您可以一次导入所有文件)
  3. 输入编辑地图设置>默认属性,选择不透明度0.25,权重10。

上面的三个步骤将花费5分钟,结果如下: 在此处输入图片说明


3

这是我在QGIS上的方法。这是针对一组公交路线的,我想确定哪条道路的公交路线经过的密度最高。

  • 使用Qchainage插件将我的线条转换为点。测试了不同的场景,直到我每条线产生很多点(每条线1,500条,并且线约9公里)。
  • 在样式选项卡中应用了Qgis内置的热图符号系统渲染。图层属性>样式>热图
  • 播放半径和最大值。确保选择最佳的渲染质量。
  • 创建了一个新的色带(选择连续色),该色带从黑色开始,另一侧是其他任何亮色。

还有。

在此处输入图片说明 在此处输入图片说明


2

我意识到这是一篇很旧的文章,但是,我在做类似的研究时发现了它。我开发了一个非常简单的模型/工作流程,可以在ArcGIS中完成此工作(可能是QGIS,但我尚未在此实现)。

如果您专门有GPX或TCX文件(尽管任何点文件都可以使用),则只需在Excel中打开它,然后将其转换为CSV并导入ArcGIS。使用该Points to Line工具,您可以按时间对点进行排序(将GPS点从CSV转换为轨迹)(也可以使用唯一的标识符对它们进行分组,在这种情况下,可以按照度假胜地,路线或活动的特定日期-例如第1天,2天等)。这将创建一个折线图层(除非您按唯一ID对其进行分组)。然后,您使用该Split Line at Vertices工具在每个连续点之间创建线段。从那里开始,您可以使用该Line Density工具计算在给定指定像元大小和搜索半径的情况下穿过像元的行数,并输出栅格。该栅格可以象征为热图。

我已经并继续经常执行此操作,并在下面添加了示例结果:

在此处输入图片说明


这看起来像是一种非常有趣的技术。我从未完成过这个想法,因此我将对此做进一步的研究。感谢您回答一个老问题!
RyanDalton

没问题!仅使用Arc Toolbox中的这三个工具,这是一个非常简单的模型。或者,您可以仅使用Track Intervals to Line和工具将其进一步简化为两个Line Density工具
andrew-ryan

1

我们对此的使用涉及使用PGRouting将学生路由到他们的学校。

一条单独路线的结果在其核心处是一组节点(通过可选地关联相关边将其转换为线)。

如果将多个学生路由到一所学校,则可以使用热图渲染器在QGIS中显示节点的输出集合,该图显示了到学校收集的路由的“热点”(请参见下文)。

这些地图用于告知应该作为进一步安全基础设施的目标区域,例如十字路口,信号,标志等。

在此处输入图片说明


感谢分享图片,我喜欢。我将尝试处理GPX顶点而不是行,以查看热点是否在较小范围内工作
RyanDalton

0

创建网格,将gpsdata转换为shapefile,对线进行多边形处理,从表中提取x,y点数据,制作表面密度,或使用标准做法制作热图。然后,您可以将其与线性向量数据合并,以在光栅显示中获得像素值或进行进一步的数值处理。


0

大多数人(包括我自己)都会查看GPX文件,并将其视为一系列位置(点),而完全可以将其视为一系列线段

您的问题表述涉及一个“热图”,以便您可以直观地检查您的轨迹,因此有一种相当简单的方法可以通过将复杂的数字运算部分直接委派给绘图引擎来跳过它。

当您说“缓冲线”时,就是线的粗细。当您说“收集通行证”时,这意味着要以透明的方式反复绘制线条,从而“建立”越来越多的颜色。

因此,我建议您将每个轨迹绘制为一条多段线,其厚度要足以重叠(取决于缩放比例,因此您需要在地图距离而不是像素中设置厚度)并且不透明度较低(例如0.05)为黑色。

重要的是不要绘制每个线段,因为如果这样做,它们的末端将重叠,使其不透明度加倍,并创建颜色更深的“点”。

最后,您将获得一个灰度图像,可以在上面应用您选择的颜色图。

我可能会使用Python / Cairo做到这一点,但是Python / Matplotlib可以做到,而Html / Canvas或Html / SVG(或程序化SVG)当然可以。

最终结果将仅取决于输出媒体的分辨率。


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.