All Projects → mapbox → nepomuk

mapbox / nepomuk

Licence: MIT license
A public transit router for GTFS feeds (currently only static) written in modern c++

Programming Languages

C++
36643 projects - #6 most used programming language
CMake
9771 projects
javascript
184084 projects - #8 most used programming language
CSS
56736 projects
Protocol Buffer
295 projects
shell
77523 projects

Projects that are alternatives of or similar to nepomuk

transit model
Managing transit data with Rust
Stars: ✭ 33 (+50%)
Mutual labels:  transit, gtfs
R5
Routing engine for multimodal (transit/bike/walk/car) networks with a particular focus on public transit.
Stars: ✭ 153 (+595.45%)
Mutual labels:  transit, gtfs
Home Assistant Config
🏠 Fully documented Home Assistant configuration for a smart-looking place. 😎 Be sure to ⭐️ my repo and copy ideas!
Stars: ✭ 258 (+1072.73%)
Mutual labels:  transit, gtfs
Transitland Datastore
Transitland's centralized web service API for both querying and editing aggregated transit data from around the world
Stars: ✭ 101 (+359.09%)
Mutual labels:  transit, gtfs
Loader
deploy
Stars: ✭ 6 (-72.73%)
Mutual labels:  transit, gtfs
transitland-atlas
an open directory of mobility feeds and operators — powers both Transitland v1 and v2
Stars: ✭ 55 (+150%)
Mutual labels:  transit, gtfs
Tidytransit
R package for working with the General Transit Feed Specification (GTFS)
Stars: ✭ 84 (+281.82%)
Mutual labels:  transit, gtfs
cac-tripplanner
Clean Air Council Circuit Trip Planner and Travelshed
Stars: ✭ 12 (-45.45%)
Mutual labels:  transit, routing
Rrrr
RRRR rapid real-time routing
Stars: ✭ 134 (+509.09%)
Mutual labels:  transit, gtfs
Awesome Transit
Community list of transit APIs, apps, datasets, research, and software 🚌🌟🚋🌟🚂
Stars: ✭ 713 (+3140.91%)
Mutual labels:  transit, gtfs
Peartree
peartree: A library for converting transit data into a directed graph for sketch network analysis.
Stars: ✭ 116 (+427.27%)
Mutual labels:  transit, gtfs
Onebusaway Application Modules
The core OneBusAway application suite.
Stars: ✭ 174 (+690.91%)
Mutual labels:  transit, gtfs
Peering Manager
Peering sessions management tool
Stars: ✭ 189 (+759.09%)
Mutual labels:  transit, routing
gtfs-utils
Utilities to process GTFS data sets.
Stars: ✭ 19 (-13.64%)
Mutual labels:  transit, gtfs
transitime
TheTransitClock real-time transit information system
Stars: ✭ 60 (+172.73%)
Mutual labels:  transit, gtfs
Mapnificent
Mapnificent shows you areas you can reach with public transport in a given time.
Stars: ✭ 302 (+1272.73%)
Mutual labels:  transit, gtfs
retro-gtfs
Collect real-time transit data and process it into a retroactive GTFS 'schedule' which can be used for routing/analysis
Stars: ✭ 45 (+104.55%)
Mutual labels:  transit, gtfs
open-bus
🚌 Analysing Israel's public transport data
Stars: ✭ 65 (+195.45%)
Mutual labels:  transit, gtfs
Node Gtfs
Import GTFS transit data into SQLite and query routes, stops, times, fares and more.
Stars: ✭ 323 (+1368.18%)
Mutual labels:  transit, gtfs
Mobility Explorer
Understand transportation networks around the world using Transitland open data and Valhalla routing engine APIs
Stars: ✭ 31 (+40.91%)
Mutual labels:  transit, gtfs

Nepomuk

This project offers a library/bindings for running a transit service on GTFS feeds, implemented in modern C++.

Build Status codecov

This project requires valid GTFS feeds to run. Use any of the many available GTFS validators to check if your GTFS dataset qualifies.

Building

Dependencies of this project are pulled in via Mason. Building it is as simple as checking out the project and running cmake/make.

The main project can be build via cmake. For example:

mkdir build
mkdir build/release

cd build/release
cmake -DCMAKE_BUILD_TYPE=Release ../..
make

IPC Infrastructure / Running a service

There are multiple ways you can run Nepomuk. Nepomuk comes with its own IPC service (ipc-provider) found within the apps directory. This ipc-provider can listen to any port (tcp/ipc/...) supported by zeroMQ (http://zeromq.org/). It expects messages in the form of PBF (https://github.com/mapbox/nepomuk/tree/master/src/ipc/proto). It will process the message and return an appropriate PBF response. To run a server, you can simply start up an ipc-provider in the background, specifying a port to listen on and a dataset to use. After, you can perform your own Req/Rep pattern against this IPC service.

For convenience, we also offer traditional node bindings that hide the IPC communication. You still have to start up the backhround process, but afterwards you can use a normal parameterised scheme to access Nepomuk. Simply perform tile/route requests and the bindings take care of the IPC part to the ipc-provider.

Tests

Tests are using ctest. Run ctest (or ctest --verbose) from within your build directory.

cd build/release
ctest

Nodebindings

Nodebindings can be build via node-cmake. To build the bindings, simply specify -DNODEBINDINGS=On when configuring the project.

mkdir build
mkdir build/release

cd build/release
cmake -DCMAKE_BUILD_TYPE=Release -DNODEBINDINGS=On ../..
make

To do so, you need to have node installed in version 4 or later.

nvm install 4
nvm use 4

Tests

To test the node bindings, you can run npm test from within node/nepomuk/. Make sure to run npm install beforehand.

cd node/nepomuk/
npm install
npm test

Frontend/Example Server

The frontend and the example server are provided as a pure example. We highly discourage the usage of both in any production example.

GTFS sources / validation

There are many GTFS feeds available on the internet. While we will always do our best to verify input to prevent security issues, we strongly advie anyone to make use of validation tools (E.g. https://developers.google.com/transit/gtfs/guides/tools), or any of the many available open source checkers. The validation mechanisms implemented here are no replacement for additional checks of the surrounding API. The example server and it's checks are in no way a recommendation on how to ensure a safe API.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].