Languages: English • 简体中文 • 繁體中文
SensorThings API - 时间旅行
在 第三部分 中, 我们:
-
从SensorThings服务器取回了
@iot.nextLink连结的所有Locations。 -
调整了地图以显示更多的可用数据。
available_bikes的观测属性ObservedProperty的观测值Observations。但如需了解数据跟随时间的变化情况,历史数据也很重要。在这部分中,我们将展示如何从SensorThings服务器取回通过phenomenonTime排序过的数据。
过滤观测值(Observations)
之前为了取回available_bike,我们过滤了Datastreams里面对应的ObservedProperty。我们也可以对各种其他属性进行$filter,包括了Observations里面的phenomenonTime。
这是我们之前使用过的查询,不同的是,这里我们修改了返回结果的时间日期,任选一个时间,比如返回从2017年2月13日下午5点(美国东部标准时间或UTC-5)到现在的所有结果。
请注意,时间表示是依照 ISO 8601 合并日期与时间的扩展格式。虽然这里我们不展开讨论 时区和时差 问题,但建议您可以适当了解一下这方面的知识,包括与UTC时间的关系,尤其如果涉及到夏令时,问题会更加复杂。
通过组合不同的$filter和$orderby,可满足不同的查询需要。举例来说:
-
取在某个特定时间之前的数据,以降序排列:
$filter=phenomenonTime lt [iso8601-time]and$orderby=phenomenonTime desc -
取在某个特定时间之后的数据,以升序排列:
$filter=phenomenonTime gt [iso8601-time]and$orderby=phenomenonTime asc -
取一段时间之内的所有的数据:
$filter=phenomenonTime ge [iso8601-time] and phenomenonTime lt [iso8601-time]
lt 代表“小于(less-than)”,gt代表“大于(greater-than)”,le和ge分别代表“小于或等于(less-than-or-equal-to)”和“大于或等于(greater-than-or-equal-to)”。
一天之内自行车的可用性变化
为了让事情变得有趣,让我们尝试一种可视化数据的方法可以:
- 显示一些有意义的资讯。
- 显示在一天之中的变化。
对任何人而言,一个站点只要至少有一辆可用的自行车(假设使用者只需要一辆)或至少一个车位(假设使用者需要还车)。因此,为了可视化这一点:
-
取回
available_bikes与available_docks数据,这可以通过删除查询中$filter=ObservedProperty/name eq 'available_bikes'来实现。 -
下方地图红色圆圈表示站点是空的,即没有自行车或者没有车位。
时光飞逝
$filter中修改phenomenonTime为特定时间。
通过观察可以得出,在白天的某些较为集中的地方,有很多自行车站点都是空的。也就是说,我们以一天作为数据点,可以展开一些潜在的问题,比如是否自行车和车位因为工作日或周末而不同?类似这样的问题,可以留给您继续探索。
总结
这个系列教程中,我们逐步介绍了如何从SensorThing服务器取得位置Locations以及与其关联的观测值Observations,并在地图上进行了可视化展示。当然了,通过SensorThings您还可以实现更多的需求。希望这个教程可以启发您的思路,为您以后的探索学习奠定基础。