Tag Archives: maps

Greater Toronto Area transit map

Many years ago, when Google first released Google Maps and revolutionized online mapping from the stagnant MapQuest era, I put together a few quick demos showing the Vancouver and Toronto transit maps. I’ve made a few updates over the years since then, but not much more.  The Vancouver one is still quite popular – more popular than TransLink’s own map, to be honest – but other web gurus made better Toronto maps, such as the excellent one by Ian Stevens.
I’ve noticed that Google has revamped the mapping APIs and is preparing to eliminate version 2.0. The whole treatment of online mapping is changing rapidly, as the mobile market takes off. I was thinking of just scrapping the Toronto map since it’s not well-used – but then I thought a little further. What if I could make a proper map of the Greater Toronto Area?  Ian’s map doesn’t cover that – in fact, since there isn’t even a good print product covering the full area. Perhaps I could make something useful for the “regional traveller” using GO, and also help mobile users who have trouble with Ian’s site.
I set to work, borrowing liberally from others. It’s a patchwork by nature, since each agency has its own colour and line conventions, but hopefully still useful. When Ian made his map, taking a bitmap image and turning it into tiles was a bleeding-edge endeavour and required painstaking effort – but the tools have improved a lot. Even still, a bitmap this size (35,000 pixels square) takes some horsepower. I didn’t have the energy to do everything Ian did (like removing the background); his map will still probably work better for most TTC riders. I also couldn’t figure out what map projection Oakville Transit used, and couldn’t get it to line up nicely with the other data.
I’ll probably do a few more revisions on this in the next few months – an adjustable opacity slider would be nice, a legend for each operator, and higher zoom levels. But I thought I’d release a beta version and see if anyone likes it, and see how expensive the bandwidth is.
Version 3 of my map is now up (and version 2 is still around for anyone who wants it). New in this version:

  • Local transit operator maps
  • More mobile friendly: full-screen view by default, location-aware (uses GPS to detect your current location, if available)
  • May seem slower, unless you have a new browser, like Google Chrome or Firefox 4
  • Graphics updates: labels cleaner, interchange stations cleaner, labels always visible instead of showing on hover (for touchscreen users)
  • Search tries to find a transit station first, otherwise tries other non-transit locations
  • No legend… yet
  • Added “Get directions to here” link to each station
  • API version 3
  • Fixes: added Lincolnville station, fixed broken links

Google Map updates

Several years ago, I put together some Google Maps for the Vancouver and Toronto transit systems. In light of the expected opening of the Canada Line in Vancouver on August 17th, I took a shot at updating the maps.
In the interim, though, Google has made some big advances in its handling of transit. They have a full database of rapid transit stops in Toronto (GO and TTC subway), and a layer that shows the TTC subway lines as well. York Region has provided Google with full local bus data, including schedules, and Google Maps does a fairly nice job of showing that information. That said, the visuals for the transit system aren’t the most attractive, the lines showing the GO rail network are hard to see, and other major transit facilities don’t jump out at the viewer (like the York VIVA BRT Light system or the Spadina streetcar). And in Vancouver, Google still has zero data.
So, my maps still serve a purpose. The changes in this edition are:

Greater Toronto Hamilton Area

  • Added York VIVA Blue and Purple lines
  • Changed Toronto colour scheme to colour code by operator (TTC, GO, VIVA) rather than by line. Changed line thickness to represent “all-day” vs. “peak only” service
  • Added links to TTC and GO station websites
  • The debate over “what to include on the map” is growing in my mind. Should St. Clair and Spadina be in, since they have partial segregation from traffic? Should the north half of VIVA Blue really be in, when it has 15 minute frequencies in the peak hour and operates in mixed traffic?

Metro Vancouver

  • Removed 98 B-Line and moved Canada Line to the “present day” map. Updated Canada Line alignment, added numbers of connecting buses.
  • Changed colours to match latest TransLink map, and changed line thickness to represent “all-day” vs. “peak only” service

Codebase

  • Moved to more modern Google APIs now that they exist (e.g., GMarkerManager)
  • Removed labels from map – the Toronto map in particular was far to cluttered, and the speed penalty for showing the labels was too high. They’re still there, but only if you move the mouse over a station icon.

Virtual City

The Globe and Mail had a story today about a very cool website for techie urbanists like me: Virtual City. They’ve digitized streetscapes for a ton of Toronto and Montreal cities, and you can use Google Maps to bring up photos of the street. Great idea, and reasonably well implemented. It clearly still needs a bit of work, but I’m definitely going to start using it now! Give it a shot.
I’m not sure what the business plan is. I suppose it’s useful for finding retail: “there was some funky clothing shop on Queen just west of Spadina… what was it called again?”

GO Transit


I’ve been reading Steve Munro‘s blog lately, as he discusses the nitty-gritty details of transit planning in Toronto. He brought up an interesting point regarding the extension of the Spadina subway line to York University: there’s already a GO transit line that goes direct from York University to downtown, and GO is a better way of feeding people into the downtown than the subway line. (The Yonge line is already at capacity now.)
So what about GO? I’ve only used it once or twice, and I really didn’t know much about it. I didn’t even have a picture of the network. So, I added the routes to my Toronto transit map. It was an interesting exercise – I’d never thought of Dundas West or Leslie subway stations as interchanges, but they are. You get a different view of the connectivity of the city this way – Agincourt is surprisingly close to downtown (a 27 minutes ride), the Danforth station near my parents’ house is only 11 minutes from downtown, and York University is only 22 minutes from downtown. Living in downtown without a car, there are routes to take you a huge distance from Toronto: Bradford, Milton, Hamilton, and Oshawa are all in reach. If you combined GO with a bicycle, you could get to Lake Simcoe or tour the rural areas around Toronto.
The problem, however, lies in the frequency and the hours of operation. Most of those trains only serve one-way peak hour travel, so you can’t use them for a daytrip from downtown to the hinterlands. And they run so infrequently that you would rarely choose them as an alternative to the subway. As Steve Munro suggests, we really need upgraded service on the GO lines. I’d love to see a service like Lausanne offered, with trains in every direction at reasonable frequencies.
I think it’s interesting that GO is so absent from the lives of Toronto residents. As a local, I was completely oblivious to that network – mostly, I guess, because it was nearly useless to me with its present service levels. It doesn’t even show up on TTC maps, which further marginalizes it. My only awareness of GO was where the tracks disrupted my bike ride, like the dip under the tracks on Woodbine. And yet, it could be a valuable part of carfree life in the city.

Toronto Transit Map

Toronto Transit Map
Last August, I put together a transit map for Vancouver using the new Google Maps API. I recently went through and updated all the code, switching it over to XML for the geographic data. Using that backend, I’ve now put together a Toronto transit map. So far, I’ve only got the TTC on there – GO bus and train routes would also be valuable, of course.
It was an interesting exercise to put together. I now understand why I never use the northern part of the Spadina line: north of St. Clair West, it runs directly under the Allen Expressway, which kills the life around those stations. When transit and freeways compete, freeways usually win. I also now see the folly of the Sheppard line: I think it’s too close to the 401 to compete. Additionally, since it’s north of the 401, it’ll never be able to capture much ridership from anyone living south of the 16-lane freeway, even though there’s probably more potential for dense development on the south side, closer to downtown. It’s interesting to compare the station density in Toronto and Vancouver: the Toronto stops are much, much closer together than the Vancouver stops. The new Sheppard line is similar to Vancouver station spacing, though.
And incidentally, I’ve also updated the Vancouver transit map to include the two routes that’ll be finished in 2010: the Canada Line (a.k.a. RAV / Richmond-Airport-Vancouver) that will replace the 98 B-Line and the Evergreen Line that will replace the 97 B-Line.
I’d like to allow others to add a transit layer to maps on their web pages. When I last used Housing Maps to view CraigsList listings on google maps, I found myself desperately wanting a transit overlay. I think it’d be possible to write a Mozilla addon button that just added a transit map to whatever webpage you’re viewing… I’ve just got to figure out how to do it.

AutoDesk Mapguide setup

AutoDesk has a bizarre approach to setting up their Java-based MapGuide client. In theory, it should work on most platforms – but they only document it on Internet Explorer on a few platforms, and on Netscape 4.x on Solaris. On top of that, most of their installation instructions require using an extra Java applet to do the installation, or downloading a big shell script for Solaris.
I got it to work under Mozilla Firefox on Linux, and I’m sure it would work like this on Windows or MacOS as well. Here’s how I did it; adapt my approach to your setup.

  1. Download the JAR archive (mgjava.jar) from here.
  2. Try to figure out where to install it. I did this by visiting the VanMap website, which fails to load since it can’t find the JAR file. I right-clicked on the broken Java applet, which brought up a menu that allowed me to open the Java console. On my Java installation (J2RE 1.4), I got an error message like this:

    load: class com/autodesk/mgjava/MGMapApplet.class not found.
    java.lang.ClassNotFoundException: com.autodesk.mgjava.MGMapApplet.class
    at sun.applet.AppletClassLoader.findClass(AppletClassLoader.java:162)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
    at sun.applet.AppletClassLoader.loadClass(AppletClassLoader.java:123)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
    at sun.applet.AppletClassLoader.loadCode(AppletClassLoader.java:566)
    at sun.applet.AppletPanel.createApplet(AppletPanel.java:617)
    at sun.plugin.AppletViewer.createApplet(AppletViewer.java:1863)
    at sun.applet.AppletPanel.runLoader(AppletPanel.java:546)
    at sun.applet.AppletPanel.run(AppletPanel.java:298)
    at java.lang.Thread.run(Thread.java:534)

    and instructions telling me to press “s” to view the system properties. I did that, and found the Java CLASSPATH setting java.class.path = /usr/lib/j2se/1.4/jre/classes. If you can find that classpath setting, you’re good to go.
  3. Go to the classpath directory. On my system, the “classes” subdirectory didn’t exist and I had to create it. Unzip the mgjava.jar file to there (yes, JAR files are just zip archives).
  4. Restart Firefox. Visit the VanMap website again and see if everything’s working.

This whole procedure is amazingly painful. Debian’s documentation claims that the classpath is something different – they say it’s in /usr/share/java/repository. There are some jar files in /usr/share/java, but there is no repository directory. Installing the jar file there didn’t help at all. It’s also annoying that you have to unzip the jar file – that wasn’t obvious to me at all. Sigh… at least I’ve got it working now.