translink 2.0.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG.md +18 -0
- data/README.md +26 -15
- data/doc/schema.graffle +67 -69
- data/doc/schema.png +0 -0
- data/lib/translink/cli.rb +35 -9
- data/lib/translink/crawler.rb +41 -8
- data/lib/translink/db.rb +46 -2
- data/lib/translink/model/route.rb +14 -6
- data/lib/translink/model/stop.rb +2 -3
- data/lib/translink/model/stop_time.rb +3 -2
- data/lib/translink/model/trip.rb +11 -9
- data/lib/translink/page.rb +16 -6
- data/lib/translink/page/route.rb +41 -2
- data/lib/translink/page/timetable.rb +13 -6
- data/lib/translink/page/trip.rb +13 -19
- data/lib/translink/version.rb +1 -1
- data/test/fixtures/sample/route.html +1 -1
- data/test/fixtures/verbatim/route.html +294 -270
- data/test/fixtures/verbatim/route/date_from_anchor.html +2727 -0
- data/test/fixtures/verbatim/timetable/duplicate_routes.html +2293 -0
- data/test/fixtures/verbatim/trip/duplicate_stop_times.html +589 -0
- data/test/unit/cli_test.rb +26 -7
- data/test/unit/model/route_test.rb +3 -2
- data/test/unit/model/trip_test.rb +3 -3
- data/test/unit/page/route_test.rb +36 -5
- data/test/unit/page/timetable_test.rb +29 -0
- data/test/unit/page/trip_test.rb +12 -5
- data/translink.gemspec +3 -3
- metadata +62 -21
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -1,5 +1,23 @@ | |
| 1 1 | 
             
            # Changelog
         | 
| 2 2 |  | 
| 3 | 
            +
            ## 2012-12-14 / v3.0.0
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            * Update Mechanize to 2.5.1.
         | 
| 6 | 
            +
            * Add version command. Prints the current version.
         | 
| 7 | 
            +
            * Drop auto incrementing primary keys.
         | 
| 8 | 
            +
            * Add uniqueness constraints to primary keys.
         | 
| 9 | 
            +
            * Rename routes.id -> routes.route_id. Type changed to TEXT. Value is short name provided by Translink.
         | 
| 10 | 
            +
            * Rename trips.id -> trips.trip_id. Value is trip id provided by Translink.
         | 
| 11 | 
            +
            * Rename stops.id -> stops.stop_id. Type changed to TEXT. Value is stop id provided by Translink.
         | 
| 12 | 
            +
            * Primary key on stop_times is now composite of stop_times.arrival_time, stop_times.trip_id and stop_times.stop_id.
         | 
| 13 | 
            +
            * Change Page::Route#trip_pages to only return trips for the given date.
         | 
| 14 | 
            +
            * Schema is created with SQL as opposed to DM's automatic migrations.
         | 
| 15 | 
            +
            * Change short name for some routes. CGLD -> CityGlider, LOOP -> City Loop and SHLP -> Spring Hill City Loop.
         | 
| 16 | 
            +
            * Some routes and stop times have duplicates. Only persist unique sets.
         | 
| 17 | 
            +
            * Add exception handling. Retry HTTP requests with bad responses. Skip and output page if it cannot be resolved.
         | 
| 18 | 
            +
            * Enforce integrity with foreign key constraints.
         | 
| 19 | 
            +
            * Resume scraping from a specific route and limit number of subsequent routes.
         | 
| 20 | 
            +
             | 
| 3 21 | 
             
            ## 2012-07-21 / v2.0.0
         | 
| 4 22 |  | 
| 5 23 | 
             
            * Add headsign column to trips table.
         | 
    
        data/README.md
    CHANGED
    
    | @@ -2,17 +2,16 @@ | |
| 2 2 |  | 
| 3 3 | 
             
            [](http://travis-ci.org/tatey/translink)
         | 
| 4 4 |  | 
| 5 | 
            -
            [ | 
| 5 | 
            +
            [TransLink](http://translink.com.au/) (Organisation) coordinates public transport operations in
         | 
| 6 6 | 
             
            South-East Queensland. Their website has an abundance of data with no easy way for a developer
         | 
| 7 7 | 
             
            to query it.
         | 
| 8 8 |  | 
| 9 9 | 
             
            Translink (Program) scrapes bus routes, trips, stops and times into a relational database.
         | 
| 10 10 | 
             
            The schema is a subset of the [General Transit Feed Specification](https://developers.google.com/transit/gtfs/reference).
         | 
| 11 | 
            -
            Data is sourced from the [ | 
| 11 | 
            +
            Data is sourced from the [TransLink website](http://translink.com.au/).You should be
         | 
| 12 12 | 
             
            aware their data is protected by [copyright](http://translink.com.au/site-information/legal/copyright).
         | 
| 13 13 |  | 
| 14 | 
            -
             | 
| 15 | 
            -
            have been working on an app for iOS called [Next Stop](http://nextstop.me).
         | 
| 14 | 
            +
            Translink (Program) was created to provide data for my iOS app, [Next Stop](http://nextstop.me).
         | 
| 16 15 |  | 
| 17 16 | 
             
            ## Installation
         | 
| 18 17 |  | 
| @@ -32,24 +31,31 @@ them into a SQLite database named "2011-11-24.sqlite3" in the current working di | |
| 32 31 |  | 
| 33 32 | 
             
            Change the path to the SQLite database.
         | 
| 34 33 |  | 
| 35 | 
            -
                $ translink scrape 2011-11-24  | 
| 34 | 
            +
                $ translink scrape 2011-11-24 ~/Downloads/translink.sqlite3
         | 
| 35 | 
            +
             | 
| 36 | 
            +
            Get a specific route.
         | 
| 37 | 
            +
             | 
| 38 | 
            +
                $ translink scrape 2011-11-24 ~/Desktop/translink.sqlite3 http://jp.translink.com.au/travel-information/network-information/buses/435/2011-11-24 0"
         | 
| 36 39 |  | 
| 37 40 | 
             
            ## Queries
         | 
| 38 41 |  | 
| 39 42 | 
             
            Stops the 130 visits on the outbound trip.
         | 
| 40 43 |  | 
| 41 | 
            -
                SELECT  | 
| 42 | 
            -
                 | 
| 43 | 
            -
                INNER JOIN  | 
| 44 | 
            -
                INNER JOIN  | 
| 45 | 
            -
                 | 
| 44 | 
            +
                SELECT stops.*, stop_times.*
         | 
| 45 | 
            +
                FROM routes
         | 
| 46 | 
            +
                INNER JOIN trips ON trips.route_id = routes.route_id
         | 
| 47 | 
            +
                INNER JOIN stop_times ON stop_times.trip_id = trips.trip_id
         | 
| 48 | 
            +
                INNER JOIN stops ON stops.stop_id = stop_times.stop_id
         | 
| 49 | 
            +
                WHERE routes.short_name = '130' AND trips.headsign = 'outbound'
         | 
| 50 | 
            +
                GROUP BY stops.stop_id
         | 
| 51 | 
            +
                ORDER BY stop_times.stop_sequence;
         | 
| 46 52 |  | 
| 47 53 | 
             
            Routes that visit the 'Calam Rd near Honeywood St' stop.
         | 
| 48 54 |  | 
| 49 | 
            -
                SELECT DISTINCT(routes. | 
| 50 | 
            -
                INNER JOIN stop_times ON stop_times.stop_id = stops. | 
| 51 | 
            -
                INNER JOIN trips ON stop_times.trip_id = trips. | 
| 52 | 
            -
                INNER JOIN routes ON routes. | 
| 55 | 
            +
                SELECT DISTINCT(routes.short_name) FROM stops
         | 
| 56 | 
            +
                INNER JOIN stop_times ON stop_times.stop_id = stops.stop_id
         | 
| 57 | 
            +
                INNER JOIN trips ON stop_times.trip_id = trips.trip_id
         | 
| 58 | 
            +
                INNER JOIN routes ON routes.route_id = trips.route_id
         | 
| 53 59 | 
             
                WHERE stops.stop_name = 'Calam Rd near Honeywood St';
         | 
| 54 60 |  | 
| 55 61 | 
             
            ## Schema
         | 
| @@ -59,6 +65,11 @@ defined by Google for [Google Transit](https://developers.google.com/transit/goo | |
| 59 65 |  | 
| 60 66 | 
             
            
         | 
| 61 67 |  | 
| 68 | 
            +
            ### Deviations from the General Transit Feed Specification
         | 
| 69 | 
            +
             | 
| 70 | 
            +
            * `trips.service_id` is omitted. This cannot be extracted from the dataset.
         | 
| 71 | 
            +
            * `routes.agency_id` is omitted. There is only one agent. The agent is Brisbane Transport.
         | 
| 72 | 
            +
             | 
| 62 73 | 
             
            ## Contributing
         | 
| 63 74 |  | 
| 64 75 | 
             
            If you would like to help, please browse the [issues](https://github.com/tatey/translink/issues).
         | 
| @@ -76,4 +87,4 @@ If you would like to help, please browse the [issues](https://github.com/tatey/t | |
| 76 87 | 
             
            Doing something interesting with this data? Shoot me an [e-mail](mailto:tate@tatey.com). I'd love to see how
         | 
| 77 88 | 
             
            this is being used. An acknowledgement of this project is appreciated, but not required.
         | 
| 78 89 |  | 
| 79 | 
            -
            Copyright © 2011 Tate Johnson. Released under the MIT license. See LICENSE.
         | 
| 90 | 
            +
            Copyright © 2011-2012 Tate Johnson. Released under the MIT license. See LICENSE.
         | 
    
        data/doc/schema.graffle
    CHANGED
    
    | @@ -7,7 +7,7 @@ | |
| 7 7 | 
             
            	<key>ApplicationVersion</key>
         | 
| 8 8 | 
             
            	<array>
         | 
| 9 9 | 
             
            		<string>com.omnigroup.OmniGraffle</string>
         | 
| 10 | 
            -
            		<string>139. | 
| 10 | 
            +
            		<string>139.16.0.171715</string>
         | 
| 11 11 | 
             
            	</array>
         | 
| 12 12 | 
             
            	<key>AutoAdjust</key>
         | 
| 13 13 | 
             
            	<true/>
         | 
| @@ -53,7 +53,7 @@ | |
| 53 53 | 
             
            	<array>
         | 
| 54 54 | 
             
            		<dict>
         | 
| 55 55 | 
             
            			<key>Bounds</key>
         | 
| 56 | 
            -
            			<string>{{493. | 
| 56 | 
            +
            			<string>{{493.07620422923145, 342.23403515968295}, {16, 14}}</string>
         | 
| 57 57 | 
             
            			<key>Class</key>
         | 
| 58 58 | 
             
            			<string>ShapedGraphic</string>
         | 
| 59 59 | 
             
            			<key>FitText</key>
         | 
| @@ -98,8 +98,8 @@ | |
| 98 98 | 
             
            				<key>Align</key>
         | 
| 99 99 | 
             
            				<integer>0</integer>
         | 
| 100 100 | 
             
            				<key>Text</key>
         | 
| 101 | 
            -
            				<string>{\rtf1\ansi\ansicpg1252\ | 
| 102 | 
            -
            {\fonttbl\f0\fswiss\fcharset0 Helvetica;}
         | 
| 101 | 
            +
            				<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf340
         | 
| 102 | 
            +
            \cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
         | 
| 103 103 | 
             
            {\colortbl;\red255\green255\blue255;}
         | 
| 104 104 | 
             
            \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
         | 
| 105 105 |  | 
| @@ -110,7 +110,7 @@ | |
| 110 110 | 
             
            		</dict>
         | 
| 111 111 | 
             
            		<dict>
         | 
| 112 112 | 
             
            			<key>Bounds</key>
         | 
| 113 | 
            -
            			<string>{{462. | 
| 113 | 
            +
            			<string>{{462.65137810532838, 345.82730563367841}, {15, 14}}</string>
         | 
| 114 114 | 
             
            			<key>Class</key>
         | 
| 115 115 | 
             
            			<string>ShapedGraphic</string>
         | 
| 116 116 | 
             
            			<key>FitText</key>
         | 
| @@ -155,8 +155,8 @@ | |
| 155 155 | 
             
            				<key>Align</key>
         | 
| 156 156 | 
             
            				<integer>0</integer>
         | 
| 157 157 | 
             
            				<key>Text</key>
         | 
| 158 | 
            -
            				<string>{\rtf1\ansi\ansicpg1252\ | 
| 159 | 
            -
            {\fonttbl\f0\fswiss\fcharset0 Helvetica;}
         | 
| 158 | 
            +
            				<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf340
         | 
| 159 | 
            +
            \cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
         | 
| 160 160 | 
             
            {\colortbl;\red255\green255\blue255;}
         | 
| 161 161 | 
             
            \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
         | 
| 162 162 |  | 
| @@ -179,8 +179,8 @@ | |
| 179 179 | 
             
            			<integer>87</integer>
         | 
| 180 180 | 
             
            			<key>Points</key>
         | 
| 181 181 | 
             
            			<array>
         | 
| 182 | 
            -
            				<string>{456. | 
| 183 | 
            -
            				<string>{514. | 
| 182 | 
            +
            				<string>{456.49998236712037, 361.27562669605123}</string>
         | 
| 183 | 
            +
            				<string>{514.8542361855632, 360.78535600795692}</string>
         | 
| 184 184 | 
             
            			</array>
         | 
| 185 185 | 
             
            			<key>Style</key>
         | 
| 186 186 | 
             
            			<dict>
         | 
| @@ -204,7 +204,7 @@ | |
| 204 204 | 
             
            		</dict>
         | 
| 205 205 | 
             
            		<dict>
         | 
| 206 206 | 
             
            			<key>Bounds</key>
         | 
| 207 | 
            -
            			<string>{{338. | 
| 207 | 
            +
            			<string>{{338.31344253872902, 346.75293510081792}, {15, 14}}</string>
         | 
| 208 208 | 
             
            			<key>Class</key>
         | 
| 209 209 | 
             
            			<string>ShapedGraphic</string>
         | 
| 210 210 | 
             
            			<key>FitText</key>
         | 
| @@ -249,8 +249,8 @@ | |
| 249 249 | 
             
            				<key>Align</key>
         | 
| 250 250 | 
             
            				<integer>0</integer>
         | 
| 251 251 | 
             
            				<key>Text</key>
         | 
| 252 | 
            -
            				<string>{\rtf1\ansi\ansicpg1252\ | 
| 253 | 
            -
            {\fonttbl\f0\fswiss\fcharset0 Helvetica;}
         | 
| 252 | 
            +
            				<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf340
         | 
| 253 | 
            +
            \cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
         | 
| 254 254 | 
             
            {\colortbl;\red255\green255\blue255;}
         | 
| 255 255 | 
             
            \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
         | 
| 256 256 |  | 
| @@ -263,7 +263,7 @@ | |
| 263 263 | 
             
            		</dict>
         | 
| 264 264 | 
             
            		<dict>
         | 
| 265 265 | 
             
            			<key>Bounds</key>
         | 
| 266 | 
            -
            			<string>{{309. | 
| 266 | 
            +
            			<string>{{309.7456362270371, 343.59928755895874}, {16, 14}}</string>
         | 
| 267 267 | 
             
            			<key>Class</key>
         | 
| 268 268 | 
             
            			<string>ShapedGraphic</string>
         | 
| 269 269 | 
             
            			<key>FitText</key>
         | 
| @@ -308,8 +308,8 @@ | |
| 308 308 | 
             
            				<key>Align</key>
         | 
| 309 309 | 
             
            				<integer>0</integer>
         | 
| 310 310 | 
             
            				<key>Text</key>
         | 
| 311 | 
            -
            				<string>{\rtf1\ansi\ansicpg1252\ | 
| 312 | 
            -
            {\fonttbl\f0\fswiss\fcharset0 Helvetica;}
         | 
| 311 | 
            +
            				<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf340
         | 
| 312 | 
            +
            \cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
         | 
| 313 313 | 
             
            {\colortbl;\red255\green255\blue255;}
         | 
| 314 314 | 
             
            \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
         | 
| 315 315 |  | 
| @@ -330,8 +330,8 @@ | |
| 330 330 | 
             
            			<integer>75</integer>
         | 
| 331 331 | 
             
            			<key>Points</key>
         | 
| 332 332 | 
             
            			<array>
         | 
| 333 | 
            -
            				<string>{301. | 
| 334 | 
            -
            				<string>{359. | 
| 333 | 
            +
            				<string>{301.14577222262562, 362.37250438371717}</string>
         | 
| 334 | 
            +
            				<string>{359.50001057832003, 361.99878605821311}</string>
         | 
| 335 335 | 
             
            			</array>
         | 
| 336 336 | 
             
            			<key>Style</key>
         | 
| 337 337 | 
             
            			<dict>
         | 
| @@ -355,7 +355,7 @@ | |
| 355 355 | 
             
            		</dict>
         | 
| 356 356 | 
             
            		<dict>
         | 
| 357 357 | 
             
            			<key>Bounds</key>
         | 
| 358 | 
            -
            			<string>{{183. | 
| 358 | 
            +
            			<string>{{183.06749558062364, 346.96415429228767}, {15, 14}}</string>
         | 
| 359 359 | 
             
            			<key>Class</key>
         | 
| 360 360 | 
             
            			<string>ShapedGraphic</string>
         | 
| 361 361 | 
             
            			<key>FitText</key>
         | 
| @@ -400,8 +400,8 @@ | |
| 400 400 | 
             
            				<key>Align</key>
         | 
| 401 401 | 
             
            				<integer>0</integer>
         | 
| 402 402 | 
             
            				<key>Text</key>
         | 
| 403 | 
            -
            				<string>{\rtf1\ansi\ansicpg1252\ | 
| 404 | 
            -
            {\fonttbl\f0\fswiss\fcharset0 Helvetica;}
         | 
| 403 | 
            +
            				<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf340
         | 
| 404 | 
            +
            \cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
         | 
| 405 405 | 
             
            {\colortbl;\red255\green255\blue255;}
         | 
| 406 406 | 
             
            \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
         | 
| 407 407 |  | 
| @@ -414,7 +414,7 @@ | |
| 414 414 | 
             
            		</dict>
         | 
| 415 415 | 
             
            		<dict>
         | 
| 416 416 | 
             
            			<key>Bounds</key>
         | 
| 417 | 
            -
            			<string>{{154. | 
| 417 | 
            +
            			<string>{{154.54299826675529, 343.44610658849467}, {16, 14}}</string>
         | 
| 418 418 | 
             
            			<key>Class</key>
         | 
| 419 419 | 
             
            			<string>ShapedGraphic</string>
         | 
| 420 420 | 
             
            			<key>FitText</key>
         | 
| @@ -459,8 +459,8 @@ | |
| 459 459 | 
             
            				<key>Align</key>
         | 
| 460 460 | 
             
            				<integer>0</integer>
         | 
| 461 461 | 
             
            				<key>Text</key>
         | 
| 462 | 
            -
            				<string>{\rtf1\ansi\ansicpg1252\ | 
| 463 | 
            -
            {\fonttbl\f0\fswiss\fcharset0 Helvetica;}
         | 
| 462 | 
            +
            				<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf340
         | 
| 463 | 
            +
            \cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
         | 
| 464 464 | 
             
            {\colortbl;\red255\green255\blue255;}
         | 
| 465 465 | 
             
            \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
         | 
| 466 466 |  | 
| @@ -481,8 +481,8 @@ | |
| 481 481 | 
             
            			<integer>72</integer>
         | 
| 482 482 | 
             
            			<key>Points</key>
         | 
| 483 483 | 
             
            			<array>
         | 
| 484 | 
            -
            				<string>{145. | 
| 485 | 
            -
            				<string>{204. | 
| 484 | 
            +
            				<string>{145.79155409933105, 362.00265871394515}</string>
         | 
| 485 | 
            +
            				<string>{204.14579179210202, 362.38712974459622}</string>
         | 
| 486 486 | 
             
            			</array>
         | 
| 487 487 | 
             
            			<key>Style</key>
         | 
| 488 488 | 
             
            			<dict>
         | 
| @@ -533,8 +533,8 @@ | |
| 533 533 | 
             
            					<key>Text</key>
         | 
| 534 534 | 
             
            					<dict>
         | 
| 535 535 | 
             
            						<key>Text</key>
         | 
| 536 | 
            -
            						<string>{\rtf1\ansi\ansicpg1252\ | 
| 537 | 
            -
            {\fonttbl\f0\fswiss\fcharset0 Helvetica;}
         | 
| 536 | 
            +
            						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf340
         | 
| 537 | 
            +
            \cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
         | 
| 538 538 | 
             
            {\colortbl;\red255\green255\blue255;}
         | 
| 539 539 | 
             
            \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
         | 
| 540 540 |  | 
| @@ -547,7 +547,7 @@ | |
| 547 547 | 
             
            				</dict>
         | 
| 548 548 | 
             
            				<dict>
         | 
| 549 549 | 
             
            					<key>Bounds</key>
         | 
| 550 | 
            -
            					<string>{{360, 333.68310546875}, {96,  | 
| 550 | 
            +
            					<string>{{360, 333.68310546875}, {96, 56}}</string>
         | 
| 551 551 | 
             
            					<key>Class</key>
         | 
| 552 552 | 
             
            					<string>ShapedGraphic</string>
         | 
| 553 553 | 
             
            					<key>FitText</key>
         | 
| @@ -571,17 +571,20 @@ | |
| 571 571 | 
             
            						<key>Align</key>
         | 
| 572 572 | 
             
            						<integer>0</integer>
         | 
| 573 573 | 
             
            						<key>Text</key>
         | 
| 574 | 
            -
            						<string>{\rtf1\ansi\ansicpg1252\ | 
| 575 | 
            -
            {\fonttbl\f0\fswiss\fcharset0 Helvetica;}
         | 
| 574 | 
            +
            						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf340
         | 
| 575 | 
            +
            \cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
         | 
| 576 576 | 
             
            {\colortbl;\red255\green255\blue255;}
         | 
| 577 577 | 
             
            \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
         | 
| 578 578 |  | 
| 579 | 
            -
            \f0\b\fs24 \cf0 \ul \ulc0  | 
| 579 | 
            +
            \f0\b\fs24 \cf0 \ul \ulc0 arrival_time
         | 
| 580 580 | 
             
            \b0 \ulnone \
         | 
| 581 | 
            -
            arrival_time\
         | 
| 582 581 | 
             
            stop_sequence\
         | 
| 583 | 
            -
            \ | 
| 584 | 
            -
             | 
| 582 | 
            +
            \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
         | 
| 583 | 
            +
             | 
| 584 | 
            +
            \b \cf0 \ul \ulc0 stop_id
         | 
| 585 | 
            +
            \b0 \ulnone \
         | 
| 586 | 
            +
             | 
| 587 | 
            +
            \b \ul trip_id}</string>
         | 
| 585 588 | 
             
            						<key>VerticalPad</key>
         | 
| 586 589 | 
             
            						<integer>0</integer>
         | 
| 587 590 | 
             
            					</dict>
         | 
| @@ -605,7 +608,7 @@ stop_sequence\ | |
| 605 608 | 
             
            			<array>
         | 
| 606 609 | 
             
            				<dict>
         | 
| 607 610 | 
             
            					<key>Bounds</key>
         | 
| 608 | 
            -
            					<string>{{515.35421752929688,  | 
| 611 | 
            +
            					<string>{{515.35421752929688, 318.36622619628906}, {96, 14}}</string>
         | 
| 609 612 | 
             
            					<key>Class</key>
         | 
| 610 613 | 
             
            					<string>ShapedGraphic</string>
         | 
| 611 614 | 
             
            					<key>FitText</key>
         | 
| @@ -627,8 +630,8 @@ stop_sequence\ | |
| 627 630 | 
             
            					<key>Text</key>
         | 
| 628 631 | 
             
            					<dict>
         | 
| 629 632 | 
             
            						<key>Text</key>
         | 
| 630 | 
            -
            						<string>{\rtf1\ansi\ansicpg1252\ | 
| 631 | 
            -
            {\fonttbl\f0\fswiss\fcharset0 Helvetica;}
         | 
| 633 | 
            +
            						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf340
         | 
| 634 | 
            +
            \cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
         | 
| 632 635 | 
             
            {\colortbl;\red255\green255\blue255;}
         | 
| 633 636 | 
             
            \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
         | 
| 634 637 |  | 
| @@ -641,7 +644,7 @@ stop_sequence\ | |
| 641 644 | 
             
            				</dict>
         | 
| 642 645 | 
             
            				<dict>
         | 
| 643 646 | 
             
            					<key>Bounds</key>
         | 
| 644 | 
            -
            					<string>{{515.35421752929688,  | 
| 647 | 
            +
            					<string>{{515.35421752929688, 332.36622619628906}, {96, 56}}</string>
         | 
| 645 648 | 
             
            					<key>Class</key>
         | 
| 646 649 | 
             
            					<string>ShapedGraphic</string>
         | 
| 647 650 | 
             
            					<key>FitText</key>
         | 
| @@ -665,14 +668,13 @@ stop_sequence\ | |
| 665 668 | 
             
            						<key>Align</key>
         | 
| 666 669 | 
             
            						<integer>0</integer>
         | 
| 667 670 | 
             
            						<key>Text</key>
         | 
| 668 | 
            -
            						<string>{\rtf1\ansi\ansicpg1252\ | 
| 669 | 
            -
            {\fonttbl\f0\fswiss\fcharset0 Helvetica;}
         | 
| 671 | 
            +
            						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf340
         | 
| 672 | 
            +
            \cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
         | 
| 670 673 | 
             
            {\colortbl;\red255\green255\blue255;}
         | 
| 671 674 | 
             
            \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
         | 
| 672 675 |  | 
| 673 | 
            -
            \f0\b\fs24 \cf0 \ul \ulc0  | 
| 676 | 
            +
            \f0\b\fs24 \cf0 \ul \ulc0 stop_id
         | 
| 674 677 | 
             
            \b0 \ulnone \
         | 
| 675 | 
            -
            stop_id\
         | 
| 676 678 | 
             
            stop_name\
         | 
| 677 679 | 
             
            stop_lat\
         | 
| 678 680 | 
             
            stop_lon}</string>
         | 
| @@ -699,7 +701,7 @@ stop_lon}</string> | |
| 699 701 | 
             
            			<array>
         | 
| 700 702 | 
             
            				<dict>
         | 
| 701 703 | 
             
            					<key>Bounds</key>
         | 
| 702 | 
            -
            					<string>{{204.64578247070312,  | 
| 704 | 
            +
            					<string>{{204.64578247070312, 320.68311309814453}, {96, 14}}</string>
         | 
| 703 705 | 
             
            					<key>Class</key>
         | 
| 704 706 | 
             
            					<string>ShapedGraphic</string>
         | 
| 705 707 | 
             
            					<key>FitText</key>
         | 
| @@ -721,8 +723,8 @@ stop_lon}</string> | |
| 721 723 | 
             
            					<key>Text</key>
         | 
| 722 724 | 
             
            					<dict>
         | 
| 723 725 | 
             
            						<key>Text</key>
         | 
| 724 | 
            -
            						<string>{\rtf1\ansi\ansicpg1252\ | 
| 725 | 
            -
            {\fonttbl\f0\fswiss\fcharset0 Helvetica;}
         | 
| 726 | 
            +
            						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf340
         | 
| 727 | 
            +
            \cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
         | 
| 726 728 | 
             
            {\colortbl;\red255\green255\blue255;}
         | 
| 727 729 | 
             
            \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
         | 
| 728 730 |  | 
| @@ -735,7 +737,7 @@ stop_lon}</string> | |
| 735 737 | 
             
            				</dict>
         | 
| 736 738 | 
             
            				<dict>
         | 
| 737 739 | 
             
            					<key>Bounds</key>
         | 
| 738 | 
            -
            					<string>{{204.64578247070312,  | 
| 740 | 
            +
            					<string>{{204.64578247070312, 334.68311309814453}, {96, 56}}</string>
         | 
| 739 741 | 
             
            					<key>Class</key>
         | 
| 740 742 | 
             
            					<string>ShapedGraphic</string>
         | 
| 741 743 | 
             
            					<key>FitText</key>
         | 
| @@ -759,18 +761,15 @@ stop_lon}</string> | |
| 759 761 | 
             
            						<key>Align</key>
         | 
| 760 762 | 
             
            						<integer>0</integer>
         | 
| 761 763 | 
             
            						<key>Text</key>
         | 
| 762 | 
            -
            						<string>{\rtf1\ansi\ansicpg1252\ | 
| 763 | 
            -
            {\fonttbl\f0\fswiss\fcharset0 Helvetica;}
         | 
| 764 | 
            +
            						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf340
         | 
| 765 | 
            +
            \cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
         | 
| 764 766 | 
             
            {\colortbl;\red255\green255\blue255;}
         | 
| 765 767 | 
             
            \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
         | 
| 766 768 |  | 
| 767 | 
            -
            \f0\b\fs24 \cf0 \ul \ulc0  | 
| 769 | 
            +
            \f0\b\fs24 \cf0 \ul \ulc0 trip_id
         | 
| 768 770 | 
             
            \b0 \ulnone \
         | 
| 769 771 | 
             
            direction\
         | 
| 770 | 
            -
            \ | 
| 771 | 
            -
            \cf0 service_id\
         | 
| 772 | 
            -
            \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
         | 
| 773 | 
            -
            \cf0 trip_id\
         | 
| 772 | 
            +
            trip_id\
         | 
| 774 773 | 
             
            \ul route_id}</string>
         | 
| 775 774 | 
             
            						<key>VerticalPad</key>
         | 
| 776 775 | 
             
            						<integer>0</integer>
         | 
| @@ -795,7 +794,7 @@ direction\ | |
| 795 794 | 
             
            			<array>
         | 
| 796 795 | 
             
            				<dict>
         | 
| 797 796 | 
             
            					<key>Bounds</key>
         | 
| 798 | 
            -
            					<string>{{49.29156494140625,  | 
| 797 | 
            +
            					<string>{{49.29156494140625, 319.68311309814453}, {96, 14}}</string>
         | 
| 799 798 | 
             
            					<key>Class</key>
         | 
| 800 799 | 
             
            					<string>ShapedGraphic</string>
         | 
| 801 800 | 
             
            					<key>FitText</key>
         | 
| @@ -817,8 +816,8 @@ direction\ | |
| 817 816 | 
             
            					<key>Text</key>
         | 
| 818 817 | 
             
            					<dict>
         | 
| 819 818 | 
             
            						<key>Text</key>
         | 
| 820 | 
            -
            						<string>{\rtf1\ansi\ansicpg1252\ | 
| 821 | 
            -
            {\fonttbl\f0\fswiss\fcharset0 Helvetica;}
         | 
| 819 | 
            +
            						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf340
         | 
| 820 | 
            +
            \cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
         | 
| 822 821 | 
             
            {\colortbl;\red255\green255\blue255;}
         | 
| 823 822 | 
             
            \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
         | 
| 824 823 |  | 
| @@ -831,7 +830,7 @@ direction\ | |
| 831 830 | 
             
            				</dict>
         | 
| 832 831 | 
             
            				<dict>
         | 
| 833 832 | 
             
            					<key>Bounds</key>
         | 
| 834 | 
            -
            					<string>{{49.29156494140625,  | 
| 833 | 
            +
            					<string>{{49.29156494140625, 333.68311309814453}, {96, 56}}</string>
         | 
| 835 834 | 
             
            					<key>Class</key>
         | 
| 836 835 | 
             
            					<string>ShapedGraphic</string>
         | 
| 837 836 | 
             
            					<key>FitText</key>
         | 
| @@ -855,14 +854,13 @@ direction\ | |
| 855 854 | 
             
            						<key>Align</key>
         | 
| 856 855 | 
             
            						<integer>0</integer>
         | 
| 857 856 | 
             
            						<key>Text</key>
         | 
| 858 | 
            -
            						<string>{\rtf1\ansi\ansicpg1252\ | 
| 859 | 
            -
            {\fonttbl\f0\fswiss\fcharset0 Helvetica;}
         | 
| 857 | 
            +
            						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf340
         | 
| 858 | 
            +
            \cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
         | 
| 860 859 | 
             
            {\colortbl;\red255\green255\blue255;}
         | 
| 861 860 | 
             
            \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
         | 
| 862 861 |  | 
| 863 | 
            -
            \f0\b\fs24 \cf0 \ul \ulc0  | 
| 862 | 
            +
            \f0\b\fs24 \cf0 \ul \ulc0 route_id
         | 
| 864 863 | 
             
            \b0 \ulnone \
         | 
| 865 | 
            -
            route_id\
         | 
| 866 864 | 
             
            short_name\
         | 
| 867 865 | 
             
            long_name\
         | 
| 868 866 | 
             
            route_type}</string>
         | 
| @@ -884,7 +882,7 @@ route_type}</string> | |
| 884 882 | 
             
            		</dict>
         | 
| 885 883 | 
             
            		<dict>
         | 
| 886 884 | 
             
            			<key>Bounds</key>
         | 
| 887 | 
            -
            			<string>{{49.291564470703122,  | 
| 885 | 
            +
            			<string>{{49.291564470703122, 412.33333333333337}, {53, 22}}</string>
         | 
| 888 886 | 
             
            			<key>Class</key>
         | 
| 889 887 | 
             
            			<string>ShapedGraphic</string>
         | 
| 890 888 | 
             
            			<key>FitText</key>
         | 
| @@ -927,8 +925,8 @@ route_type}</string> | |
| 927 925 | 
             
            				<key>Pad</key>
         | 
| 928 926 | 
             
            				<integer>0</integer>
         | 
| 929 927 | 
             
            				<key>Text</key>
         | 
| 930 | 
            -
            				<string>{\rtf1\ansi\ansicpg1252\ | 
| 931 | 
            -
            {\fonttbl\f0\fswiss\fcharset0 Helvetica;}
         | 
| 928 | 
            +
            				<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf340
         | 
| 929 | 
            +
            \cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
         | 
| 932 930 | 
             
            {\colortbl;\red255\green255\blue255;}
         | 
| 933 931 | 
             
            \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
         | 
| 934 932 |  | 
| @@ -989,7 +987,7 @@ route_type}</string> | |
| 989 987 | 
             
            	<key>MasterSheets</key>
         | 
| 990 988 | 
             
            	<array/>
         | 
| 991 989 | 
             
            	<key>ModificationDate</key>
         | 
| 992 | 
            -
            	<string>2012- | 
| 990 | 
            +
            	<string>2012-09-23 02:49:00 +0000</string>
         | 
| 993 991 | 
             
            	<key>Modifier</key>
         | 
| 994 992 | 
             
            	<string>Tate Johnson</string>
         | 
| 995 993 | 
             
            	<key>NotesVisible</key>
         | 
| @@ -1070,7 +1068,7 @@ route_type}</string> | |
| 1070 1068 | 
             
            			</dict>
         | 
| 1071 1069 | 
             
            		</array>
         | 
| 1072 1070 | 
             
            		<key>Frame</key>
         | 
| 1073 | 
            -
            		<string>{{ | 
| 1071 | 
            +
            		<string>{{890, 226}, {1272, 1001}}</string>
         | 
| 1074 1072 | 
             
            		<key>ListView</key>
         | 
| 1075 1073 | 
             
            		<true/>
         | 
| 1076 1074 | 
             
            		<key>OutlineWidth</key>
         | 
| @@ -1084,14 +1082,14 @@ route_type}</string> | |
| 1084 1082 | 
             
            		<key>SidebarWidth</key>
         | 
| 1085 1083 | 
             
            		<integer>120</integer>
         | 
| 1086 1084 | 
             
            		<key>VisibleRegion</key>
         | 
| 1087 | 
            -
            		<string>{{0, 0}, { | 
| 1085 | 
            +
            		<string>{{0, 0}, {838.66666666666663, 574.66666666666663}}</string>
         | 
| 1088 1086 | 
             
            		<key>Zoom</key>
         | 
| 1089 | 
            -
            		<real>1</real>
         | 
| 1087 | 
            +
            		<real>1.5</real>
         | 
| 1090 1088 | 
             
            		<key>ZoomValues</key>
         | 
| 1091 1089 | 
             
            		<array>
         | 
| 1092 1090 | 
             
            			<array>
         | 
| 1093 1091 | 
             
            				<string>Canvas 1</string>
         | 
| 1094 | 
            -
            				<real>1</real>
         | 
| 1092 | 
            +
            				<real>1.5</real>
         | 
| 1095 1093 | 
             
            				<real>1</real>
         | 
| 1096 1094 | 
             
            			</array>
         | 
| 1097 1095 | 
             
            		</array>
         |