one-bus-or-maybe-jeep-away.html 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. <!DOCTYPE html>
  2. <html prefix="og: http://ogp.me/ns# article: http://ogp.me/ns/article# " vocab="http://ogp.me/ns" lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width">
  6. <title>One Bus (or maybe Jeep) Away | Pleasant Programmer</title>
  7. <link href="../assets/css/rst.css" rel="stylesheet" type="text/css">
  8. <link href="../assets/css/code.css" rel="stylesheet" type="text/css">
  9. <link href="../assets/css/theme.css" rel="stylesheet" type="text/css">
  10. <link href="../assets/css/custom.css" rel="stylesheet" type="text/css">
  11. <link rel="alternate" type="application/rss+xml" title="RSS" href="../rss.xml">
  12. <link rel="canonical" href="http://pleasantprogrammer.com/posts/one-bus-or-maybe-jeep-away.html">
  13. <script type="text/javascript" src="//use.typekit.net/iwm5axp.js"></script><script type="text/javascript">try{Typekit.load();}catch(e){}</script><!--[if lt IE 9]><script src="../assets/js/html5.js"></script><![endif]--><meta name="author" content="Thomas Dy">
  14. <link rel="prev" href="jeepney-and-bus-routes.html" title="Jeepney and Bus Routes" type="text/html">
  15. <link rel="next" href="open-trip-planner.html" title="Open Trip Planner" type="text/html">
  16. <meta property="og:site_name" content="Pleasant Programmer">
  17. <meta property="og:title" content="One Bus (or maybe Jeep) Away">
  18. <meta property="og:url" content="http://pleasantprogrammer.com/posts/one-bus-or-maybe-jeep-away.html">
  19. <meta property="og:description" content="Link: http://onebusaway.org/
  20. TL;DR no routing; useless in Philippines
  21. OneBusAway is a transit information app. It provides data on what bus stops are near you, which buses pass by. You can also get sc">
  22. <meta property="og:type" content="article">
  23. <meta property="article:published_time" content="2013-07-09T01:53:59+08:00">
  24. <meta property="article:tag" content="philippine-transit-app">
  25. <meta property="article:tag" content="programming">
  26. </head>
  27. <body>
  28. <a href="#content" class="sr-only sr-only-focusable">Skip to main content</a>
  29. <header id="header" role="banner"><div class="thomas">
  30. <img src="../assets/img/thomas.gif" alt="DJ THOMAS IN DA HAUS"><img src="../assets/img/thomas.png" alt="Pleasant Programmer">
  31. </div>
  32. <h1 id="brand"><a href="http://pleasantprogrammer.com/" title="Pleasant Programmer" rel="home">
  33. <span id="blog-title">Pleasant Programmer</span>
  34. </a></h1>
  35. <nav id="menu" role="navigation"><ul>
  36. <li class="twitter"><a href="http://twitter.com/pleasantprog">@pleasantprog</a></li>
  37. <li><a href="../archive.html">Archives</a></li>
  38. <li><a href="../categories/index.html">Tags</a></li>
  39. <li><a href="../rss.xml">RSS</a></li>
  40. </ul></nav></header><div id="container">
  41. <main id="content" role="main"><article class="post-text h-entry hentry postpage" itemscope="itemscope" itemtype="http://schema.org/Article"><header><h1 class="p-name entry-title" itemprop="headline name"><a href="#" class="u-url">One Bus (or maybe Jeep) Away</a></h1>
  42. <small>
  43. <span class="dateline">Posted: <a href="#" rel="bookmark"><time class="published dt-published" datetime="2013-07-09T01:53:59+08:00" itemprop="datePublished" title="2013-07-09 01:53">2013-07-09 01:53</time></a></span>
  44. |
  45. More posts about
  46. <a class="tag p-category" href="../categories/philippine-transit-app.html" rel="tag">philippine-transit-app</a>
  47. <a class="tag p-category" href="../categories/programming.html" rel="tag">programming</a>
  48. </small>
  49. </header><div class="e-content entry-content" itemprop="articleBody text">
  50. <div>
  51. <p>Link: <a href="http://onebusaway.org/">http://onebusaway.org/</a></p>
  52. <p><strong>TL;DR</strong> no routing; useless in Philippines</p>
  53. <p>OneBusAway is a transit information app. It provides data on what bus stops are near you, which buses pass by. You can also get schedules and the route of a particular bus given the number. It can also provide realtime updates like how many minutes until the next bus arrives. It does not, however, provide routing. There is no support for providing directions to get from point A to point B.</p>
  54. <p>It's comparable to what you get in some bus stops abroad. You'd get a vicinity map and a list of buses passing through the stop. You might also get the times when the next buses will pass. It's useful for locals who already know how to get around, and want to avoid waiting for the bus. But it's not particularly good for people who want to know how to get around the city.</p>
  55. <p>OneBusAway is quite comprehensive in its platform support though. There is a webapp, apps for iOS, Android and Windows Phone, as well as SMS and Voice support. This would all be nice but we don't have the necessary infrastructure yet in the Philippines. We don't have bus or jeepney stops. We also wouldn't have realtime data to make the app particularly useful.</p>
  56. <p>You can try it out for yourself by following their <a href="https://github.com/OneBusAway/onebusaway-application-modules/wiki/OneBusAway-Quickstart-Guide">Quickstart Guide</a>. One caveat is you will have to add <code>-P tripEntriesFactory.throwExceptionOnInvalidStopToShapeMappingException=false</code> when building the bundle. This has to do with the OneBusAway having difficulty matching the <a href="https://github.com/OneBusAway/onebusaway-application-modules/wiki/Stop-to-Shape-Matching">stops to the shape data</a>.</p>
  57. <p>Here's some screenshots of the app with the Philippine data. Notice how you only see the stops but there isn't a line for the route. This is a problem with our GTFS data. Also, at some points it's hard to tell where the jeep is going to pass since there isn't any indication of order either. This is more of a OneBusAway problem. It usually expects there to be shape data available.</p>
  58. <p><a href="../galleries/transit/onebusaway1.png"><img alt="OneBusAway" src="../galleries/transit/onebusaway1.png" title="All the stops along Katipunan Avenue are named Katipunan Avenue."></a></p>
  59. <p>It doesn't really handle too many routes passing through a stop. The list just overflows past the bubble. You can still actually read it by panning the map. It's just a bit weird though.</p>
  60. <p>If you also noticed, there are usually 2 of each route. This is how the jeepney data was modeled as jeep routes might be different going one way and going back. This isn't the case for all jeeps though, so it might also be an implementation issue with the GTFS editor.</p>
  61. <p><a href="../galleries/transit/onebusaway2.png"><img alt="OneBusAway" src="../galleries/transit/onebusaway2.png"></a></p>
  62. <p><a href="../galleries/transit/onebusaway3.png"><img alt="OneBusAway" src="../galleries/transit/onebusaway3.png"></a></p>
  63. </div>
  64. </div>
  65. <aside class="postpromonav"><nav><ul class="pager clearfix">
  66. <li class="previous">
  67. <a href="jeepney-and-bus-routes.html" rel="prev" title="Jeepney and Bus Routes">← Previous post</a>
  68. </li>
  69. <li class="next">
  70. <a href="open-trip-planner.html" rel="next" title="Open Trip Planner">Next post →</a>
  71. </li>
  72. </ul></nav></aside><section class="comments"><div id="disqus_thread"></div>
  73. <script>
  74. var disqus_shortname ="pleasantprog",
  75. disqus_url="http://pleasantprogrammer.com/posts/one-bus-or-maybe-jeep-away.html",
  76. disqus_title="One Bus (or maybe Jeep) Away",
  77. disqus_identifier="cache/posts/one-bus-or-maybe-jeep-away.html",
  78. disqus_config = function () {
  79. this.language = "en";
  80. };
  81. (function() {
  82. var dsq = document.createElement('script'); dsq.async = true;
  83. dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
  84. (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
  85. })();
  86. </script><noscript>Please enable JavaScript to view the <a href="//disqus.com/?ref_noscript" rel="nofollow">comments powered by Disqus.</a>
  87. </noscript>
  88. <a href="//disqus.com" class="dsq-brlink" rel="nofollow">Comments powered by <span class="logo-disqus">Disqus</span></a>
  89. </section></article><script>var disqus_shortname="pleasantprog";(function(){var a=document.createElement("script");a.async=true;a.src="//"+disqus_shortname+".disqus.com/count.js";(document.getElementsByTagName("head")[0]||document.getElementsByTagName("body")[0]).appendChild(a)}());</script></main><footer id="footer" role="contentinfo"><p><a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/deed.en_US"><img alt="CC-BY-SA" style="border-width:0" src="http://i.creativecommons.org/l/by-sa/3.0/80x15.png"></a> © 2015 Thomas Dy - Powered by <a href="http://getnikola.com">Nikola</a></p>
  90. </footer>
  91. </div>
  92. <script src="../assets/js/konami.js"></script><script src="http://code.jquery.com/jquery-2.0.3.min.js"></script><script>
  93. var easter_egg = new Konami();
  94. easter_egg.code = function() {
  95. $(".thomas").toggleClass("whoa");
  96. $("body").scrollTop(0);
  97. }
  98. easter_egg.load();
  99. // love you, thomas!
  100. // yours, @_phi + @meggykawsek
  101. </script>
  102. </body>
  103. </html>