{"id":13545979,"url":"https://github.com/cmichi/gtfs-visualizations","last_synced_at":"2025-06-30T16:32:38.374Z","repository":{"id":8605289,"uuid":"10243899","full_name":"cmichi/gtfs-visualizations","owner":"cmichi","description":"Visualizing GTFS data.","archived":false,"fork":false,"pushed_at":"2020-12-31T12:37:36.000Z","size":15625,"stargazers_count":133,"open_issues_count":1,"forks_count":16,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-03-22T15:02:05.450Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://micha.elmueller.net/2014/05/gtfs-visualizations/","language":"JavaScript","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cmichi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-05-23T13:06:02.000Z","updated_at":"2025-03-04T07:23:17.000Z","dependencies_parsed_at":"2022-09-19T00:31:32.319Z","dependency_job_id":null,"html_url":"https://github.com/cmichi/gtfs-visualizations","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cmichi%2Fgtfs-visualizations","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cmichi%2Fgtfs-visualizations/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cmichi%2Fgtfs-visualizations/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cmichi%2Fgtfs-visualizations/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cmichi","download_url":"https://codeload.github.com/cmichi/gtfs-visualizations/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247612565,"owners_count":20966775,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T12:00:29.264Z","updated_at":"2025-04-07T07:32:52.375Z","avatar_url":"https://github.com/cmichi.png","language":"JavaScript","readme":"# GTFS Visualizations\n\nGTFS is an abbreviation for General Transit Feed Specification, a \nstandard which “defines a common format for public transportation \nschedules and associated geographic information” ([source](https://developers.google.com/transit/gtfs/)).\n\nThe idea of this project is to generate beautiful and informative\nvisualizations from publicly available GTFS datasets.\nThe program draws the routes which transportation entities take and \nemphasizes the ones which are frequented more often by painting them \nthicker and in a stronger opacity.\n\nThe thickness and color intensity of the drawn lines is chosen using \n`log(trips_happening_on_this_shape_id)`. All trips in the GTFS feed \nare counted (not just days or a week).\n\n__Project status:__ The project works with Processing 2.2.1, but is no\nlonger actively maintained. You will find information on how to generate\na visualization for a custom GTFS feed below the gallery: \n[How to generate a visualization](#how-to-generate-a-visualization).\n\n__Known problems:__ The GTFS parser currently loads the GTFS in memory.\nThis means large GTFS feeds will cause problems, if your machine does\nnot provide sufficient RAM.  \nThere are issues when running the sketch in Processing 3.x.\n\n\t\n## Gallery\n\nThe colors currenltly used are:\n\n\ttram                    #0000ff\tblue\n\tsubway, metro           #00ff00\tgreen\n\trail, inter-city        #ffff00 yellow\n\tbus                     #ff0000 red\n\tferry                   #00ffff cyan\n\tcable car               #fee0d2 ocker\n\tgondola                 #ff00ff purple\n\tfunicular               #ffffff white\n\n### Ulm\n\n[![Ulm GTFS Heatmap](https://github.com/cmichi/gtfs-visualizations/raw/master/gallery/small/ulm.png)](https://github.com/cmichi/gtfs-visualizations/raw/master/gallery/large/ulm.png)\n\nRendering based on an inofficial GTFS feed. There is an official one\navailable, though it does (not yet?) include shapes.\n\nDownload: \n[Large PNG (0.4 MB)](https://raw.githubusercontent.com/cmichi/gtfs-visualizations/master/gallery/large/ulm.png),\n[PDF (0.12 MB)](https://raw.githubusercontent.com/cmichi/gtfs-visualizations/master/gallery/pdf/ulm.pdf)\n\n### Madrid\n\n[![Madrid GTFS Heatmap](https://github.com/cmichi/gtfs-visualizations/raw/master/gallery/small/madrid.png)](https://github.com/cmichi/gtfs-visualizations/raw/master/gallery/large/madrid.png)\n\nRendering based on the [official feed](http://www.gtfs-data-exchange.com/agency/madrid/) \nby the Empresa Municipal de Transportes. (March 12, 2014)\n\nDownload: \n[Large PNG (1.4 MB)](https://raw.githubusercontent.com/cmichi/gtfs-visualizations/master/gallery/large/madrid.png),\n[PDF (0.4 MB)](https://raw.githubusercontent.com/cmichi/gtfs-visualizations/master/gallery/pdf/madrid.pdf)\n\n### San Diego\n\n[![San Diego GTFS Heatmap](https://github.com/cmichi/gtfs-visualizations/raw/master/gallery/small/san-diego.png)](https://github.com/cmichi/gtfs-visualizations/raw/master/gallery/large/san-diego.png)\n\nRendering based on the [official feed](http://www.sdmts.com/Planning/Developers.asp) \nby the Metropolitan Transit System (MTS). (March 12, 2014)\n\nDownload: \n[Large PNG (0.5 MB)](https://raw.githubusercontent.com/cmichi/gtfs-visualizations/master/gallery/large/san-diego.png),\n[PDF (0.6 MB)](https://raw.githubusercontent.com/cmichi/gtfs-visualizations/master/gallery/pdf/san-diego.pdf)\n\n### Los-Angeles\n\n[![Los Angeles GTFS Heatmap](https://github.com/cmichi/gtfs-visualizations/raw/master/gallery/small/los-angeles.png)](https://github.com/cmichi/gtfs-visualizations/raw/master/gallery/large/los-angeles.png)\n\nRendering based on the [official feed](http://www.gtfs-data-exchange.com/agency/la-metro/) \nby the Los Angeles County Metropolitan Transportation Authority. (March 14, 2014)\n\nDownload: \n[Large PNG (0.9 MB)](https://raw.githubusercontent.com/cmichi/gtfs-visualizations/master/gallery/large/los-angeles.png),\n\n### San Francisco\n\n[![San Francisco GTFS Heatmap](https://github.com/cmichi/gtfs-visualizations/raw/master/gallery/small/san-francisco.png)](https://github.com/cmichi/gtfs-visualizations/raw/master/gallery/large/san-francisco.png)\n\nRendering based on the [official feed](http://www.gtfs-data-exchange.com/agency/san-francisco-municipal-transportation-agency/) \nby the San Francisco Municipal Transportation Agency. (March 12, 2014)\n\nDownload: \n[Large PNG (1 MB)](https://raw.githubusercontent.com/cmichi/gtfs-visualizations/master/gallery/large/san-francisco.png),\n[PDF (1.1 MB)](https://raw.githubusercontent.com/cmichi/gtfs-visualizations/master/gallery/pdf/san-francisco.pdf)\n\n### Washington DC\n\n[![Washington GTFS Heatmap](https://github.com/cmichi/gtfs-visualizations/raw/master/gallery/small/washington-dc.png)](https://github.com/cmichi/gtfs-visualizations/raw/master/gallery/large/washington-dc.png)\n\nRendering based on the [official feed](http://www.gtfs-data-exchange.com/agency/dc-circulator/) \nby DC Circulator. (March 13, 2014)\n\nDownload: \n[Large PNG (1.2 MB)](https://raw.githubusercontent.com/cmichi/gtfs-visualizations/master/gallery/large/washington-dc.png)\n\n### Miami\n\n[![Miami GTFS Heatmap](https://github.com/cmichi/gtfs-visualizations/raw/master/gallery/small/miami.png)](https://github.com/cmichi/gtfs-visualizations/raw/master/gallery/large/miami.png)\n\nRendering based on the [official feed](http://www.gtfs-data-exchange.com/agency/miami-dade-transit/) \nby the Miami Dade Transit. (March 13, 2014)\n\nDownload: \n[Large PNG (0.3 MB)](https://raw.githubusercontent.com/cmichi/gtfs-visualizations/master/gallery/large/miami.png),\n[PDF (0.12 MB)](https://raw.githubusercontent.com/cmichi/gtfs-visualizations/master/gallery/pdf/miami.pdf)\n\n\n## Posters\n\nI think the visualizations look quite beautiful and have started to \ncompile a series of A0 posters. Click on the preview image to open\nthe PDF. The templates can be found in `./posters/`.\n\n[![One Feed, Fullscreen](https://github.com/cmichi/gtfs-visualizations/raw/master/posters/madrid-poster-thumb.jpg)](https://github.com/cmichi/gtfs-visualizations/raw/master/posters/madrid-poster.jpg) [![Multiple Feeds](https://github.com/cmichi/gtfs-visualizations/raw/master/posters/4up-poster-thumb.jpg)](https://github.com/cmichi/gtfs-visualizations/raw/master/posters/4up-poster.jpg) \n\nClick on the images to get a larger preview.\n\nThe posters can be downloaded here:\n\n * [Madrid (PDF, 11 MB)](http://media.micha.elmueller.net/projects/gtfs/madrid-poster.pdf)\n * [Madrid, Ulm, Washington, San Diego (PDF, 81 MB)](http://media.micha.elmueller.net/projects/gtfs/4up-poster.pdf)\n\n\n## How to generate a visualization\n\nDownload and install [node.js and npm](http://nodejs.org/).\n\n\t$ git clone https://github.com/cmichi/gtfs-visualizations.git\n\t$ cd gtfs-visualizations/\n\t$ npm install\n\t$ make render gtfs=ulm\n\nBased on the GTFS files in `./gtfs/ulm/` this will generate:\n\n\t./output/ulm/\n\n\t./output/ulm/data.lines\n\n\t./output/ulm/maxmin.lines\t\n\t# containing the maximum and minimum count of trips on a shape\n\t# in this GTFS feed\n\nDownload [Processing 2.0](https://processing.org/download/). Then open \nthe sketch `./processing/processing.pde` within Processing.\nExecute it and a file `./output/ulm_large.pdf` will be generated.\n\n\n### Adaption to your city\n\nChange those lines within `./processing/processing.pde` :\n\n\tcities =  new String[1];\n\tcities[0] = \"ulm\";\n\nto the city you want to display, e.g. `cities[1] = \"san-diego\";`. \nMake sure `./gtfs/san-diego/` exists. Also make sure there is a shape file\n(`./gtfs/san-diego/shapes.txt`) available! \n\nExecute `$ make render gtfs=san-diego` and after this is finished the \nProcessing sketch `./processing/processing.pde`. You will then find your\nvisualization generated in `./output/san-diego.png`.\n\nFor certain cities (e.g. Los Angeles) multiple separate GTFS feeds \nare available (e.g. bus, metro, etc.). To render multiple GTFS feeds into\nthe visualization you can adapt the cities array:\n\n\tcities =  new String[2];\n\tcities[0] = \"los-angeles\";\n\tcities[1] = \"los-angeles-metro\";\n\n\n### Generating other image resolutions\n\nWithin `./render.js` change\n\n\tvar render_area = {width: 600, height: 600};\n\nWithin `./processing/processing.pde` change\n\n\tsize(700, 700);\n\n\n### Colors\n\nSee the sketch `./processing/processing.pde` and search this block:\n\n\tdrawRoute(\"7\", #ffffff); // funicular\n\tdrawRoute(\"6\", #ffffff); // gondola\n\tdrawRoute(\"5\", #ffffff); // cable car\n\tdrawRoute(\"4\", #ffffff); // ferry\n\tdrawRoute(\"3\", #ff0000); // bus\n\tdrawRoute(\"2\", #ffffff); // rail, inter-city\n\tdrawRoute(\"1\", #ffffff); // subway, metro\n\tdrawRoute(\"0\", #0000ff); // tram\n\nThese are the default colors used. You are free to adapt them.\n\n\n## Nice to have ToDos\n\n * The green and red color combination should be done better (persons with \n   red/green disabilities might have problems). Use other color scheme.\n\n * GTFS provides a field `route_color`. Supporting this would be nice.\n   Colors right now are hardcoded.\n\n\n## Contributors\n\n * Roman Prokofyev improved the parser. Beforehand an entire file was\n   loaded and then parsed, he switched to line-by-line parsing.\n\n## License\n\n### Gallery\n\n\tThe gallery photos are licensed under the Creative Commons Attribution\n\t4.0 International license: http://creativecommons.org/licenses/by/4.0/.\n\n### Code\n\n\tCopyright (c) 2013-2014\n\n\t\tMichael Mueller \u003chttp://micha.elmueller.net/\u003e\n\n\tPermission is hereby granted, free of charge, to any person obtaining\n\ta copy of this software and associated documentation files (the\n\t\"Software\"), to deal in the Software without restriction, including\n\twithout limitation the rights to use, copy, modify, merge, publish,\n\tdistribute, sublicense, and/or sell copies of the Software, and to\n\tpermit persons to whom the Software is furnished to do so, subject to\n\tthe following conditions:\n\n\tThe above copyright notice and this permission notice shall be\n\tincluded in all copies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n\tEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n\tMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n\tNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n\tLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n\tOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n\tWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","funding_links":[],"categories":["Data Viewers","Using Data"],"sub_categories":["Visualizations"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcmichi%2Fgtfs-visualizations","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcmichi%2Fgtfs-visualizations","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcmichi%2Fgtfs-visualizations/lists"}