【问题标题】:Android GTFS app安卓 GTFS 应用
【发布时间】:2013-05-26 19:49:52
【问题描述】:

我正在尝试开发一个使用 GTFS 的应用程序。这似乎是一个愚蠢的问题,但我找不到任何答案。

以色列的 GTFS 是一个相当小的国家,没有那么多公共汽车基础设施,压缩文件约为 120 MB。 现在我能想到的让它工作的唯一可能方法是下载文件,但使用手机下载 120 MB 可能需要很长时间。当然,您只能执行一次并将其保存在手机上的数据库中,但仍需要下载 120 MB。

由于它是压缩的,我无法通过服务器解压缩它,只能获取 txt 文件..

所以基本上我在问,如何在不下载压缩文件的情况下将信息发送到手机?

我见过并使用过使用相同 GTFS 文件的应用程序,它们的加载速度非常快,即使在第一次加载时也是如此。

希望您能理解我的问题,但不知道如何更好地解释。

谢谢!

P.s 我也会做一个 iPhone 应用程序,这是同样的问题,因此是 iPhone 标记

【问题讨论】:

    标签: java android iphone ios gtfs


    【解决方案1】:

    一种方法可能是在您的应用开发过程中预处理 GTFS 数据。您可以将其加载到 SQLite 数据库中,并使用 Core Data 在运行时从文件中获取您需要的数据。这也让您有机会仅包含您的应用实际需要的数据 - 要求用户下载他们不需要的额外数据是没有意义的。

    【讨论】:

    • 未压缩的 GTFS 文件刚刚超过 1 GB,即使将其中的一半添加到手机上的数据库中也会导致巨大的数据库和从市场/应用商店下载的巨大应用程序,不是有问题吗?
    • 您需要所有这些数据吗?例如,GTFS 数据可能包含详细的路由路径信息(可能非常大)。您的应用会使用这些数据吗?如果没有,请不要包含它。
    • 不,我不知道。那么最好的方法是什么?包括一个sql文件?我在某处读到这种方式实际上会占用两倍的大小,一次用于实际文件,一次用于数据库本身(至少在 Android 中)
    • 我不确定如何在 Android 上执行此操作的具体细节。理想情况下,您将包含一个预加载的 SQLite 数据库文件,您可以简单地打开并开始阅读(使用 SQLite 库)。这样做需要很少的启动时间。
    • 好的,谢谢!我会尝试这种方式(还注意到我认为不需要的 stop_times.txt 文件的大小为 0.98 GB,这很好)谢谢
    【解决方案2】:

    使用协议二进制格式 (pbf),以前是 google,现在是开源的。它紧凑且可快速搜索,因此无需在设备上解压缩并将其加载到该设备上的数据库中,因为 pbf 充当数据库。只需在代码中包含 pbf 库即可对其进行查询。当然,您必须在在线分发数据之前对其进行一次压缩。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-19
      • 2021-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多