# vbb-stations 🚏 A **collection of all stations of the [Berlin Brandenburg public transport service (VBB)](http://www.vbb.de/)**, computed from [open](https://daten.berlin.de/datensaetze/vbb-fahrplandaten-gtfs) [GTFS](https://developers.google.com/transit/gtfs/) [data](https://vbb-gtfs.jannisr.de/). [![npm version](https://img.shields.io/npm/v/vbb-stations.svg)](https://www.npmjs.com/package/vbb-stations) [![build status](https://img.shields.io/travis/derhuerst/vbb-stations.svg)](https://travis-ci.org/derhuerst/vbb-stations) ![ISC-licensed](https://img.shields.io/github/license/derhuerst/vbb-stations.svg) [![support me via GitHub Sponsors](https://img.shields.io/badge/support%20me-donate-fa7664.svg)](https://github.com/sponsors/derhuerst) [![chat with me on Twitter](https://img.shields.io/badge/chat%20with%20me-on%20Twitter-1da1f2.svg)](https://twitter.com/derhuerst) ## Installing ```shell npm install vbb-stations ``` ## Usage The [npm package](https://npmjs.com/vbb-stations) contains [*Friendly Public Transport Format* 1.2.1](https://github.com/public-transport/friendly-public-transport-format/blob/1.2.1/spec/readme.md) `station`s and `stop`s. `weight` is the sum of all arrivals & departures at a station, weighted by mode of transport. ```js [ { type: 'station', id: '900000009101', name: 'U Amrumer Str.', location: { type: 'location', latitude: 52.542202, longitude: 13.349534 }, weight: 3563 } ] ``` You can filter all stations by `id` or any property ([`lodash.get`](https://lodash.com/docs/#get) will be used). ```js const stations = require('vbb-stations') console.log(stations('900000009101')) // query a single station console.log(stations({ // filter by property weight: 3563, 'location.latitude': 52.542202 })) ``` `full.json` contains all stops of each station and unshortened names. ```js require('vbb-stations/full.json')['900000009101'] ``` One entry looks like this: ```js { type: 'station', id: '900000009101', name: 'U Amrumer Str. (Berlin)', location: { type: 'location', latitude: 52.542202, longitude: 13.349534 }, weight: 3284.25, stops: [ { type: 'stop', id: '070101000865', name: 'U Amrumer Str. (Berlin)', station: '900000009101', location: { type: 'location', latitude: 52.542202, longitude: 13.349534 } }, // … { type: 'stop', id: '070201092402', name: 'U Amrumer Str. (Berlin)', station: '900000009101', location: { type: 'location', latitude: 52.542202, longitude: 13.349534 } } ] } ``` `names.json` contains only shortened names. ```js require('vbb-stations/names.json')['900000009101'] // U Amrumer Str. ``` ## API `stations([pattern])` `pattern` can be one of the following: - a station ID, like `900000009101` - `'all'` - an object like `{weight: 42, name: 'Alt Pinnow'}`, with each property being mandatory ## Contributing If you **have a question**, **found a bug** or want to **propose a feature**, have a look at [the issues page](https://github.com/derhuerst/vbb-stations/issues).