在前端开发过程中,我们经常需要处理公共交通信息系统的数据。而从公共交通系统中获取数据是一件很困难的事情。好在现在有一种叫做 GTFS(General Transit Feed Specification)的标准数据格式,用于公共交通系统的信息交换。而诸如 gtfs-to-pouch 这样的 npm 包就是为了方便在前端处理 GTFS 数据而生。在本文中,我们将详细介绍如何使用 gtfs-to-pouch 包。
gtfs-to-pouch 简介
gtfs-to-pouch 是一个用于在浏览器和 Node.js 的轻量级 PouchDB 数据库之间实现 GTFS 数据转换的 npm 包。它使用 node-gtfs 作为其数据源,并将数据转换为 PouchDB 可以轻松处理的 JSON 格式。gtfs-to-pouch 还具有一些实用的功能,例如协调经纬度、设置高级导入格式等。在接下来的文章中,我们将讲述如何使用 gtfs-to-pouch。
安装 gtfs-to-pouch
安装 gtfs-to-pouch 之前,我们需要确保已经安装了 Node.js 和 npm。安装方法可以参考官方文档。
安装完成后,我们可以使用如下命令安装 gtfs-to-pouch:
npm install gtfs-to-pouch
使用 gtfs-to-pouch
使用 gtfs-to-pouch 并不复杂。它具有非常友好的 API。在接下来的章节中,我们将演示如何将 GTFS 数据导入 PouchDB。
初始化 gtfs-to-pouch
在使用 gtfs-to-pouch 之前,我们首先需要创建一个新的 PouchDB 数据库。
const PouchDB = require('pouchdb'); const db = new PouchDB('gtfs_db');
然后我们可以通过如下方式初始化 gtfs-to-pouch:
-- -------------------- ---- ------- ----- ----------- - ------------------------- ----- ------- - - ----- ------------------- -- -------------------- ----------- -- - ------------------- -------------- -------------- -- - ------------------- ------- --------- ---
在这里,options.path
指定 GTFS 文件 ZIP 存储路径。在导入过程中,gtfs-to-pouch 将自动解压文件并读取 GTFS 数据。如果导入成功,将会打印一行 “Import successful!”。
从 PouchDB 中获取 GTFS 数据
导入 GTFS 数据后,我们可以使用 PouchDB API 查询数据。例如:
db.query('stops', { key: '1000' }).then((result) => { console.log(result); }).catch((err) => { console.log(`Query failed: ${err}`); });
这是一个以停靠点 ID 为搜索条件的简单查询示例。在本示例中,我们使用了 PouchDB 的 query
函数来查询数据,查询结果将会被输出到控制台。
高级导入格式
gtfs-to-pouch 还支持高级导入格式。我们可以定义自己的导入选项,例如:
-- -------------------- ---- ------- ----- ------- - - ----- ------------------- --------- - - ----------- ---- ----- ------- -- -- - ----------- ---- ----- ------- -- -- -- ---------- - - ----------- ---- ------- -- -------- -- ---------- -- --------- -- ------- -- ----------- ----------- --------- ---------- -- -- ------- - - ----------- ---- --------- ---- ----------------- ----- ---------------- ----- ----- --- ----------- ----- ----- - ------------- ------------ ---------- ----------------- ---------- ----------- - -- - ----------- ---- --------- ---- ----------------- ----- ---------------- ----- ----- --- ----------- ----- ----- - ------------- ------------ ---------- ----------------- ---------- ----------- - -- -- ------ - - --------- ---- ----------- ---- -------- ---- -------------- ----- ---- --- ------------- -- --------- --- -- - --------- ---- ----------- ---- -------- ---- -------------- ----- ---- --- ------------- -- --------- --- -- -- ------- - - --------- ---- ------------- -- ------------- -- ------------------ - -- - --------- ---- ------------- -- ------------- -- ------------------ - -- -- ----------- - - -------- ---- ------------- ----------- --------------- ----------- -------- ---- -------------- - -- - -------- ---- ------------- ----------- --------------- ----------- -------- ---- -------------- - -- -- ------ - - -------- ---- ---------- ---- ---------- ----- --- --------- -- --------- - -- - -------- ---- ---------- ---- ---------- ----- --- --------- -- --------- - -- -- --
上面这段示例代码中定义了一份高级导入格式,包括如下部分:
- agency:运营机构信息
- calendar:服务日历
- calendar_dates:服务日历日期
- fares:票价信息
- feed_info:数据源信息
- routes:公交路线信息
- shapes:线路形态信息
- stops:停靠点信息
- stop_times:停靠点时间信息
- trips:定期行程信息
我们可以使用如下方式来将数据按照高级格式导入 PouchDB:
-- -------------------- ---- ------- ----- ---------- - ----------------------- ----- ------- - - --------- ------------------- ------- ---------------------------- ---------- ------------- ------------ --- --------- ----------- --------------------------- ---------------- ------ -- --------------------------- -- - ------------------- -------------- -------------- -- - ------------------- ------- --------- ---
在本示例中,我们使用 gtfs-import
包来导入高级格式数据。如导入成功,将会打印一行 “Import successful!”。
结语
本文介绍了如何使用 gtfs-to-pouch 这个处理 GTFS 数据的 npm 包。我们向你展示了如何初始化 GTFS 数据库,查询 GTFS 数据以及如何使用高级格式导入 GTFS 数据。希望通过本文,你对 GTFS 数据处理的理解更进一步,从而提高自己在前端开发中的技术水平。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60055b0f81e8991b448d8b61