云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

全站加速_华为云服务安卓_返利

小七 141 0

几个月前,我的一位朋友向我介绍了SAP云平台门户挑战赛2018-2019(感谢Ourives)。一段时间以来,我一直在寻找一个玩实时公共交通数据的借口,因此我决定做一个关于这个主题的演示并加入挑战去悉尼–公共交通是一款应用程序,其主要思想是为澳大利亚悉尼提供实时公共交通信息。该应用程序包含有关路线、站点、时间表、可访问性和地图上显示的实时车辆位置的详细信息。

Fiori启动板:https://flpnwc-c1413ea3b.dispatcher.ap1.hana.ondemand.com/sites/gotosydney

独立应用程序:https://gotosydneyapp-c1413ea3b.dispatcher.ap1.hana.ondemand.com/index.html

资料图:GTFS

我启动了研究什么是通用运输Feed规范(GTFS)及其工作原理的项目。GTFS是公共交通时间表的标准,云服务器服务器,使世界各地的机构能够以标准化和结构化的格式发布其数据。谷歌有一个令人难以置信的网站描述了这个标准背后的所有细节。

第二步是一个棘手的步骤:我到底要从哪里得到这些数据?我想使用实时数据,而不仅仅是站点位置和时间表。我在我家乡(巴西阿雷格里港)的公共机构中搜索数据集。不幸的是,我找不到这个机构的任何实时数据。好吧,是时候选择另一个城市了。更多的研究,更多的谷歌时间和瞧!我最终选择了澳大利亚的悉尼。新南威尔士州政府有一个漂亮而有用的网站,上面有大量关于他们发布的公共数据的信息。它们有用于静态(路线、站点、时间表等)和实时(公交车位置、延误、警报等)信息的API。干得好,新南威尔士州!!!

现在我可以访问他们的数据了,返现网,乐趣就要开始了。我花在阅读、测试、更改和使用GTFS数据上的时间比开发应用程序的时间要多。至少对我来说,刚开始有点困惑。我面临的最大问题是数据集的大小。GTFS文件往往是巨大的(静态的,而不是实时的)!储存它们不是一个选择。我的免费MongoDB实例只有500Mb。直接从API中使用它们将对性能产生巨大影响,因为例如,物联网专用卡,无法只调用一个总线细节。全是公车还是什么都没有!

我刚想放弃,突然有了一个想法。这"只是"一个概念的证明,而不是一个最终产品,我会收取数千美元,在几个星期内获得百万富翁,并搬到太平洋某个岛屿。因此,我决定剥离数据集并使用裸最小值。没有公共汽车,没有火车,只有渡船。渡轮数据集比其他数据集小得多,但仍然相当大。我删除、转换和更改了大量的文件和字段,以更好地满足我的需要。最后,我准备好了一个小数据集供我的Fiori应用程序使用。

后端:Heroku上的Nodejs

数据结构准备好了,是时候开发我的后端了。后端是运行在Heroku上的nodejs应用程序。应用程序有用于静态和实时数据的api。任何对应用程序中实时API的请求(/realtime/)都会触发2个对新南威尔士州政府API的内部请求,大数据工具,以获取渡轮位置和行程详细信息。

额外功能:每次我提交/推送新版本到git存储库时,它都会构建应用程序并自动部署到Heroku。它节省了我很多时间。我多么希望我们在SCP中也能有这样的表现……我知道我可以通过编写大量的脚本来达到类似的效果,这正是我的观点。还有一件事,我本来可以把这个应用程序部署到SCP Cloud Foundry,但我们还在等SAP来解决我们帐户中的一些问题(拜托,SAP,已经几个月了)。

前端:Fiori应用程序

Fiori应用程序是一个"老"的主/细节,我不喜欢灵活的列布局(判断我!)。应用程序一启动,就从后端加载静态GTFS数据。一旦用户选择一条路线/行程,悉尼渡轮的实时位置就会被加载。该应用程序有3个级别的母版页:路由>行程>站点。详细信息页总是可用的(实际上,它取决于形状因素,但您可以得到它)。站点和渡轮的位置显示在谷歌地图的详细信息页面上。因为我想让我的应用程序在Fiori启动板上运行,作为一个独立的应用程序,我正在从我的组件.js.

选择路线和出行方向后,用户可以点击站点查看到达目的地的时刻表。时间表显示在弹出窗口中,并自动向下滚动到下一个可用行程。未来的旅行有一个蓝色的标记,过去的旅行没有。此外,车站和渡轮服务也有一个图标,告知他们是否有可访问的功能。我本可以使用实时数据来通知给定行程的延迟和警报,但由于时间限制,云估价,它不可用(可能是下一个版本?)。

对后端的调用由我去年开发并发布在NPM上的自定义JSON模型处理(https://www.npmjs.com/package/openui5-model-json-crud). 它不使用jQuery AJAX作为标准JSON模型,它使用Fetch API并提供CRUD接口。

前端:SCP Portal上的Fiori Launchpad