#postgresql #feed #gtfs #real-time #back-end #import #update

bin+lib catenary-backend

GTFS 数据的导入和后端

2 个版本

0.1.1 2024 年 3 月 9 日
0.1.0 2024 年 3 月 6 日

1062数据库接口

自定义许可证AGPL-3.0

460KB
9K SLoC

Rust 8K SLoC // 0.0% comments Python 1K SLoC // 0.1% comments Shell 57 SLoC // 0.2% comments Bitbake 55 SLoC // 0.4% comments

包含 (Zip 文件, 18KB) transitland-atlas-vscode-extension-0.0.2.vsix

安装依赖项

sudo apt install protobuf-compiler build-essential gcc pkg-config libssl-dev postgresql unzip wget

加载数据

将数据加载到 Postgres 数据库是一个多步骤的过程。请确保您的 Postgres 数据库正在运行,并且密码设置正确。

下载 Transitland 仓库

Transitland 作为 Catenary-Backend 的初始知识来源,并将静态数据和实时数据关联起来。通过以下方式下载和更新它:

git submodule init && git submodule update

如果您已经拥有它,请记住使用 git pull / 合并更改。为此,请切换到文件夹 transitland-atlas 并运行 git pull

下载 GTFS 静态数据

这会下载世界上所有 GTFS 静态数据。这一步可能需要一段时间,所以您可以玩一会儿 Minecraft / 摸一摸草地,然后再回来!

cargo run --release --bin transitlanddownload

解压和格式化 Zip 文件

./src/ingest_gtfs_schedule/unzip-statics.sh

将数据导入到 Postgres 数据库

cargo run --release --bin import -- --postgres "host=localhost user=postgres password=correcthorsebatterystaple" --threads 25 --startfresh true --isprod false

此命令写入 gtfs_stage。如果想要清除临时目录,请省略 startfresh。

出于安全原因,您无法从当前版本删除生产数据库中的 gtfs 模式,这是生产数据库。

您也可以写入生产环境,特别是加载单个机构,如下所示。

cargo run --release --bin import -- --postgres "host=localhost user=postgres password=correcthorsebatterystaple" --threads 25 --startfresh false --limittostaticfeed f-9q9-caltrain --isprod true

将临时数据库移动到新的生产数据库。

gtfs_stage 表集移动到 gtfs 真的是很简单

cargo run --bin move_to_prod -- --postgres "host=localhost user=postgres password=correcthorsebatterystaple"

将到 prod 删除当前生产数据库,重命名临时数据库,然后提交更改

您已经完成了!数据已完全准备好供用户使用!

运行应用程序

安装 Systemd 服务

sudo cp transitbackend.service /etc/systemd/system/transitbackend.service
sudo systemctl daemon-reload
sudo systemctl enable --now transitbackend.service

示例端点

https://127.0.0.1:5401/getroutesperagency?feed_id=f-9mu-orangecountytransportationauthority

https://127.0.0.1:5401/gettrip?feed_id=f-9mu-orangecountytransportationauthority&trip_id=10995882

对于贡献者

对于 Unix 用户,运行 git config core.hooksPath .githooks 是必需的。如果没有这项,拉取请求将不会合并。

目前没有为 Windows 用户提供的选项。请尝试使用 WSL Ubuntu。我们正在努力添加这项功能。

依赖项

~83MB
~1.5M SLoC