All Projects → juliuste → Transit Map

juliuste / Transit Map

Licence: isc
Generate a schematic map (“metro map”) for a given (transit) network graph using Mixed Integer Programming.

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Transit Map

Papis
Powerful and highly extensible command-line based document and bibliography manager.
Stars: ✭ 636 (+548.98%)
Mutual labels:  cli, library
Gowebdav
A golang WebDAV client library and command line tool.
Stars: ✭ 97 (-1.02%)
Mutual labels:  cli, library
Python Progressbar
Progressbar 2 - A progress bar for Python 2 and Python 3 - "pip install progressbar2"
Stars: ✭ 682 (+595.92%)
Mutual labels:  cli, library
Instapy Cli
✨ Python library and CLI to upload photo and video on Instagram. W/o a phone!
Stars: ✭ 498 (+408.16%)
Mutual labels:  cli, library
Instascrape
🚀 A fast and lightweight utility and Python library for downloading posts, stories, and highlights from Instagram.
Stars: ✭ 76 (-22.45%)
Mutual labels:  cli, library
Nve
Run any command on specific Node.js versions
Stars: ✭ 531 (+441.84%)
Mutual labels:  cli, library
Tabulate
Table Maker for Modern C++
Stars: ✭ 862 (+779.59%)
Mutual labels:  cli, library
Swaggen
OpenAPI/Swagger 3.0 Parser and Swift code generator
Stars: ✭ 385 (+292.86%)
Mutual labels:  cli, library
Mythra
Music retrieval CLI and API using rust
Stars: ✭ 37 (-62.24%)
Mutual labels:  cli, library
Mod Pbxproj
A python module to manipulate XCode projects
Stars: ✭ 959 (+878.57%)
Mutual labels:  cli, library
Ferret
Declarative web scraping
Stars: ✭ 4,837 (+4835.71%)
Mutual labels:  cli, library
Spider
A small dart library to generate Assets dart code from assets folder.
Stars: ✭ 90 (-8.16%)
Mutual labels:  cli, library
Create React Library
⚡CLI for creating reusable react libraries.
Stars: ✭ 4,554 (+4546.94%)
Mutual labels:  cli, library
Wunderbar
Simple horizontal bar chart printer for your terminal
Stars: ✭ 572 (+483.67%)
Mutual labels:  cli, library
Fire Hpp
Fire for C++: Create fully functional CLIs using function signatures
Stars: ✭ 395 (+303.06%)
Mutual labels:  cli, library
Vlany
Linux LD_PRELOAD rootkit (x86 and x86_64 architectures)
Stars: ✭ 804 (+720.41%)
Mutual labels:  cli, library
Pygogo
A Python logging library with superpowers
Stars: ✭ 265 (+170.41%)
Mutual labels:  cli, library
To lang
Translate Ruby strings and arrays with Google Translate.
Stars: ✭ 303 (+209.18%)
Mutual labels:  cli, library
Bashmultitool
A library for bash shell program containing useful functions. Can be imported into scripts to create colourful and functional scripts and TUIs.
Stars: ✭ 27 (-72.45%)
Mutual labels:  cli, library
Kit
Tools for developing, documenting, and testing React component libraries
Stars: ✭ 1,201 (+1125.51%)
Mutual labels:  cli, library

transit-map

Generate a schematic map (“metro map”) for a given (transit) network graph using a Mixed Integer Programming approach. Part of the Generating Transit Maps project.

Work in progress, DO NOT USE THIS IN PRODUCTION! See todo.

npm version license chat on gitter

Installation & Requirements

Sadly, for now, you need a valid copy of the commercial Gurobi solver (free academic licenses) in order to run this project. In the near future however, this project will hopefully also support the open CBC solver. Stay tuned.

What you need:

Then, to install the package (for CLI usage), simply run:

npm install -g transit-map

Usage

CLI

You need a JSON graph representation of your transit network that looks like this example for the Berlin Metro (U-Bahn). You can then generate a transit map for the given graph by running:

cat graph.json | transit-map > output.svg

For further information on several CLI options/params, run:

transit-map --help

As a library

The module can be used as a JS library, documentation for this will follow.

Examples

🇩🇪 Berlin (Metro)

Input

Berlin metro network

Output

Berlin metro map

Using this input graph. Running time ≈40sec.

🇦🇹 Vienna (Metro)

Input

Vienna metro network

Output

Vienna metro map

Using this input graph. Running time ≈20sec.

🇸🇪 Stockholm (Metro)

Input

Stockholm metro network

Output

Stockholm metro map

Using this input graph. Running time ≈20sec.

🇵🇹 Lisbon (Metro)

Input

Lisbon metro network

Output

Lisbon metro map

Using this input graph. Running time ≈15sec.

🇫🇷 Nantes (Tram)

Input

Nantes metro network

Output

Nantes metro map

Using this input graph. Running time ≈15sec.

🇫🇷 Montpellier (Tram)

Input

Montpellier tram network

Output

Montpellier tram map

Using this input graph. Running time ≈20sec.

To do

Things I am still working on or someone should work on in the future, roughly in order of perceived importance:

  1. Properly document the current optimization algorithm.
  2. Add an example for full Berlin network (S-Bahn & U-Bahn), debug pre-processing with this (still fails with this network for some reason).
  3. Resolve todo comments in code.
  4. Write tests.
  5. Improve algorithm: “Smoother” edges, higher distance for parallel lines, implement station labels.
  6. Linearize objective function which would allow users to use non-commercial solvers like Cbc.
  7. Enable users to provide an old layout of the same network (or parts of it), the newly generated network should then have as few differences as possible to the older one.
  8. Further explore heuristical approaches to this problem.
  9. Write a paper. 😄

Contributing

If you found a bug or want to propose a feature, feel free to visit the issues page.

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].