阅读gtfs google transitFeed python。

5

我正在尝试读取一个zip格式的gtfs文件。根据Google仓库的说明,这个库可以读取gtfs文件,但是我没有找到任何关于如何使用transitfeed库读取gtfs文件的信息。

你知道怎么读取并获取gtfs文件的结构吗?

我想要获取所有的结构并创建一个Json文件。

例如:

{
 agency:{agencyName: 'aaa', agencyTimezone: 'bbb'...},
 routes: [
  busStop: {...},
  busStop: {...},
 ]
 .....
}

我知道如何使用库进行验证,但不确定它是否有帮助。

谢谢。

2个回答

3

使用 transitfeed ,我从文档中没有看到任何读取现有feed的方法,这也是我选择不在我的项目中使用它的原因之一。

有一个名为pygtfs的库可以从gtfs feed中提取所有相关信息,您可以使用其API将其转换为所需格式。
要读取gtfs feed(文件夹或.zip文件),您只需要执行以下操作:

sched = pygtfs.Schedule(":memory:")                # create a schedule object (a sqlite database)
pygtfs.append_feed(sched, "sample-gtfs-feed.zip")  # add the GTFS feed to the database

API中有多种方法可以对时间表对象进行查询,并获取有关提要的所有相关信息(大多数情况下取决于需求,您只需要其中的一部分)。
尽管如果您需要使用大规模提要或与不完全符合标准的提要一起工作(当涉及到这些方面时,pygtfs会变得相当暴躁),我建议您只需解压提要并“手动”解析文件以构建GTFS自制对象。
要将数据编码为json,请使用json库。

0

我找到了实现我想要的方法。我将展示给你看。

你只需要安装googleTransitFeed。

代码非常简单。

import transitfeed

extension_module = transitfeed
gtfs_factory = extension_module.GetGtfsFactory()
loader = gtfs_factory.Loader(<the path of you zip>)
schedule = loader.Load()

现在你已经在日程对象中拥有了所有的gtfs结构

注意: 如果你想要获得停靠时间的值,你必须在trip中使用方法GetStopTimes()

例如

trip.GetStopTimes()

最后我不需要将其解析为json。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接