irail/stations

在您的PHP项目中使用比利时铁路的车站

2.0.9 2024-08-24 10:44 UTC

README

Build Status Dependency Status Software License

我们试图使用CSV文件维护比利时所有车站的列表,以便每个人都可以在github上帮助维护。此外,我们还为您提供了PHP composer/packagist库,用于从车站名称到ID以及反之亦然的转换,并将CSV文件转换为JSON-LD以实现最大限度的语义互操作性。

我们收集的字段

stations.csv

此文件描述了比利时所有NMBS/SNCB车站。车站可以有多个站台(停靠点),这些站台在stops.csv中描述。

  • URI:这是可以找到更多关于此车站信息(例如实时发车时间)的URI(这已经包含NMBS/SNCB的ID)
  • longitude:车站的经度
  • latitude:车站的纬度
  • name:车站最中性的名称(例如,在瓦隆地区使用法语名称,在布鲁塞尔使用两种名称,在弗拉芒地区使用nl名称)
  • alternative-fr:如果有的话,法语替代名称
  • alternative-nl:如果有的话,荷兰语替代名称
  • alternative-de:如果有的话,德语替代名称
  • alternative-en:如果有的话,英语替代名称
  • taf-tap-codeTSI TAF/TAP编号,用于车站来源:Infrabel铁路网络操作点
  • telegraph-code:比利时车站的缩写名称,由NMBS/SNCB内部使用。来源:Infrabel网络声明附件D文件D06-RIEI-12_N_20230915.pdf
  • country-code:车站所属国家的代码
  • avg_stop_times:每天在此车站停靠的平均车辆数量(计算字段
  • official_transfer_time:根据官方来源(NMBS/SNCB),在此车站进行转乘所需的时间(计算字段

stops.csv

此文件描述了比利时所有NMBS/SNCB停靠点。每个站台是一个单独的停靠地点。所有字段均使用gtfs_data_extractor.php进行计算。

  • URI:这是可以找到有关此停靠/站台的更多信息的URI(存在于父站点的URI中+ '#' +站台代码)
  • parent_stop:这是在stations.csv中定义的父停靠点的URI
  • longitude:停靠点的经度
  • latitude:停靠点的纬度
  • name:停靠点名称
  • alternative-fr:如果有的话,法语替代名称
  • alternative-nl:如果有的话,荷兰语替代名称
  • alternative-de:如果有的话,德语替代名称
  • alternative-en:如果有的话,英语替代名称
  • platform:站台代码(也可以包含字母,因此不要将其视为数字!)

facilities.csv

此文件描述了NMBS/SNCB车站中可用的设施。所有字段均使用web_facilities_extractor.php进行计算。

  • URI:识别此车站的URI。
  • name:此车站的名称。
  • street:此车站地址的街道。
  • zip:此车站地址的邮政编码。
  • city:此车站地址的城市。
  • ticket_vending_machine:是否有售票机。注意:售票机可能位于建筑物内(并且在车站关闭时可能被锁定)。
  • luggage_lockers:是否有行李寄存处。
  • free_parking:是否有免费停车位。
  • taxi:是否有出租车/等待出租车停车位。
  • bicycle_spots: 停车区域是否提供自行车停车位。
  • blue-bike: 是否有蓝车(租赁自行车)。
  • bus: 在本站是否可以换乘公交线。
  • tram: 在本站是否可以换乘电车线。
  • metro: 在本站是否可以换乘地铁线。
  • wheelchair_available: 站点是否提供轮椅。
  • ramp: 站点是否为轮椅使用者提供登车斜坡。
  • disabled_parking_spots: 为残障旅客预留的停车位数量。
  • elevated_platform: 站点是否设有高站台。
  • escalator_up: 站点是否设有通往或离开站台的上行自动扶梯。
  • escalator_down: 站点是否设有通往或离开站台的下行自动扶梯。
  • elevator_platform: 站点是否设有通往站台电梯。
  • audio_induction_loop: 是否提供音频感应环路(荷兰语:Ringleiding)。
  • sales_open_monday - sales_open_sunday: 在这个星期几,售票处开始营业的时间。
  • sales_close_monday - sales_close_sunday: 在这个星期几,售票处结束营业的时间。

embarkment_statistics.csv

此文件描述了每天有多少人在指定站台上车。2023年10月统计数据,来源:belgiantrain.be, Cijfers opgestapte reizigers

  • URI:识别此车站的URI。
  • name:此车站的名称。
  • nmbs_short_name: 站点的简称,用于原始数据源。用于验证和未来更新目的。
  • average_weekday_embarkments: 工作日的平均旅客上车人数。如果站点在工作日没有客流,则为空。
  • average_saturday_embarkments: 周六的平均旅客上车人数。如果站点在周六没有客流,则为空。
  • average_sunday_embarkments: 周日的平均旅客上车人数。如果站点在周日没有客流,则为空。

我们如何收集数据

此存储库包含两个PHP脚本,可以从中加载所有来自NMBS GTFS公共数据和NMBS网站的数据。这些脚本可用于从头生成所有CSV文件,并更新现有文件。

可以对stations.csv进行手动更改和纠正。建议使用此存储库中的stations.csv文件作为起点,而不是使用脚本生成此文件,因为存储库版本包括对站点名称和翻译的手动修复。

stops.csvfacilities.csv的任何更改都将被脚本覆盖。 因此,任何仅用于更新/修改这些文件的拉取请求都不会被接受。

在运行gtfs_data_extractor工具时,会自动添加缺失的站点和stations.csv中的缺失字段。

如何进行纠正

可以通过调整stations.csv中的字段对名称、翻译和位置进行纠正。

  • 名称或翻译永远不会被脚本覆盖。
  • facilities.csvstops.csv中的名称是从stations.csv中的名称派生的,这意味着您只需更新stations.csv
  • GTFS数据提取脚本会警告错误的位置,但不会对其进行纠正。

如果您想对facilities.csvstops.csv进行纠正,不要修复文件,而是修复脚本,并让这些脚本运行以更新文件。

如果您只是想重用数据

通过HTTP的最新更新

如果您添加了正确的接受头,JSON-LD可在https://irail.be/stations/NMBS获取。例如,在命令行中使用curl,您将这样做

curl -H "accept: application/json" https://irail.be/stations/NMBS

如果您想更改此输出,请首先更改这里的CSV文件(我们喜欢pull requests)

在PHP项目中

使用composer(请注意,我们还需要在您的系统上安装nodejs才能使用链接数据接口)

composer require irail/stations

然后您可以在您的代码中使用车站,如下所示

use irail\stations\Stations;
use irail\stations\StationsLd;
// Using the strongly typed CSV parser:
// getStations() returns a irail\stations\Station array
$brusselsnorth = Stations::getStations("Brussels North")[0];
// getStationByID($id) returns a irail\stations\Station object with the station or null
$ghentstpieters = Stations::getStationByID("http://irail.be/stations/NMBS/008892007");

// Using the linked-data interface
// getStations() returns a json-ld document
$brusselsnorth = StationsLd::getStations("Brussels North")->{"@graph"}[0];
// getStationByID($id) returns a simple object with the station or null
$ghentstpieters = StationsLd::getStationByID("http://irail.be/stations/NMBS/008892007");

别忘了时不时地执行composer update以更新数据

构建RDF或JSON-LD

使用脚本,此数据可以转换为JSON-LD。为了运行脚本,请运行此命令

第一次在您的终端中运行此命令(您的系统上需要安装nodejs)

npm install

或者使用npm包全局安装(当车站文件更新时,您需要再次运行此命令)

npm install -g irail-stations

从那时起,您始终可以运行

# using this repo
./bin/build.js
# or with the global package:
irail-stations

有关额外命令,请参阅

./bin/build.js --help
# or
irail-stations --help

我们目前支持输出格式 TRiGN-QuadsJSON-LD(默认)

许可协议

CC0:此数据集属于公共领域。您可自由使用,不受任何限制。

如果您为此存储库做出贡献,则同意您的贡献将按照CC0开放数据许可协议进行许可。

我们非常感谢您回到这个存储库的链接,或提及iRail项目