使用Redis和Python构建一个共享单车的应用程序
副标题[/!--empirenews.page--]
我经常出差。但不是一个汽车狂热分子,所以当我有空闲时,我更喜欢在城市中散步或者骑单车。我参观过的许多城市都有共享单车系统,你可以租个单车用几个小时。大多数系统都有一个应用程序来帮助用户定位和租用他们的单车,但对于像我这样的用户来说,在一个地方可以获得可租赁的城市中所有单车的信息会更有帮助。 为了解决这个问题并且展示开源的强大还有为 Web 应用程序添加位置感知的功能,我组合了可用的公开的共享单车数据、Python 编程语言以及开源的 Redis 内存数据结构服务,用来索引和查询地理空间数据。 由此诞生的共享单车应用程序包含来自很多不同的共享系统的数据,包括纽约市的 Citi Bike 共享单车系统(LCTT 译注:Citi Bike 是纽约市的一个私营公共单车系统。在 2013 年 5 月 27 日正式营运,是美国最大的公共单车系统。Citi Bike 的名称有两层意思。Citi 是计划赞助商花旗银行(CitiBank)的名字。同时,Citi 和英文中“城市(city)”一词的读音相同)。它利用了花旗单车系统提供的 通用共享单车数据流,并利用其数据演示了一些使用 Redis 地理空间数据索引的功能。 花旗单车数据可按照 花旗单车数据许可协议 提供。 通用共享单车数据流规范通用共享单车数据流规范(GBFS)是由 北美共享单车协会 开发的 开放数据规范,旨在使地图程序和运输程序更容易的将共享单车系统添加到对应平台中。 目前世界上有 60 多个不同的共享系统使用该规范。 Feed 流由几个简单的 JSON 数据文件组成,其中包含系统状态的信息。 Feed 流以一个顶级 JSON 文件开头,其引用了子数据流的 URL:
第一步是使用
建立数据库我编写了一个示例应用程序 loadstationdata.py,它模仿后端进程中从外部源加载数据时会发生什么。 查找共享单车站从 GitHub 上 GBFS 仓库中的 systems.csv 文件开始加载共享单车数据。 仓库中的 systems.csv 文件提供已注册的共享单车系统及可用的 GBFS 数据流的发现 URL。 这个发现 URL 是处理共享单车信息的起点。
载入车站数据车站信息提供系统中每个车站的数据,包括该系统的位置。 更新数据在后续运行中,我不希望代码从 Redis 中删除所有 Feed 数据并将其重新加载到空的 Redis 数据库中,因此我仔细考虑了如何处理数据的原地更新。 (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |