cta-api 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +4 -0
- data/LICENSE +22 -0
- data/README.md +91 -0
- data/Rakefile +2 -0
- data/cta-api.gemspec +17 -0
- data/lib/bus-tracker/bus-tracker.rb +208 -0
- data/lib/bus-tracker/pattern.rb +13 -0
- data/lib/bus-tracker/point.rb +15 -0
- data/lib/bus-tracker/prediction.rb +13 -0
- data/lib/bus-tracker/service-bulletin.rb +13 -0
- data/lib/bus-tracker/service.rb +15 -0
- data/lib/bus-tracker/stop.rb +13 -0
- data/lib/bus-tracker/vehicle.rb +13 -0
- data/lib/cta-api.rb +23 -0
- data/lib/cta-api/version.rb +3 -0
- data/lib/cta_L_stops.csv +299 -0
- data/lib/train-tracker/estimate.rb +13 -0
- data/lib/train-tracker/train-tracker.rb +56 -0
- data/spec/spec_helper.rb +1 -0
- metadata +83 -0
data/Gemfile
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2013 fbonetti
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,91 @@
|
|
1
|
+
## Install
|
2
|
+
|
3
|
+
Via rubygems.org:
|
4
|
+
|
5
|
+
```
|
6
|
+
$ gem install cta-api
|
7
|
+
```
|
8
|
+
|
9
|
+
## Usage
|
10
|
+
|
11
|
+
This gem allows you to access the Chicago Transit Authority API via Ruby. You can track the real-time locations of all public transportation vehicles, including buses and trains. You can obtain API keys from the CTA website:
|
12
|
+
|
13
|
+
http://www.transitchicago.com/developers/bustracker.aspx
|
14
|
+
http://www.transitchicago.com/developers/traintracker.aspx
|
15
|
+
|
16
|
+
## Bus Tracker
|
17
|
+
|
18
|
+
### Setup
|
19
|
+
|
20
|
+
``` ruby
|
21
|
+
require 'cta-api'
|
22
|
+
|
23
|
+
key = "XXXXXXXXXXXXXXXXXXXXXXXXX"
|
24
|
+
@tracker = CTA::TrainTracker.new(key)
|
25
|
+
```
|
26
|
+
|
27
|
+
### Find Routes and Stops
|
28
|
+
|
29
|
+
``` ruby
|
30
|
+
# list all available routes
|
31
|
+
@tracker.routes
|
32
|
+
|
33
|
+
# gets the available directions for the specified route (north, south, etc.)
|
34
|
+
@tracker.route_directions("50")
|
35
|
+
|
36
|
+
# list all stops that belong to a particular route
|
37
|
+
@tracker.stops("50", :north)
|
38
|
+
```
|
39
|
+
|
40
|
+
### Find Vehicles
|
41
|
+
|
42
|
+
``` ruby
|
43
|
+
# returns an array of vehicles that travel the given routes
|
44
|
+
@tracker.vehicles_by_routes(["50", "52A"])
|
45
|
+
|
46
|
+
# returns an array of vehicles with the given vehicle ids
|
47
|
+
@tracker.vehicles_by_ids(["1782", "1419", "1773"])
|
48
|
+
```
|
49
|
+
|
50
|
+
### Get Predicted Arrival Times
|
51
|
+
|
52
|
+
``` ruby
|
53
|
+
# get arrival times for a list of stop ids
|
54
|
+
# note that the second argument is optional
|
55
|
+
@tracker.predictions_by_stop_ids(["8751", "8752"], "50")
|
56
|
+
|
57
|
+
# get arrival times for a list of vehicle ids
|
58
|
+
@tracker.predictions_by_vehicle_ids(["1782", "1419", "1773"])
|
59
|
+
```
|
60
|
+
|
61
|
+
### Get System Time
|
62
|
+
``` ruby
|
63
|
+
@tracker.time
|
64
|
+
```
|
65
|
+
|
66
|
+
## Train Tracker
|
67
|
+
|
68
|
+
### Setup
|
69
|
+
|
70
|
+
``` ruby
|
71
|
+
require 'cta-api'
|
72
|
+
|
73
|
+
key = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
|
74
|
+
tracker = CTA::TrainTracker.new(key)
|
75
|
+
```
|
76
|
+
|
77
|
+
## Get a List of Stops and Stations
|
78
|
+
|
79
|
+
``` ruby
|
80
|
+
# stops
|
81
|
+
@tracker.stops
|
82
|
+
|
83
|
+
# stations
|
84
|
+
@tracker.stations
|
85
|
+
```
|
86
|
+
|
87
|
+
## Get Predicted Arrival Times
|
88
|
+
|
89
|
+
``` ruby
|
90
|
+
@tracker.arrivals stop_id: "30106"
|
91
|
+
```
|
data/Rakefile
ADDED
data/cta-api.gemspec
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
Gem::Specification.new do |s|
|
2
|
+
s.name = 'cta-api'
|
3
|
+
s.version = '1.0.0'
|
4
|
+
s.author = 'Frank Bonetti'
|
5
|
+
s.date = '2013-02-02'
|
6
|
+
|
7
|
+
s.license = 'MIT'
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
|
10
|
+
s.description = 'An easy way to access the Chicago Transit Authority API via the Ruby programming language'
|
11
|
+
s.summary = 'An easy way to access the Chicago Transit Authority API via the Ruby programming language'
|
12
|
+
s.email = 'frank.r.bonetti@gmail.com'
|
13
|
+
|
14
|
+
s.require_paths = ['lib']
|
15
|
+
s.files = Dir.glob("**/*").reject { |x| File.directory?(x) }
|
16
|
+
s.add_dependency('nokogiri', '>= 1.5.6')
|
17
|
+
end
|
@@ -0,0 +1,208 @@
|
|
1
|
+
module CTA
|
2
|
+
class BusTracker
|
3
|
+
|
4
|
+
def initialize(key)
|
5
|
+
@key = key
|
6
|
+
end
|
7
|
+
|
8
|
+
def time
|
9
|
+
base_url = "http://www.ctabustracker.com/bustime/api/v1/gettime?"
|
10
|
+
url = "#{ base_url}key=#{ @key }"
|
11
|
+
Time.parse(Nokogiri::XML(open(url)).at("//tm").text)
|
12
|
+
end
|
13
|
+
|
14
|
+
def vehicles_by_routes(routes)
|
15
|
+
if routes.kind_of?(Array)
|
16
|
+
full_array = []
|
17
|
+
until routes.size == 0
|
18
|
+
full_array << vehicles(route: routes.shift(10))
|
19
|
+
end
|
20
|
+
full_array.flatten!
|
21
|
+
else
|
22
|
+
raise ArgumentError.new "Argument must be an Array."
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def vehicles_by_ids(vids)
|
27
|
+
if vids.kind_of?(Array) && routes.size.between(1,10)
|
28
|
+
vehicles(vid: vids)
|
29
|
+
else
|
30
|
+
raise ArgumentError.new "must be an Array with 1 to 10 elements."
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def patterns_by_route(route)
|
35
|
+
if route.kind_of?(String) && route.length > 0
|
36
|
+
patterns(route: route)
|
37
|
+
else
|
38
|
+
raise ArgumentError.new "must be a String with a length greater than zero."
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def patterns_by_ids(pid)
|
43
|
+
if pid.kind_of?(Array) && pid.size.between?(1,10)
|
44
|
+
patterns(pid: pid)
|
45
|
+
else
|
46
|
+
raise ArgumentError.new "must be an Array with 1 to 10 elements."
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def predictions_by_stop_ids(stop_id, route="")
|
51
|
+
if stop_id.kind_of?(Array) && stop_id.size.between?(1,10)
|
52
|
+
predictions(stop_id: stop_id, route: route)
|
53
|
+
else
|
54
|
+
raise ArgumentError.new "must be an Array with 1 to 10 elements."
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def predictions_by_vehicle_ids(vid)
|
59
|
+
if vid.kind_of?(Array) && vid.size.between?(1,10)
|
60
|
+
predictions(vid: vid)
|
61
|
+
else
|
62
|
+
raise ArgumentError.new "must be an Array with 1 to 10 elements."
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def routes
|
67
|
+
base_url = "http://www.ctabustracker.com/bustime/api/v1/getroutes?"
|
68
|
+
url = "#{ base_url }key=#{ @key }"
|
69
|
+
route_hash = {}
|
70
|
+
Nokogiri::XML(open(url)).xpath("//route").each do |route|
|
71
|
+
route_hash[route.at("rt").text] = route.at("rtnm").text
|
72
|
+
end
|
73
|
+
route_hash
|
74
|
+
end
|
75
|
+
|
76
|
+
def route_directions(route)
|
77
|
+
if route.kind_of?(String)
|
78
|
+
base_url = "http://www.ctabustracker.com/bustime/api/v1/getdirections?rt=#{ route }"
|
79
|
+
url = "#{ base_url }&key=#{ @key }"
|
80
|
+
Nokogiri::XML(open(url)).xpath("//dir").map { |x| x.text.split(/ /)[0].to_sym }
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
def stops(route, direction)
|
85
|
+
if (route.kind_of?(String) || route.kind_of?(Integer)) && direction.kind_of?(Symbol)
|
86
|
+
direction = direction.to_s + "+bound"
|
87
|
+
base_url = "http://www.ctabustracker.com/bustime/api/v1/getstops?"
|
88
|
+
url = "#{ base_url }key=#{ @key }&rt=#{ route }&dir=#{ direction }"
|
89
|
+
|
90
|
+
stop_array = Nokogiri::XML(open(url)).xpath("//stop").map do |item|
|
91
|
+
Stop.new({
|
92
|
+
:id => item.at("stpid").text,
|
93
|
+
:name => item.at("stpnm").text,
|
94
|
+
:latitude => item.at("lat").text,
|
95
|
+
:longitude => item.at("lon").text
|
96
|
+
})
|
97
|
+
end
|
98
|
+
stop_array
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
def service_bulletins(params)
|
103
|
+
route = params[:route] || []
|
104
|
+
route_direction = params[:route_direction]
|
105
|
+
stop_id = params[:stop_id] || []
|
106
|
+
|
107
|
+
base_url = "http://www.ctabustracker.com/bustime/api/v1/getservicebulletins?"
|
108
|
+
url = "#{ base_url }key=#{ @key }&rt=#{ route.join(',') }&rtdir=#{ route_direction }&stpid=#{ stop_id.join(',') }"
|
109
|
+
puts url
|
110
|
+
|
111
|
+
bulletin_array = Nokogiri::XML(open(url)).xpath("//sb").map do |item|
|
112
|
+
ServiceBulletin.new({
|
113
|
+
:name => item.at("nm") && item.at("nm").text,
|
114
|
+
:subject => item.at("sbj") && item.at("sbj").text,
|
115
|
+
:detail => item.at("dtl") && item.at("dtl").text.gsub("<br/>", "\n").strip,
|
116
|
+
:brief => item.at("brf") && item.at("brf").text,
|
117
|
+
:priority => item.at("prty") && item.at("prty").text,
|
118
|
+
:services => item.xpath("srvc") && item.xpath("srvc").map do |subitem|
|
119
|
+
ServiceBulletin::Service.new({
|
120
|
+
:route => subitem.at("rt") && subitem.at("rt").text,
|
121
|
+
:route_direction => subitem.at("rtdir") && subitem.at("rtdir").text,
|
122
|
+
:stop_id => subitem.at("stpid") && subitem.at("stpid").text,
|
123
|
+
:stop_name => subitem.at("stpnm") && subitem.at("stpnm").text
|
124
|
+
})
|
125
|
+
end
|
126
|
+
})
|
127
|
+
end
|
128
|
+
bulletin_array
|
129
|
+
end
|
130
|
+
|
131
|
+
private
|
132
|
+
|
133
|
+
def vehicles(params)
|
134
|
+
route = params[:route] || []
|
135
|
+
vid = params[:vid] || []
|
136
|
+
|
137
|
+
base_url = "http://www.ctabustracker.com/bustime/api/v1/getvehicles?"
|
138
|
+
url = "#{ base_url }key=#{ @key }&rt=#{ route.join(",") }&vid=#{ vid.join(",") }"
|
139
|
+
|
140
|
+
vehicle_array = Nokogiri::XML(open(url)).xpath("//vehicle").map do |item|
|
141
|
+
Vehicle.new({
|
142
|
+
:id => item.at("vid").text,
|
143
|
+
:timestamp => Time.parse(item.at("tmstmp").text),
|
144
|
+
:latitude => item.at("lat").text,
|
145
|
+
:longitude => item.at("lon").text,
|
146
|
+
:heading => item.at("hdg").text,
|
147
|
+
:pattern_id => item.at("pid").text,
|
148
|
+
:pattern_distance => item.at("pdist").text,
|
149
|
+
:destination => item.at("des").text,
|
150
|
+
:delay => item.at("dly") && item.at("dly").text.to_bool
|
151
|
+
})
|
152
|
+
end
|
153
|
+
vehicle_array
|
154
|
+
end
|
155
|
+
|
156
|
+
def patterns(params)
|
157
|
+
route = params[:route]
|
158
|
+
pid = params[:pid] || []
|
159
|
+
|
160
|
+
base_url = "http://www.ctabustracker.com/bustime/api/v1/getpatterns?"
|
161
|
+
url = "#{ base_url }key=#{ @key }&rt=#{ route }&pid=#{ pid.join(",") }"
|
162
|
+
|
163
|
+
pattern_array = Nokogiri::XML(open(url)).xpath("//ptr").map do |item|
|
164
|
+
Pattern.new({
|
165
|
+
:id => item.at("pid").text,
|
166
|
+
:length => item.at("ln").text.to_f,
|
167
|
+
:direction => item.at("rtdir").text,
|
168
|
+
:points => item.xpath("pt").map do |subitem|
|
169
|
+
Pattern::Point.new({
|
170
|
+
:sequence => subitem.at("seq").text,
|
171
|
+
:latitude => subitem.at("lat").text,
|
172
|
+
:longitude => subitem.at("lon").text,
|
173
|
+
:type => subitem.at("typ").text == "S" ? "stop" : "waypoint",
|
174
|
+
:id => subitem.at("stpid") && subitem.at("stpid").text,
|
175
|
+
:name => subitem.at("stpnm") && subitem.at("stpnm").text,
|
176
|
+
:distance => subitem.at("pdist") && subitem.at("pdist").text
|
177
|
+
})
|
178
|
+
end
|
179
|
+
})
|
180
|
+
end
|
181
|
+
pattern_array
|
182
|
+
end
|
183
|
+
|
184
|
+
def predictions(params)
|
185
|
+
stop_id = params[:stop_id] || []
|
186
|
+
route = params[:route] || []
|
187
|
+
vid = params[:vid] || []
|
188
|
+
|
189
|
+
base_url = "http://www.ctabustracker.com/bustime/api/v1/getpredictions?"
|
190
|
+
url = "#{ base_url }key=#{ @key }&stpid=#{ stop_id.join(',') }&rt=#{ route.join(',') }&vid=#{ vid.join(',') }"
|
191
|
+
|
192
|
+
prediction_array = Nokogiri::XML(open(url)).xpath("//prd").map do |item|
|
193
|
+
Prediction.new({
|
194
|
+
:timestamp => Time.parse(item.at("tmstmp").text),
|
195
|
+
:type => item.at("typ").text == "A" ? "arrival" : "departure",
|
196
|
+
:stop_name => item.at("stpnm").text,
|
197
|
+
:vehicle_id => item.at("vid").text,
|
198
|
+
:distance_from_stop => item.at("dstp").text.to_f,
|
199
|
+
:route => item.at("rt").text,
|
200
|
+
:route_direction => item.at("rtdir").text,
|
201
|
+
:destination => item.at("des").text,
|
202
|
+
:predicted_time => Time.parse(item.at("prdtm").text)
|
203
|
+
})
|
204
|
+
end
|
205
|
+
prediction_array
|
206
|
+
end
|
207
|
+
end
|
208
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module CTA
|
2
|
+
class BusTracker
|
3
|
+
class Pattern
|
4
|
+
class Point
|
5
|
+
attr_reader :sequence, :latitude, :longitude, :type, :id, :name, :distance
|
6
|
+
|
7
|
+
def initialize(params)
|
8
|
+
params.each do |key, value|
|
9
|
+
self.instance_variable_set("@#{ key }".to_sym, value)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module CTA
|
2
|
+
class BusTracker
|
3
|
+
class Prediction
|
4
|
+
attr_reader :timestamp, :type, :stop_name, :stop_id, :vehicle_id, :distance_from_stop, :route, :route_direction, :destination, :predicted_time
|
5
|
+
|
6
|
+
def initialize(params)
|
7
|
+
params.each do |key, value|
|
8
|
+
self.instance_variable_set("@#{ key }".to_sym, value)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module CTA
|
2
|
+
class BusTracker
|
3
|
+
class ServiceBulletin
|
4
|
+
attr_reader :name, :subject, :detail, :brief, :priority, :services
|
5
|
+
|
6
|
+
def initialize(params)
|
7
|
+
params.each do |key, value|
|
8
|
+
self.instance_variable_set("@#{ key }".to_sym, value)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module CTA
|
2
|
+
class BusTracker
|
3
|
+
class ServiceBulletin
|
4
|
+
class Service
|
5
|
+
attr_reader :route, :route_direction, :stop_id, :stop_name
|
6
|
+
|
7
|
+
def initialize(params)
|
8
|
+
params.each do |key, value|
|
9
|
+
self.instance_variable_set("@#{ key }".to_sym, value)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module CTA
|
2
|
+
class BusTracker
|
3
|
+
class Vehicle
|
4
|
+
attr_reader :id, :timestamp, :latitude, :longitude, :heading, :pattern_id, :pattern_distance, :destination, :delay
|
5
|
+
|
6
|
+
def initialize(params)
|
7
|
+
params.each do |key, value|
|
8
|
+
self.instance_variable_set("@#{ key }".to_sym, value)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
data/lib/cta-api.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'nokogiri'
|
2
|
+
require 'open-uri'
|
3
|
+
require 'time'
|
4
|
+
require 'csv'
|
5
|
+
|
6
|
+
require 'bus-tracker/bus-tracker'
|
7
|
+
require 'bus-tracker/pattern'
|
8
|
+
require 'bus-tracker/stop'
|
9
|
+
require 'bus-tracker/vehicle'
|
10
|
+
require 'bus-tracker/point'
|
11
|
+
require 'bus-tracker/prediction'
|
12
|
+
require 'bus-tracker/service-bulletin'
|
13
|
+
require 'bus-tracker/service'
|
14
|
+
require 'train-tracker/train-tracker'
|
15
|
+
require 'train-tracker/estimate'
|
16
|
+
|
17
|
+
class String
|
18
|
+
def to_bool
|
19
|
+
return true if self == true || self =~ (/(true|t|yes|y|1)$/i)
|
20
|
+
return false if self == false || self =~ (/(false|f|no|n|0)$/i)
|
21
|
+
raise ArgumentError.new("invalid value for Boolean: \"#{self}\"")
|
22
|
+
end
|
23
|
+
end
|
data/lib/cta_L_stops.csv
ADDED
@@ -0,0 +1,299 @@
|
|
1
|
+
STOP_ID,DIRECTION_ID,STOP_NAME,LON,LAT,STATION_NAME,STATION_DESCRIPTIVE_NAME,PARENT_STOP_ID,ADA,Red,Blue,Brn,G,P,Pexp,Y,Pink,Org
|
2
|
+
30162,W,18th (54th/Cermak-bound),-87.669147,41.857908,18th,18th (Pink Line),40830,1,0,0,0,0,0,0,0,1,0
|
3
|
+
30161,E,18th (Loop-bound),-87.669147,41.857908,18th,18th (Pink Line),40830,1,0,0,0,0,0,0,0,1,0
|
4
|
+
30022,N,35th/Archer (Loop-bound),-87.680622,41.829353,35th/Archer,35th/Archer (Orange Line),40120,1,0,0,0,0,0,0,0,0,1
|
5
|
+
30023,S,35th/Archer (Midway-bound),-87.680622,41.829353,35th/Archer,35th/Archer (Orange Line),40120,1,0,0,0,0,0,0,0,0,1
|
6
|
+
30214,S,35-Bronzeville-IIT (63rd-bound),-87.625826,41.831677,35th-Bronzeville-IIT,35th-Bronzeville-IIT (Green Line),41120,1,0,0,0,1,0,0,0,0,0
|
7
|
+
30213,N,35-Bronzeville-IIT (Harlem-bound),-87.625826,41.831677,35th-Bronzeville-IIT,35th-Bronzeville-IIT (Green Line),41120,1,0,0,0,1,0,0,0,0,0
|
8
|
+
30246,S,43rd (63rd-bound),-87.619021,41.816462,43rd,43rd (Green Line),41270,1,0,0,0,1,0,0,0,0,0
|
9
|
+
30245,N,43rd (Harlem-bound),-87.619021,41.816462,43rd,43rd (Green Line),41270,1,0,0,0,1,0,0,0,0,0
|
10
|
+
30210,S,47th (63rd-bound) Elevated (63rd-bound),-87.618826,41.809209,47th,47th (Green Line),41080,1,0,0,0,1,0,0,0,0,0
|
11
|
+
30209,N,47th (SB) Elevated (Harlem-bound),-87.618826,41.809209,47th,47th (Green Line),41080,1,0,0,0,1,0,0,0,0,0
|
12
|
+
30238,S,47th-Dan Ryan (95th-bound),-87.63094,41.810318,47th,47th (Red Line),41230,1,1,0,0,0,0,0,0,0,0
|
13
|
+
30237,N,47th-Dan Ryan (Howard-bound),-87.63094,41.810318,47th,47th (Red Line),41230,1,1,0,0,0,0,0,0,0,0
|
14
|
+
30025,S,51st (63rd-bound),-87.618487,41.80209,51st,51st (Green Line),40130,1,0,0,0,1,0,0,0,0,0
|
15
|
+
30024,N,51st (Harlem-bound),-87.618487,41.80209,51st,51st (Green Line),40130,1,0,0,0,1,0,0,0,0,0
|
16
|
+
30113,E,54th/Cermak (Loop-bound),-87.75669201,41.85177331,54th/Cermak,54th/Cermak (Pink Line),40580,1,0,0,0,0,0,0,0,1,0
|
17
|
+
30114,W,54th/Cermak (Terminal arrival),-87.75669201,41.85177331,54th/Cermak,54th/Cermak (Pink Line),40580,1,0,0,0,0,0,0,0,1,0
|
18
|
+
30178,S,63rd-Dan Ryan (95th-bound),-87.630952,41.780536,63rd,63rd (Red Line),40910,0,1,0,0,0,0,0,0,0,0
|
19
|
+
30177,N,63rd-Dan Ryan (Howard-bound),-87.630952,41.780536,63rd,63rd (Red Line),40910,0,1,0,0,0,0,0,0,0,0
|
20
|
+
30192,S,69th (95th-bound),-87.625724,41.768367,69th,69th (Red Line),40990,1,1,0,0,0,0,0,0,0,0
|
21
|
+
30191,N,69th (Howard-bound),-87.625724,41.768367,69th,69th (Red Line),40990,1,1,0,0,0,0,0,0,0,0
|
22
|
+
30047,S,79th (95th-bound),-87.625112,41.750419,79th,79th (Red Line),40240,1,1,0,0,0,0,0,0,0,0
|
23
|
+
30046,N,79th (Howard-bound),-87.625112,41.750419,79th,79th (Red Line),40240,1,1,0,0,0,0,0,0,0,0
|
24
|
+
30276,S,87th (95th-bound),-87.624717,41.735372,87th,87th (Red Line),41430,0,1,0,0,0,0,0,0,0,0
|
25
|
+
30275,N,87th (Howard-bound),-87.624717,41.735372,87th,87th (Red Line),41430,0,1,0,0,0,0,0,0,0,0
|
26
|
+
30089,S,95th/Dan Ryan (95th-bound),-87.624342,41.722377,95th/Dan Ryan,95th/Dan Ryan (Red Line),40450,1,1,0,0,0,0,0,0,0,0
|
27
|
+
30088,N,95th/Dan Ryan (Howard-bound),-87.624342,41.722377,95th/Ran Ryan,95th/Ran Ryan (Red Line),40450,1,1,0,0,0,0,0,0,0,0
|
28
|
+
30132,S,Adams/Wabash (Inner Loop),-87.626037,41.879507,Adams/Wabash,"Adams/Wabash (Brown, Green, Orange, Pink & Purple Lines)",40680,0,0,0,0,1,0,1,0,1,1
|
29
|
+
30131,N,Adams/Wabash (Outer Loop),-87.626037,41.879507,Adams/Wabash,"Adams/Wabash (Brown, Green, Orange, Pink & Purple Lines)",40680,0,0,0,1,1,0,0,0,0,0
|
30
|
+
30240,S,Addison (O'Hare Branch) (Forest Pk-bound),-87.71906,41.94738,Addison,Addison (Blue Line),41240,0,0,1,0,0,0,0,0,0,0
|
31
|
+
30239,N,Addison (O'Hare Branch) (O'Hare-bound),-87.71906,41.94738,Addison,Addison (Blue Line),41240,0,0,1,0,0,0,0,0,0,0
|
32
|
+
30277,N,Addison (Kimball-bound),-87.674642,41.947028,Addison,Addison (Brown Line),41440,1,0,0,1,0,0,0,0,0,0
|
33
|
+
30278,S,Addison (Loop-bound),-87.674642,41.947028,Addison,Addison (Brown Line),41440,1,0,0,1,0,0,0,0,0,0
|
34
|
+
30274,S,Addison (95th-bound),-87.653626,41.947428,Addison,Addison (Red Line),41420,1,1,0,0,0,0,0,0,0,0
|
35
|
+
30273,N,Addison (Howard-bound),-87.653626,41.947428,Addison,Addison (Red Line),41420,1,1,0,0,0,0,0,0,0,0
|
36
|
+
30230,S,Argyle (95th-bound),-87.65853,41.973453,Argyle,Argyle (Red Line),41200,0,1,0,0,0,0,0,0,0,0
|
37
|
+
30229,N,Argyle (Howard-bound),-87.65853,41.973453,Argyle,Argyle (Red Line),41200,0,1,0,0,0,0,0,0,0,0
|
38
|
+
30127,N,Armitage (Kimball-Linden-bound),-87.652644,41.918217,Armitage,Armitage (Brown & Purple Lines),40660,1,0,0,1,0,0,1,0,0,0
|
39
|
+
30128,S,Armitage (Loop-bound),-87.652644,41.918217,Armitage,Armitage (Brown & Purple Lines),40660,1,0,0,1,0,0,1,0,0,0
|
40
|
+
30205,N,Ashland (Loop-bound),-87.665317,41.839234,Ashland,Ashland (Orange Line),41060,1,0,0,0,0,0,0,0,0,1
|
41
|
+
30206,S,Ashland (Midway-bound),-87.665317,41.839234,Ashland,Ashland (Orange Line),41060,1,0,0,0,0,0,0,0,0,1
|
42
|
+
30032,E,Ashland (Harlem-54th/Cermak-bound),-87.666969,41.885269,Ashland,Ashland (Green & Pink Lines),40170,1,0,0,0,1,0,0,0,1,0
|
43
|
+
30033,W,Ashland (Loop-63rd-bound),-87.666969,41.885269,Ashland,Ashland (Green & Pink Lines),40170,1,0,0,0,1,0,0,0,1,0
|
44
|
+
30056,E,Ashland/63rd (Harlem-bound),-87.663766,41.77886,Ashland/63rd,Ashland/63rd (Green Line),40290,1,0,0,0,1,0,0,0,0,0
|
45
|
+
30057,W,Ashland/63rd (Terminal arrival),-87.663766,41.77886,Ashland/63rd,Ashland/63rd (Green Line),40290,1,0,0,0,1,0,0,0,0,0
|
46
|
+
30002,W,Austin (Forest Pk-bound),-87.776812,41.870851,Austin,Austin (Blue Line),40010,0,0,1,0,0,0,0,0,0,0
|
47
|
+
30001,E,Austin (O'Hare-bound),-87.776812,41.870851,Austin,Austin (Blue Line),40010,0,0,1,0,0,0,0,0,0,0
|
48
|
+
30243,E,Austin (63rd-bound),-87.774135,41.887293,Austin,Austin (Green Line),41260,0,0,0,0,1,0,0,0,0,0
|
49
|
+
30244,W,Austin (Harlem-bound),-87.774135,41.887293,Austin,Austin (Green Line),41260,0,0,0,0,1,0,0,0,0,0
|
50
|
+
30013,S,Belmont (O'Hare Branch) (Forest Pk-bound),-87.712359,41.938132,Belmont,Belmont (Blue Line),40060,0,0,1,0,0,0,0,0,0,0
|
51
|
+
30012,N,Belmont (O'Hare Branch) (O'Hare-bound),-87.712359,41.938132,Belmont,Belmont (Blue Line),40060,0,0,1,0,0,0,0,0,0,0
|
52
|
+
30256,S,Belmont (95th-bound),-87.65338,41.939751,Belmont,"Belmont (Red, Brown & Purple Lines)",41320,1,1,0,0,0,0,0,0,0,0
|
53
|
+
30255,N,Belmont (Howard-bound),-87.65338,41.939751,Belmont,"Belmont (Red, Brown & Purple Lines)",41320,1,1,0,0,0,0,0,0,0,0
|
54
|
+
30257,N,Belmont (Kimball-Linden-bound),-87.65338,41.939751,Belmont,"Belmont (Red, Brown & Purple Lines)",41320,1,0,0,1,0,0,1,0,0,0
|
55
|
+
30258,S,Belmont (Loop-bound),-87.65338,41.939751,Belmont,"Belmont (Red, Brown & Purple Lines)",41320,1,0,0,1,0,0,1,0,0,0
|
56
|
+
30067,S,Berwyn (95th-bound),-87.658668,41.977984,Berwyn,Berwyn (Red Line),40340,0,1,0,0,0,0,0,0,0,0
|
57
|
+
30066,N,Berwyn (Howard-bound),-87.658668,41.977984,Berwyn,Berwyn (Red Line),40340,0,1,0,0,0,0,0,0,0,0
|
58
|
+
30268,S,Bryn Mawr (95th-bound),-87.65884,41.983504,Bryn Mawr,Bryn Mawr (Red Line),41380,0,1,0,0,0,0,0,0,0,0
|
59
|
+
30267,N,Bryn Mawr (Howard-bound),-87.65884,41.983504,Bryn Mawr,Bryn Mawr (Red Line),41380,0,1,0,0,0,0,0,0,0,0
|
60
|
+
30087,W,California (54th/Cermak-bound),-87.694774,41.854109,California,California (Pink Line),40440,1,0,0,0,0,0,0,0,1,0
|
61
|
+
30086,E,California (Loop-bound),-87.694774,41.854109,California,California (Pink Line),40440,1,0,0,0,0,0,0,0,1,0
|
62
|
+
30112,S,California/Milwaukee (Forest Pk-bound),-87.69689,41.921939,California,California (Blue Line),40570,0,0,1,0,0,0,0,0,0,0
|
63
|
+
30265,E,California (63rd-bound),-87.696234,41.88422,California,California (Green Line),41360,1,0,0,0,1,0,0,0,0,0
|
64
|
+
30266,W,California (Harlem-bound),-87.696234,41.88422,California,California (Green Line),41360,1,0,0,0,1,0,0,0,0,0
|
65
|
+
30111,N,California/Milwaukee (O'Hare-bound),-87.69689,41.921939,California,California (Blue Line),40570,0,0,1,0,0,0,0,0,0,0
|
66
|
+
30242,S,Central-Evanston (Howard-Loop-bound),-87.685617,42.063987,Central,Central (Purple Line),41250,0,0,0,0,0,1,1,0,0,0
|
67
|
+
30241,N,Central-Evanston (Linden-bound),-87.685617,42.063987,Central,Central (Purple Line),41250,0,0,0,0,0,1,1,0,0,0
|
68
|
+
30054,E,Central (63rd-bound),-87.76565,41.887389,Central,Central (Green Line),40280,1,0,0,0,1,0,0,0,0,0
|
69
|
+
30055,W,Central (Harlem-bound),-87.76565,41.887389,Central,Central (Green Line),40280,1,0,0,0,1,0,0,0,0,0
|
70
|
+
30152,W,Central Park (54th/Cermak-bound),-87.714842,41.853839,Central Park,Central Park (Pink Line),40780,1,0,0,0,0,0,0,0,1,0
|
71
|
+
30151,E,Central Park (Loop-bound),-87.714842,41.853839,Central Park,Central Park (Pink Line),40780,1,0,0,0,0,0,0,0,1,0
|
72
|
+
30194,S,Cermak-Chinatown (95th-bound),-87.630968,41.853206,Cermak-Chinatown,Cermak-Chinatown (Red Line),41000,1,1,0,0,0,0,0,0,0,0
|
73
|
+
30193,N,Cermak-Chinatown (Howard-bound),-87.630968,41.853206,Cermak-Chinatown,Cermak-Chinatown (Red Line),41000,1,1,0,0,0,0,0,0,0,0
|
74
|
+
30272,S,Chicago/Milwaukee (Forest Pk-bound),-87.655214,41.896075,Chicago,Chicago (Blue Line),41410,0,0,1,0,0,0,0,0,0,0
|
75
|
+
30271,N,Chicago/Milwaukee (O'Hare-bound),-87.655214,41.896075,Chicago,Chicago (Blue Line),41410,0,0,1,0,0,0,0,0,0,0
|
76
|
+
30137,N,Chicago/Franklin (Kimball-Linden-bound),-87.635924,41.89681,Chicago,Chicago (Brown & Purple Lines),40710,1,0,0,1,0,0,1,0,0,0
|
77
|
+
30138,S,Chicago/Franklin (Loop-bound),-87.635924,41.89681,Chicago,Chicago (Brown & Purple Lines),40710,1,0,0,1,0,0,1,0,0,0
|
78
|
+
30280,S,Chicago/State (95th-bound),-87.628176,41.896671,Chicago,Chicago (Red Line),41450,1,1,0,0,0,0,0,0,0,0
|
79
|
+
30279,N,Chicago/State (Howard-bound),-87.628176,41.896671,Chicago,Chicago (Red Line),41450,1,1,0,0,0,0,0,0,0,0
|
80
|
+
30083,W,Cicero (54th/Cermak-bound),-87.745336,41.85182,Cicero,Cicero (Pink Line),40420,1,0,0,0,0,0,0,0,1,0
|
81
|
+
30082,E,Cicero (Loop-bound),-87.745336,41.85182,Cicero,Cicero (Pink Line),40420,1,0,0,0,0,0,0,0,1,0
|
82
|
+
30188,W,Cicero (Forest Pk-bound),-87.745154,41.871574,Cicero,Cicero (Blue Line),40970,0,0,1,0,0,0,0,0,0,0
|
83
|
+
30187,E,Cicero (O'Hare-bound),-87.745154,41.871574,Cicero,Cicero (Blue Line),40970,0,0,1,0,0,0,0,0,0,0
|
84
|
+
30094,E,Cicero (63rd-bound),-87.744698,41.886519,Cicero,Cicero (Green Line),40480,1,0,0,0,1,0,0,0,0,0
|
85
|
+
30009,W,Cicero (Harlem-bound),-87.744698,41.886519,Cicero,Cicero (Green Line),40480,1,0,0,0,1,0,0,0,0,0
|
86
|
+
30122,S,Clark/Division (95th-bound),-87.631412,41.90392,Clark/Division,Clark/Division (Red Line),40630,0,1,0,0,0,0,0,0,0,0
|
87
|
+
30121,N,Clark/Division (Howard-bound),-87.631412,41.90392,Clark/Division,Clark/Division (Red Line),40630,0,1,0,0,0,0,0,0,0,0
|
88
|
+
30074,E,Clark/Lake (Inner Loop),-87.630886,41.885737,Clark/Lake,"Clark/Lake (Blue, Brown, Green, Orange, Purple & Pink Lines)",40380,1,0,0,0,1,0,1,0,1,1
|
89
|
+
30075,W,Clark/Lake (Outer Loop),-87.630886,41.885737,Clark/Lake,"Clark/Lake (Blue, Brown, Green, Orange, Purple & Pink Lines)",40380,1,0,0,1,1,0,0,0,0,0
|
90
|
+
30374,S,Clark/Lake (Forest Pk-bound),-87.630886,41.885737,Clark/Lake,"Clark/Lake (Blue, Brown, Green, Orange, Purple & Pink Lines)",40380,1,0,1,0,0,0,0,0,0,0
|
91
|
+
30375,N,Clark/Lake (O'Hare-bound),-87.630886,41.885737,Clark/Lake,"Clark/Lake (Blue, Brown, Green, Orange, Purple & Pink Lines)",40380,1,0,1,0,0,0,0,0,0,0
|
92
|
+
30085,W,Clinton (Forest Pk-bound),-87.640984,41.875539,Clinton,Clinton (Blue Line),40430,0,0,1,0,0,0,0,0,0,0
|
93
|
+
30084,E,Clinton (O'Hare-bound),-87.640984,41.875539,Clinton,Clinton (Blue Line),40430,0,0,1,0,0,0,0,0,0,0
|
94
|
+
30222,W,Clinton (Harlem-54th/Cermak-bound),-87.641782,41.885678,Clinton,Clinton (Green & Pink Lines),41160,1,0,0,0,1,0,0,0,1,0
|
95
|
+
30221,E,Clinton (Loop-63rd-bound),-87.641782,41.885678,Clinton,Clinton (Green & Pink Lines),41160,1,0,0,0,1,0,0,0,1,0
|
96
|
+
30291,E,Conservatory (63rd-bound),-87.716523,41.884904,Conservatory,Conservatory (Green Line),41670,1,0,0,0,1,0,0,0,0,0
|
97
|
+
30292,W,Conservatory (Harlem-bound),-87.716523,41.884904,Conservatory,Conservatory (Green Line),41670,1,0,0,0,1,0,0,0,0,0
|
98
|
+
30139,E,Cottage Grove (Terminal arrival),-87.605857,41.780309,Cottage Grove,Cottage Grove (Green Line),40720,1,0,0,0,1,0,0,0,0,0
|
99
|
+
30140,W,East 63rd-Cottage Grove (Harlem-bound),-87.605857,41.780309,Cottage Grove,Cottage Grove (Green Line),40720,1,0,0,0,1,0,0,0,0,0
|
100
|
+
30045,S,Cumberland (Forest Pk-bound),-87.838028,41.984246,Cumberland,Cumberland (Blue Line),40230,1,0,1,0,0,0,0,0,0,0
|
101
|
+
30044,N,Cumberland (O'Hare-bound),-87.838028,41.984246,Cumberland,Cumberland (Blue Line),40230,1,0,1,0,0,0,0,0,0,0
|
102
|
+
30041,W,Damen (54th/Cermak-bound),-87.675975,41.854517,Damen,Damen (Pink Line),40210,1,0,0,0,0,0,0,0,1,0
|
103
|
+
30040,E,Damen (Loop-bound),-87.675975,41.854517,Damen,Damen (Pink Line),40210,1,0,0,0,0,0,0,0,1,0
|
104
|
+
30116,S,Damen/Milwaukee (Forest Pk-bound),-87.677437,41.909744,Damen,Damen (Blue Line),40590,0,0,1,0,0,0,0,0,0,0
|
105
|
+
30115,N,Damen/Milwaukee (O'Hare-bound),-87.677437,41.909744,Damen,Damen (Blue Line),40590,0,0,1,0,0,0,0,0,0,0
|
106
|
+
30018,N,Damen (Kimball-bound),-87.678639,41.966286,Damen,Damen (Brown Line),40090,1,0,0,1,0,0,0,0,0,0
|
107
|
+
30019,S,Damen (Loop-bound),-87.678639,41.966286,Damen,Damen (Brown Line),40090,1,0,0,1,0,0,0,0,0,0
|
108
|
+
30011,S,Davis (Howard-Loop-bound),-87.683543,42.04771,Davis,Davis (Purple Line),40050,1,0,0,0,0,1,1,0,0,0
|
109
|
+
30010,N,Davis (Linden-bound),-87.683543,42.04771,Davis,Davis (Purple Line),40050,1,0,0,0,0,1,1,0,0,0
|
110
|
+
30134,S,Dempster (Howard-Loop-bound),-87.681602,42.041655,Dempster,Dempster (Purple Line),40690,0,0,0,0,0,1,1,0,0,0
|
111
|
+
30133,N,Dempster (Linden-bound),-87.681602,42.041655,Dempster,Dempster (Purple Line),40690,0,0,0,0,0,1,1,0,0,0
|
112
|
+
30103,N,Diversey (Kimball-Linden-bound),-87.653131,41.932732,Diversey,Diversey (Brown & Purple Lines),40530,1,0,0,1,0,0,1,0,0,0
|
113
|
+
30104,S,Diversey (Loop-bound),-87.653131,41.932732,Diversey,Diversey (Brown & Purple Lines),40530,1,0,0,1,0,0,1,0,0,0
|
114
|
+
30063,S,Division/Milwaukee (Forest Pk-bound),-87.666496,41.903355,Division,Division (Blue Line),40320,0,0,1,0,0,0,0,0,0,0
|
115
|
+
30062,N,Division/Milwaukee (O'Hare-bound),-87.666496,41.903355,Division,Division (Blue Line),40320,0,0,1,0,0,0,0,0,0,0
|
116
|
+
30076,E,Forest Park (O'Hare-bound),-87.817318,41.874257,Forest Park,Forest Park (Blue Line),40390,1,0,1,0,0,0,0,0,0,0
|
117
|
+
30077,W,Forest Park (Terminal Arrival),-87.817318,41.874257,Forest Park,Forest Park (Blue Line),40390,1,0,1,0,0,0,0,0,0,0
|
118
|
+
30102,S,Foster (Howard-Loop-bound),-87.68356,42.05416,Foster,Foster (Purple Line),40520,0,0,0,0,0,1,1,0,0,0
|
119
|
+
30101,N,Foster (Linden-bound),-87.68356,42.05416,Foster,Foster (Purple Line),40520,0,0,0,0,0,1,1,0,0,0
|
120
|
+
30167,N,Francisco (Kimball-bound),-87.701644,41.966046,Francisco,Francisco (Brown Line),40870,1,0,0,1,0,0,0,0,0,0
|
121
|
+
30168,S,Francisco (Loop-bound),-87.701644,41.966046,Francisco,Francisco (Brown Line),40870,1,0,0,1,0,0,0,0,0,0
|
122
|
+
30234,S,Fullerton (95th-bound),-87.652866,41.925051,Fullerton,"Fullerton (Red, Brown & Purple Lines)",41220,1,1,0,0,0,0,0,0,0,0
|
123
|
+
30233,N,Fullerton (Howard-bound),-87.652866,41.925051,Fullerton,"Fullerton (Red, Brown & Purple Lines)",41220,1,1,0,0,0,0,0,0,0,0
|
124
|
+
30235,N,Fullerton (Kimball-Linden-bound),-87.652866,41.925051,Fullerton,"Fullerton (Red, Brown & Purple Lines)",41220,1,0,0,1,0,0,1,0,0,0
|
125
|
+
30236,S,Fullerton (Loop-bound),-87.652866,41.925051,Fullerton,"Fullerton (Red, Brown & Purple Lines)",41220,1,0,0,1,0,0,1,0,0,0
|
126
|
+
30100,S,Garfield (63rd-bound),-87.618327,41.795172,Garfield,Garfield (Green Line),40510,1,0,0,0,1,0,0,0,0,0
|
127
|
+
30099,N,Garfield (Harlem-bound),-87.618327,41.795172,Garfield,Garfield (Green Line),40510,1,0,0,0,1,0,0,0,0,0
|
128
|
+
30224,S,Garfield-Dan Ryan (95th-bound),-87.631157,41.79542,Garfield,Garfield (Red Line),41170,0,1,0,0,0,0,0,0,0,0
|
129
|
+
30223,N,Garfield-Dan Ryan (Howard-bound),-87.631157,41.79542,Garfield,Garfield (Red Line),41170,0,1,0,0,0,0,0,0,0,0
|
130
|
+
30096,S,Grand/Milwaukee (Forest Pk-bound),-87.647578,41.891189,Grand,Grand (Blue Line),40490,0,0,1,0,0,0,0,0,0,0
|
131
|
+
30095,N,Grand/Milwaukee (O'Hare-bound),-87.647578,41.891189,Grand,Grand (Blue Line),40490,0,0,1,0,0,0,0,0,0,0
|
132
|
+
30065,S,Grand/State (95th-bound),-87.628021,41.891665,Grand,Grand (Red Line),40330,1,1,0,0,0,0,0,0,0,0
|
133
|
+
30064,N,Grand/State (Howard-bound),-87.628021,41.891665,Grand,Grand (Red Line),40330,1,1,0,0,0,0,0,0,0,0
|
134
|
+
30148,S,Granville (95th-bound),-87.659202,41.993664,Granville,Granville (Red Line),40760,1,1,0,0,0,0,0,0,0,0
|
135
|
+
30147,N,Granville (Howard-bound),-87.659202,41.993664,Granville,Granville (Red Line),40760,1,1,0,0,0,0,0,0,0,0
|
136
|
+
30215,N,Halsted (Loop-bound),-87.648088,41.84678,Halsted,Halsted (Orange Line),41130,1,0,0,0,0,0,0,0,0,1
|
137
|
+
30216,S,Halsted (Midway-bound),-87.648088,41.84678,Halsted,Halsted (Orange Line),41130,1,0,0,0,0,0,0,0,0,1
|
138
|
+
30184,W,Halsted/63rd (Ashland-bound),-87.644244,41.778943,Halsted,Halsted (Green Line),40940,1,0,0,0,1,0,0,0,0,0
|
139
|
+
30183,E,Halsted/63rd (Harlem-bound),-87.644244,41.778943,Halsted,Halsted (Green Line),40940,1,0,0,0,1,0,0,0,0,0
|
140
|
+
30190,W,Harlem (Forest Pk-bound),-87.806961,41.87349,Harlem,Harlem (Blue Line - Forest Park Branch),40980,0,0,1,0,0,0,0,0,0,0
|
141
|
+
30189,E,Harlem (O'Hare-bound),-87.806961,41.87349,Harlem,Harlem (Blue Line - Forest Park Branch),40980,0,0,1,0,0,0,0,0,0,0
|
142
|
+
30146,S,Harlem (O'Hare Branch) (Forest Pk-bound),-87.8089,41.98227,Harlem,Harlem (Blue Line - O'Hare Branch),40750,1,0,1,0,0,0,0,0,0,0
|
143
|
+
30145,N,Harlem (O'Hare Branch) (O'Hare-bound),-87.8089,41.98227,Harlem,Harlem (Blue Line - O'Hare Branch),40750,1,0,1,0,0,0,0,0,0,0
|
144
|
+
30004,W,Harlem (Terminal arrival),-87.803176,41.886848,Harlem/Lake,Harlem/Lake (Green Line),40020,1,0,0,0,1,0,0,0,0,0
|
145
|
+
30003,E,Harlem (63rd-bound),-87.803176,41.886848,Harlem/Lake,Harlem/Lake (Green Line),40020,1,0,0,0,1,0,0,0,0,0
|
146
|
+
30166,W,Library (Inner Loop),-87.628196,41.876862,Harold Washington Library-State/Van Buren,"Harold Washington Library-State/Van Buren (Brown, Orange, Purple & Pink Lines)",40850,1,0,0,0,0,0,1,0,1,1
|
147
|
+
30165,E,Library (Outer Loop),-87.628196,41.876862,Harold Washington Library-State/Van Buren,"Harold Washington Library-State/Van Buren (Brown, Orange, Purple & Pink Lines)",40850,1,0,0,1,0,0,0,0,0,0
|
148
|
+
30286,S,Harrison (95th-bound),-87.627479,41.874039,Harrison,Harrison (Red Line),41490,0,1,0,0,0,0,0,0,0,0
|
149
|
+
30285,N,Harrison (Howard-bound),-87.627479,41.874039,Harrison,Harrison (Red Line),41490,0,1,0,0,0,0,0,0,0,0
|
150
|
+
30175,N,"Howard (NB) (Linden, Skokie-bound)",-87.672892,42.019063,Howard,"Howard (Red, Purple & Yellow Lines)",40900,1,0,0,0,0,1,1,1,0,0
|
151
|
+
30176,S,Howard (Terminal arrival),-87.672892,42.019063,Howard,"Howard (Red, Purple & Yellow Lines)",40900,1,0,0,0,0,1,1,1,0,0
|
152
|
+
30173,N,Howard (Terminal arrival),-87.672892,42.019063,Howard,"Howard (Red, Purple & Yellow Lines)",40900,1,1,0,0,0,0,0,0,0,0
|
153
|
+
30174,S,Howard (95th-Bound),-87.672892,42.019063,Howard,"Howard (Red, Purple & Yellow Lines)",40900,1,1,0,0,0,0,0,0,0,0
|
154
|
+
30158,W,Illinois Medical District (Forest Pk-bound),-87.673932,41.875706,Illinois Medical District,Illinois Medical District (Blue Line),40810,1,0,1,0,0,0,0,0,0,0
|
155
|
+
30157,E,Illinois Medical District (O'Hare-bound),-87.673932,41.875706,Illinois Medical District,Illinois Medical District (Blue Line),40810,1,0,1,0,0,0,0,0,0,0
|
156
|
+
30059,S,Indiana (63rd-bound),-87.621371,41.821732,Indiana,Indiana (Green Line),40300,1,0,0,0,1,0,0,0,0,0
|
157
|
+
30058,N,Indiana (Harlem-bound),-87.621371,41.821732,Indiana,Indiana (Green Line),40300,1,0,0,0,1,0,0,0,0,0
|
158
|
+
30108,S,Irving Park (O'Hare Branch) (Forest Pk-bound),-87.729229,41.952925,Irving Park,Irving Park (Blue Line),40550,0,0,1,0,0,0,0,0,0,0
|
159
|
+
30107,N,Irving Park (O'Hare Branch) (O'Hare-bound),-87.729229,41.952925,Irving Park,Irving Park (Blue Line),40550,0,0,1,0,0,0,0,0,0,0
|
160
|
+
30281,N,Irving Park (Kimball-bound),-87.674868,41.954521,Irving Park,Irving Park (Brown Line),41460,1,0,0,1,0,0,0,0,0,0
|
161
|
+
30282,S,Irving Park (Loop-bound),-87.674868,41.954521,Irving Park,Irving Park (Brown Line),41460,1,0,0,1,0,0,0,0,0,0
|
162
|
+
30015,S,Jackson/Dearborn (Forest Pk-bound),-87.629296,41.878183,Jackson,Jackson (Blue Line),40070,1,0,1,0,0,0,0,0,0,0
|
163
|
+
30014,N,Jackson/Dearborn (O'Hare-bound),-87.629296,41.878183,Jackson,Jackson (Blue Line),40070,1,0,1,0,0,0,0,0,0,0
|
164
|
+
30110,S,Jackson/State (95th-bound),-87.627596,41.878153,Jackson,Jackson (Red Line),40560,1,1,0,0,0,0,0,0,0,0
|
165
|
+
30109,N,Jackson/State (Howard-bound),-87.627596,41.878153,Jackson,Jackson (Red Line),40560,1,1,0,0,0,0,0,0,0,0
|
166
|
+
30228,S,Jarvis (95th-bound),-87.669092,42.015876,Jarvis,Jarvis (Red Line),41190,0,1,0,0,0,0,0,0,0,0
|
167
|
+
30227,N,Jarvis (Howard-bound),-87.669092,42.015876,Jarvis,Jarvis (Red Line),41190,0,1,0,0,0,0,0,0,0,0
|
168
|
+
30248,S,Jefferson Park (Forest Pk-bound),-87.760892,41.970634,Jefferson Park,Jefferson Park (Blue Line),41280,1,0,1,0,0,0,0,0,0,0
|
169
|
+
30247,N,Jefferson Park (O'Hare-bound),-87.760892,41.970634,Jefferson Park,Jefferson Park (Blue Line),41280,1,0,1,0,0,0,0,0,0,0
|
170
|
+
30219,N,Kedzie (Loop-bound),-87.704406,41.804236,Kedzie,Kedzie (Orange Line),41150,1,0,0,0,0,0,0,0,0,1
|
171
|
+
30220,S,Kedzie (Midway-bound),-87.704406,41.804236,Kedzie,Kedzie (Orange Line),41150,1,0,0,0,0,0,0,0,0,1
|
172
|
+
30202,W,Kedzie (54th/Cermak-bound),-87.705408,41.853964,Kedzie,Kedzie (Pink Line),41040,1,0,0,0,0,0,0,0,1,0
|
173
|
+
30201,E,Kedzie (Loop-bound),-87.705408,41.853964,Kedzie,Kedzie (Pink Line),41040,1,0,0,0,0,0,0,0,1,0
|
174
|
+
30225,N,Kedzie (Kimball-bound),-87.708821,41.965996,Kedzie,Kedzie (Brown Line),41180,1,0,0,1,0,0,0,0,0,0
|
175
|
+
30226,S,Kedzie (Loop-bound),-87.708821,41.965996,Kedzie,Kedzie (Brown Line),41180,1,0,0,1,0,0,0,0,0,0
|
176
|
+
30207,E,Kedzie (63rd-bound),-87.706155,41.884321,Kedzie,Kedzie (Green Line),41070,1,0,0,0,1,0,0,0,0,0
|
177
|
+
30208,W,Kedzie (Harlem-bound),-87.706155,41.884321,Kedzie,Kedzie (Green Line),41070,1,0,0,0,1,0,0,0,0,0
|
178
|
+
30049,W,Kedzie-Homan (Forest Pk-bound),-87.70604,41.874341,Kedzie-Homan,Kedzie-Homan (Blue Line),40250,1,0,1,0,0,0,0,0,0,0
|
179
|
+
30048,E,Kedzie-Homan (O'Hare-bound),-87.70604,41.874341,Kedzie-Homan,Kedzie-Homan (Blue Line),40250,1,0,1,0,0,0,0,0,0,0
|
180
|
+
30250,S,Kimball (Loop-bound),-87.713065,41.967901,Kimball,Kimball (Brown Line),41290,1,0,0,1,0,0,0,0,0,0
|
181
|
+
30249,N,Kimball (Terminal arrival),-87.713065,41.967901,Kimball,Kimball (Brown Line),41290,1,0,0,1,0,0,0,0,0,0
|
182
|
+
30217,E,King Drive (Cottage Grove-bound),-87.615546,41.78013,King Drive,King Drive (Green Line),41140,1,0,0,0,1,0,0,0,0,0
|
183
|
+
30218,W,King Drive (Harlem-bound),-87.615546,41.78013,King Drive,King Drive (Green Line),41140,1,0,0,0,1,0,0,0,0,0
|
184
|
+
30118,W,Kostner (54th/Cermak-bound),-87.733258,41.853751,Kostner,Kostner (Pink Line),40600,1,0,0,0,0,0,0,0,1,0
|
185
|
+
30117,E,Kostner (Loop-bound),-87.733258,41.853751,Kostner,Kostner (Pink Line),40600,1,0,0,0,0,0,0,0,1,0
|
186
|
+
30290,S,Lake/State (95th-bound),-87.627813,41.884809,Lake,Lake (Red Line),41660,1,1,0,0,0,0,0,0,0,0
|
187
|
+
30289,N,Lake/State (Howard-bound),-87.627813,41.884809,Lake,Lake (Red Line),41660,1,1,0,0,0,0,0,0,0,0
|
188
|
+
30135,E,Laramie (63rd-bound),-87.754986,41.887163,Laramie,Laramie (Green Line),40700,1,0,0,0,1,0,0,0,0,0
|
189
|
+
30136,W,Laramie (Harlem-bound),-87.754986,41.887163,Laramie,Laramie (Green Line),40700,1,0,0,0,1,0,0,0,0,0
|
190
|
+
30262,W,LaSalle (Forest Pk-bound),-87.631722,41.875568,LaSalle,LaSalle (Blue Line),41340,0,0,1,0,0,0,0,0,0,0
|
191
|
+
30261,E,LaSalle (O'Hare-bound),-87.631722,41.875568,LaSalle,LaSalle (Blue Line),41340,0,0,1,0,0,0,0,0,0,0
|
192
|
+
30031,W,LaSalle/Van Buren (Inner Loop),-87.631739,41.8768,LaSalle/Van Buren,"LaSalle/Van Buren (Brown, Orange, Purple & Pink Lines)",40160,0,0,0,0,0,0,1,0,1,1
|
193
|
+
30030,E,LaSalle/Van Buren (Outer Loop),-87.631739,41.8768,LaSalle/Van Buren,"LaSalle/Van Buren (Brown, Orange, Purple & Pink Lines)",40160,0,0,0,1,0,0,0,0,0,0
|
194
|
+
30150,S,Lawrence (95th-bound),-87.658493,41.969139,Lawrence,Lawrence (Red Line),40770,0,1,0,0,0,0,0,0,0,0
|
195
|
+
30149,N,Lawrence (Howard-bound),-87.658493,41.969139,Lawrence,Lawrence (Red Line),40770,0,1,0,0,0,0,0,0,0,0
|
196
|
+
30204,S,Linden (Howard-Loop-bound),-87.69073,42.073153,Linden,Linden (Purple Line),41050,1,0,0,0,0,1,1,0,0,0
|
197
|
+
30203,N,Linden (Linden-bound),-87.69073,42.073153,Linden,Linden (Purple Line),41050,1,0,0,0,0,1,1,0,0,0
|
198
|
+
30198,S,Logan Square (Forest Pk-bound),-87.708541,41.929728,Logan Square,Logan Square (Blue Line),41020,1,0,1,0,0,0,0,0,0,0
|
199
|
+
30197,N,Logan Square (O'Hare-bound),-87.708541,41.929728,Logan Square,Logan Square (Blue Line),41020,1,0,1,0,0,0,0,0,0,0
|
200
|
+
30252,S,Loyola (95th-bound),-87.661061,42.001073,Loyola,Loyola (Red Line),41300,1,1,0,0,0,0,0,0,0,0
|
201
|
+
30251,N,Loyola (Howard-bound),-87.661061,42.001073,Loyola,Loyola (Red Line),41300,1,1,0,0,0,0,0,0,0,0
|
202
|
+
30124,S,Madison/Wabash (Inner Loop),-87.626098,41.882023,Madison/Wabash,"Madison/Wabash (Brown, Green, Orange, Pink & Purple Lines)",40640,0,0,0,0,1,0,1,0,1,1
|
203
|
+
30123,N,Madison/Wabash (Outer Loop),-87.626098,41.882023,Madison/Wabash,"Madison/Wabash (Brown, Green, Orange, Pink & Purple Lines)",40640,0,0,0,1,1,0,0,0,0,0
|
204
|
+
30053,S,Main (Howard-Loop-bound),-87.679538,42.033456,Main,Main (Purple Line),40270,0,0,0,0,0,1,1,0,0,0
|
205
|
+
30052,N,Main (Linden-bound),-87.679538,42.033456,Main,Main (Purple Line),40270,0,0,0,0,0,1,1,0,0,0
|
206
|
+
30090,N,Merchandise Mart (Kimball-Linden-bound),-87.633924,41.888969,Merchandise Mart,Merchandise Mart (Brown & Purple Lines),40460,1,0,0,1,0,0,1,0,0,0
|
207
|
+
30091,S,Merchandise Mart (Loop-bound),-87.633924,41.888969,Merchandise Mart,Merchandise Mart (Brown & Purple Lines),40460,1,0,0,1,0,0,1,0,0,0
|
208
|
+
30182,S,Midway (Arrival),-87.737875,41.78661,Midway,Midway (Orange Line),40930,1,0,0,0,0,0,0,0,0,1
|
209
|
+
30181,N,Midway (Loop-bound),-87.737875,41.78661,Midway,Midway (Orange Line),40930,1,0,0,0,0,0,0,0,0,1
|
210
|
+
30154,S,Monroe/Dearborn (Forest Pk-bound),-87.629378,41.880703,Monroe,Monroe (Blue Line),40790,0,0,1,0,0,0,0,0,0,0
|
211
|
+
30153,N,Monroe/Dearborn (O'Hare-bound),-87.629378,41.880703,Monroe,Monroe (Blue Line),40790,0,0,1,0,0,0,0,0,0,0
|
212
|
+
30212,S,Monroe/State (95th-bound),-87.627696,41.880745,Monroe,Monroe (Red Line),41090,0,1,0,0,0,0,0,0,0,0
|
213
|
+
30211,N,Monroe/State (Howard-bound),-87.627696,41.880745,Monroe,Monroe (Red Line),41090,0,1,0,0,0,0,0,0,0,0
|
214
|
+
30260,S,Montrose (Forest Pk-bound),-87.743574,41.961539,Montrose,Montrose (Blue Line),41330,0,0,1,0,0,0,0,0,0,0
|
215
|
+
30259,N,Montrose (O'Hare-bound),-87.743574,41.961539,Montrose,Montrose (Blue Line),41330,0,0,1,0,0,0,0,0,0,0
|
216
|
+
30287,N,Montrose (Kimball-bound),-87.675047,41.961756,Montrose,Montrose (Brown Line),41500,1,0,0,1,0,0,0,0,0,0
|
217
|
+
30288,S,Montrose (Loop-bound),-87.675047,41.961756,Montrose,Montrose (Brown Line),41500,1,0,0,1,0,0,0,0,0,0
|
218
|
+
30296,W,Morgan (Harlem-54th/Cermak-bound),-87.652193,41.885586,Morgan,Morgan (Green & Pink Lines),41510,1,0,0,0,1,0,0,0,1,0
|
219
|
+
30295,E,Morgan (Loop-63rd-bound),-87.652193,41.885586,Morgan,Morgan (Green & Pink Lines),41510,1,0,0,0,1,0,0,0,1,0
|
220
|
+
30021,S,Morse (95th-bound),-87.665909,42.008362,Morse,Morse (Red Line),40100,0,1,0,0,0,0,0,0,0,0
|
221
|
+
30020,N,Morse (Howard-bound),-87.665909,42.008362,Morse,Morse (Red Line),40100,0,1,0,0,0,0,0,0,0,0
|
222
|
+
30126,S,North/Clybourn (95th-bound),-87.649177,41.910655,North/Clybourn,North/Clybourn (Red Line),40650,0,1,0,0,0,0,0,0,0,0
|
223
|
+
30125,N,North/Clybourn (Howard-bound),-87.649177,41.910655,North/Clybourn,North/Clybourn (Red Line),40650,0,1,0,0,0,0,0,0,0,0
|
224
|
+
30079,S,Noyes (Howard-Loop-bound),-87.683337,42.058282,Noyes,Noyes (Purple Line),40400,0,0,0,0,0,1,1,0,0,0
|
225
|
+
30078,N,Noyes (Linden-bound),-87.683337,42.058282,Noyes,Noyes (Purple Line),40400,0,0,0,0,0,1,1,0,0,0
|
226
|
+
30035,W,Oak Park (Forest Pk-bound),-87.791602,41.872108,Oak Park,Oak Park (Blue Line),40180,0,0,1,0,0,0,0,0,0,0
|
227
|
+
30034,E,Oak Park (O'Hare-bound),-87.791602,41.872108,Oak Park,Oak Park (Blue Line),40180,0,0,1,0,0,0,0,0,0,0
|
228
|
+
30263,E,Oak Park (63rd-bound),-87.793783,41.886988,Oak Park,Oak Park (Green Line),41350,0,0,0,0,1,0,0,0,0,0
|
229
|
+
30264,W,Oak Park (Harlem-bound),-87.793783,41.886988,Oak Park,Oak Park (Green Line),41350,0,0,0,0,1,0,0,0,0,0
|
230
|
+
30297,N,Oakton (Dempster-Skokie-bound),-87.74722084,42.02624348,Oakton-Skokie,Oakton-Skokie (Yellow Line),41680,1,0,0,0,0,0,0,1,0,0
|
231
|
+
30298,S,Oakton (Howard-bound),-87.74722084,42.02624348,Oakton-Skokie,Oakton-Skokie (Yellow Line),41680,1,0,0,0,0,0,0,1,0,0
|
232
|
+
30172,S,O'Hare Airport (Forest Pk-bound),-87.90422307,41.97766526,O'Hare,O'Hare (Blue Line),40890,1,0,1,0,0,0,0,0,0,0
|
233
|
+
30171,N,O'Hare Airport (Terminal Arrival),-87.90422307,41.97766526,O'Hare,O'Hare (Blue Line),40890,1,0,1,0,0,0,0,0,0,0
|
234
|
+
30253,N,Paulina (Kimball-bound),-87.670907,41.943623,Paulina,Paulina (Brown Line),41310,1,0,0,1,0,0,0,0,0,0
|
235
|
+
30254,S,Paulina (Loop-bound),-87.670907,41.943623,Paulina,Paulina (Brown Line),41310,1,0,0,1,0,0,0,0,0,0
|
236
|
+
30200,W,Polk (54th/Cermak-bound),-87.66953,41.871551,Polk,Polk (Pink Line),41030,1,0,0,0,0,0,0,0,1,0
|
237
|
+
30199,E,Polk (Loop-bound),-87.66953,41.871551,Polk,Polk (Pink Line),41030,1,0,0,0,0,0,0,0,1,0
|
238
|
+
30185,N,Pulaski (Loop-bound),-87.724493,41.799756,Pulaski,Pulaski (Orange Line),40960,1,0,0,0,0,0,0,0,0,1
|
239
|
+
30186,S,Pulaski (Midway-bound),-87.724493,41.799756,Pulaski,Pulaski (Orange Line),40960,1,0,0,0,0,0,0,0,0,1
|
240
|
+
30029,W,Pulaski (54th/Cermak-bound),-87.724311,41.853732,Pulaski,Pulaski (Pink Line),40150,1,0,0,0,0,0,0,0,1,0
|
241
|
+
30028,E,Pulaski (Loop-bound),-87.724311,41.853732,Pulaski,Pulaski (Pink Line),40150,1,0,0,0,0,0,0,0,1,0
|
242
|
+
30180,W,Pulaski (Forest Pk-bound),-87.725663,41.873797,Pulaski,Pulaski (Blue Line),40920,0,0,1,0,0,0,0,0,0,0
|
243
|
+
30179,E,Pulaski (O'Hare-bound),-87.725663,41.873797,Pulaski,Pulaski (Blue Line),40920,0,0,1,0,0,0,0,0,0,0
|
244
|
+
30005,E,Pulaski (63rd-bound),-87.725404,41.885412,Pulaski,Pulaski (Green Line),40030,1,0,0,0,1,0,0,0,0,0
|
245
|
+
30006,W,Pulaski (Harlem-bound),-87.725404,41.885412,Pulaski,Pulaski (Green Line),40030,1,0,0,0,1,0,0,0,0,0
|
246
|
+
30007,N,Quincy/Wells (Inner Loop),-87.63374,41.878723,Quincy/Wells,"Quincy/Wells (Brown, Orange, Purple & Pink Lines)",40040,0,0,0,0,0,0,1,0,1,1
|
247
|
+
30008,S,Quincy/Wells (Outer Loop),-87.63374,41.878723,Quincy/Wells,"Quincy/Wells (Brown, Orange, Purple & Pink Lines)",40040,0,0,0,1,0,0,0,0,0,0
|
248
|
+
30093,W,Racine (Forest Pk-bound),-87.659458,41.87592,Racine,Racine (Blue Line),40470,0,0,1,0,0,0,0,0,0,0
|
249
|
+
30092,E,Racine (O'Hare-bound),-87.659458,41.87592,Racine,Racine (Blue Line),40470,0,0,1,0,0,0,0,0,0,0
|
250
|
+
30039,S,Randolph/Wabash (Inner Loop),-87.626149,41.884431,Randolph/Wabash,"Randolph/Wabash (Brown, Green, Orange, Pink & Purple Lines)",40200,0,0,0,0,1,0,1,0,1,1
|
251
|
+
30038,N,Randolph/Wabash (Outer Loop),-87.626149,41.884431,Randolph/Wabash,"Randolph/Wabash (Brown, Green, Orange, Pink & Purple Lines)",40200,0,0,0,1,1,0,0,0,0,0
|
252
|
+
30119,E,Ridgeland (63rd-bound),-87.783661,41.887159,Ridgeland,Ridgeland (Green Line),40610,0,0,0,0,1,0,0,0,0,0
|
253
|
+
30120,W,Ridgeland (Harlem-bound),-87.783661,41.887159,Ridgeland,Ridgeland (Green Line),40610,0,0,0,0,1,0,0,0,0,0
|
254
|
+
30195,N,Rockwell (Kimball-bound),-87.6941,41.966115,Rockwell,Rockwell (Brown Line),41010,1,0,0,1,0,0,0,0,0,0
|
255
|
+
30196,S,Rockwell (Loop-bound),-87.6941,41.966115,Rockwell,Rockwell (Brown Line),41010,1,0,0,1,0,0,0,0,0,0
|
256
|
+
30080,N,Roosevelt/Wabash (Loop-Harlem-bound),-87.62659,41.867405,Roosevelt,"Roosevelt (Red, Orange & Green Lines)",41400,1,0,0,0,1,0,0,0,0,1
|
257
|
+
30081,S,Roosevelt/Wabash (Midway-63rd-bound),-87.62659,41.867405,Roosevelt,"Roosevelt (Red, Orange & Green Lines)",41400,1,0,0,0,1,0,0,0,0,1
|
258
|
+
30269,N,Roosevelt/State (Howard-bound),-87.627402,41.867368,Roosevelt,"Roosevelt (Red, Orange & Green Lines)",41400,1,1,0,0,0,0,0,0,0,0
|
259
|
+
30270,S,Roosevelt/State (Howard-bound),-87.627402,41.867368,Roosevelt,"Roosevelt (Red, Orange & Green Lines)",41400,1,1,0,0,0,0,0,0,0,0
|
260
|
+
30160,S,Rosemont (Forest Pk-bound),-87.859388,41.983507,Rosemont,Rosemont (Blue Line),40820,1,0,1,0,0,0,0,0,0,0
|
261
|
+
30159,N,Rosemont (O'Hare-bound),-87.859388,41.983507,Rosemont,Rosemont (Blue Line),40820,1,0,1,0,0,0,0,0,0,0
|
262
|
+
30155,N,Sedgwick (Kimball-Linden-bound),-87.639302,41.910409,Sedgwick,Sedgwick (Brown & Purple Lines),40800,1,0,0,1,0,0,1,0,0,0
|
263
|
+
30156,S,Sedgwick (Loop-bound),-87.639302,41.910409,Sedgwick,Sedgwick (Brown & Purple Lines),40800,1,0,0,1,0,0,1,0,0,0
|
264
|
+
30017,S,Sheridan (95th-bound),-87.654929,41.953775,Sheridan,Sheridan (Red Line),40080,0,1,0,0,0,0,0,0,0,0
|
265
|
+
30016,N,Sheridan (Howard-bound),-87.654929,41.953775,Sheridan,Sheridan (Red Line),40080,0,1,0,0,0,0,0,0,0,0
|
266
|
+
30293,N,Sheridan (Howard-Linden-bound),-87.654929,41.953775,Sheridan,Sheridan (Red Line),40080,0,0,0,0,0,0,0,0,0,0
|
267
|
+
30294,S,Sheridan (Loop-bound),-87.654929,41.953775,Sheridan,Sheridan (Red Line),40080,0,0,0,0,0,0,0,0,0,0
|
268
|
+
30026,N,Skokie (Arrival),-87.751919,42.038951,Skokie,Dempster-Skokie (Yellow Line),40140,1,0,0,0,0,0,0,1,0,0
|
269
|
+
30027,S,Skokie (Howard-bound),-87.751919,42.038951,Skokie,Dempster-Skokie (Yellow Line),40140,1,0,0,0,0,0,0,1,0,0
|
270
|
+
30164,S,South Blvd (Howard-Loop-bound),-87.678329,42.027612,South Boulevard,South Boulevard (Purple Line),40840,0,0,0,0,0,1,1,0,0,0
|
271
|
+
30163,N,South Blvd (Linden-bound),-87.678329,42.027612,South Boulevard,South Boulevard (Purple Line),40840,0,0,0,0,0,1,1,0,0,0
|
272
|
+
30070,N,Southport (Kimball-bound),-87.663619,41.943744,Southport,Southport (Brown Line),40360,1,0,0,1,0,0,0,0,0,0
|
273
|
+
30071,S,Southport (Loop-bound),-87.663619,41.943744,Southport,Southport (Brown Line),40360,1,0,0,1,0,0,0,0,0,0
|
274
|
+
30037,S,Sox-35th (95th-bound),-87.630636,41.831191,Sox-35th,Sox-35th (Red Line),40190,1,1,0,0,0,0,0,0,0,0
|
275
|
+
30036,N,Sox-35th (Howard-bound),-87.630636,41.831191,Sox-35th,Sox-35th (Red Line),40190,1,1,0,0,0,0,0,0,0,0
|
276
|
+
30050,E,State/Lake (Inner Loop),-87.627835,41.88574,State/Lake,"State/Lake (Brown, Green, Orange, Pink & Purple Lines)",40260,0,0,0,0,1,0,1,0,1,1
|
277
|
+
30051,W,State/Lake (Outer Loop),-87.627835,41.88574,State/Lake,"State/Lake (Brown, Green, Orange, Pink & Purple Lines)",40260,0,0,0,1,1,0,0,0,0,0
|
278
|
+
30170,S,Thorndale (95th-bound),-87.659076,41.990259,Thorndale,Thorndale (Red Line),40880,0,1,0,0,0,0,0,0,0,0
|
279
|
+
30169,N,Thorndale (Howard-bound),-87.659076,41.990259,Thorndale,Thorndale (Red Line),40880,0,1,0,0,0,0,0,0,0,0
|
280
|
+
30069,W,UIC-Halsted (Forest Pk-bound),-87.649707,41.875474,UIC-Halsted,UIC-Halsted (Blue Line),40350,1,0,1,0,0,0,0,0,0,0
|
281
|
+
30068,E,UIC-Halsted (O'Hare-bound),-87.649707,41.875474,UIC-Halsted,UIC-Halsted (Blue Line),40350,1,0,1,0,0,0,0,0,0,0
|
282
|
+
30073,S,Washington/Dearborn (Forest Pk-bound),-87.62944,41.883164,Washington,Washington (Blue Line),40370,0,0,1,0,0,0,0,0,0,0
|
283
|
+
30072,N,Washington/Dearborn (O'Hare-bound),-87.62944,41.883164,Washington,Washington (Blue Line),40370,0,0,1,0,0,0,0,0,0,0
|
284
|
+
30141,N,Washington/Wells (Inner Loop),-87.63378,41.882695,Washington/Wells,"Washington/Wells (Brown, Orange, Purple & Pink Lines)",40730,1,0,0,0,0,0,1,0,1,1
|
285
|
+
30142,S,Washington/Wells (Outer Loop),-87.63378,41.882695,Washington/Wells,"Washington/Wells (Brown, Orange, Purple & Pink Lines)",40730,1,0,0,1,0,0,0,0,0,0
|
286
|
+
30231,N,Wellington (Kimball-Linden-bound),-87.653266,41.936033,Wellington,Wellington (Brown & Purple Lines),41210,1,0,0,1,0,0,1,0,0,0
|
287
|
+
30232,S,Wellington (Loop-bound),-87.653266,41.936033,Wellington,Wellington (Brown & Purple Lines),41210,1,0,0,1,0,0,1,0,0,0
|
288
|
+
30060,N,Western (Loop-bound),-87.684019,41.804546,Western,Western (Orange Line),40310,1,0,0,0,0,0,0,0,0,1
|
289
|
+
30061,S,Western (Midway-bound),-87.684019,41.804546,Western,Western (Orange Line),40310,1,0,0,0,0,0,0,0,0,1
|
290
|
+
30144,W,Western (54th/Cermak-bound),-87.685129,41.854225,Western,Western (Pink Line),40740,1,0,0,0,0,0,0,0,1,0
|
291
|
+
30143,E,Western (Loop-bound),-87.685129,41.854225,Western,Western (Pink Line),40740,1,0,0,0,0,0,0,0,1,0
|
292
|
+
30043,W,Western (Forest Pk-bound),-87.688436,41.875478,Western,Western (Blue Line - Forest Park Branch),40220,0,0,1,0,0,0,0,0,0,0
|
293
|
+
30042,E,Western (O'Hare-bound),-87.688436,41.875478,Western,Western (Blue Line - Forest Park Branch),40220,0,0,1,0,0,0,0,0,0,0
|
294
|
+
30130,S,Western/Milwaukee (Forest Pk-bound),-87.687364,41.916157,Western,Western (Blue Line - O'Hare Branch),40670,1,0,1,0,0,0,0,0,0,0
|
295
|
+
30129,N,Western/Milwaukee (O'Hare-bound),-87.687364,41.916157,Western,Western (Blue Line - O'Hare Branch),40670,1,0,1,0,0,0,0,0,0,0
|
296
|
+
30283,N,Western (Kimball-bound),-87.688502,41.966163,Western,Western (Brown Line),41480,1,0,0,1,0,0,0,0,0,0
|
297
|
+
30284,S,Western (Loop-bound),-87.688502,41.966163,Western,Western (Brown Line),41480,1,0,0,1,0,0,0,0,0,0
|
298
|
+
30106,S,Wilson (95th-bound),-87.657588,41.964273,Wilson,Wilson (Red Line),40540,0,1,0,0,0,0,0,0,0,0
|
299
|
+
30105,N,Wilson (Howard-bound),-87.657588,41.964273,Wilson,Wilson (Red Line),40540,0,1,0,0,0,0,0,0,0,0
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module CTA
|
2
|
+
class TrainTracker
|
3
|
+
class Estimate
|
4
|
+
attr_reader :station_id, :stop_id, :station_name, :stop_description, :run_number, :route, :destination_stop_id, :destination_name, :direction, :timestamp, :arrival_time, :approaching, :schedule, :fit, :delay
|
5
|
+
|
6
|
+
def initialize(params)
|
7
|
+
params.each do |key, value|
|
8
|
+
self.instance_variable_set("@#{ key }".to_sym, value)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
module CTA
|
2
|
+
class TrainTracker
|
3
|
+
|
4
|
+
def initialize(key)
|
5
|
+
@key = key
|
6
|
+
@line_table = {
|
7
|
+
:red => "Red",
|
8
|
+
:blue => "Blue",
|
9
|
+
:brown => "Brn",
|
10
|
+
:orange => "Org",
|
11
|
+
:purple => "P",
|
12
|
+
:pink => "Pink",
|
13
|
+
:yellow => "Y"
|
14
|
+
}
|
15
|
+
end
|
16
|
+
|
17
|
+
def arrivals(params)
|
18
|
+
station_id = params[:station_id]
|
19
|
+
stop_id = params[:stop_id]
|
20
|
+
max = params[:max]
|
21
|
+
route = @line_table[params[:route]]
|
22
|
+
|
23
|
+
base_url = "http://lapi.transitchicago.com/api/1.0/ttarrivals.aspx?"
|
24
|
+
url = "#{ base_url }key=#{ @key }&mapid=#{ station_id }&stpid=#{ stop_id }&max=#{ max }&rt=#{ route }"
|
25
|
+
|
26
|
+
estimate_array = Nokogiri::XML(open(url)).xpath("//eta").map do |item|
|
27
|
+
Estimate.new({
|
28
|
+
:station_id => item.at("staId").text,
|
29
|
+
:stop_id => item.at("stpId").text,
|
30
|
+
:station_name => item.at("staNm").text,
|
31
|
+
:stop_description => item.at("stpDe").text,
|
32
|
+
:run_number => item.at("rn").text,
|
33
|
+
:route => @line_table.key(item.at("rt").text),
|
34
|
+
:destination_stop_id => item.at("destSt").text,
|
35
|
+
:destination_name => item.at("destNm").text,
|
36
|
+
:direction => item.at("trDr").text,
|
37
|
+
:timestamp => Time.parse(item.at("prdt").text),
|
38
|
+
:arrival_time => Time.parse(item.at("arrT").text),
|
39
|
+
:approaching => item.at("isApp").text.to_bool,
|
40
|
+
:schedule => item.at("isSch").text.to_bool,
|
41
|
+
:fit => item.at("isFlt").text.to_bool,
|
42
|
+
:delay => item.at("isDly").text.to_bool
|
43
|
+
})
|
44
|
+
end
|
45
|
+
estimate_array
|
46
|
+
end
|
47
|
+
|
48
|
+
def stops
|
49
|
+
CSV.read("lib/cta_L_stops.csv").map { |x| {x[0] => x[2]} }
|
50
|
+
end
|
51
|
+
|
52
|
+
def stations
|
53
|
+
CSV.read("lib/cta_L_stops.csv").map { |x| {x[7] => x[5]} }
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
#$LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
|
metadata
ADDED
@@ -0,0 +1,83 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: cta-api
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Frank Bonetti
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-02-02 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: nokogiri
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 1.5.6
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 1.5.6
|
30
|
+
description: An easy way to access the Chicago Transit Authority API via the Ruby
|
31
|
+
programming language
|
32
|
+
email: frank.r.bonetti@gmail.com
|
33
|
+
executables: []
|
34
|
+
extensions: []
|
35
|
+
extra_rdoc_files: []
|
36
|
+
files:
|
37
|
+
- cta-api-1.0.0.gem
|
38
|
+
- cta-api.gemspec
|
39
|
+
- Gemfile
|
40
|
+
- lib/bus-tracker/bus-tracker.rb
|
41
|
+
- lib/bus-tracker/pattern.rb
|
42
|
+
- lib/bus-tracker/point.rb
|
43
|
+
- lib/bus-tracker/prediction.rb
|
44
|
+
- lib/bus-tracker/service-bulletin.rb
|
45
|
+
- lib/bus-tracker/service.rb
|
46
|
+
- lib/bus-tracker/stop.rb
|
47
|
+
- lib/bus-tracker/vehicle.rb
|
48
|
+
- lib/cta-api/version.rb
|
49
|
+
- lib/cta-api.rb
|
50
|
+
- lib/cta_L_stops.csv
|
51
|
+
- lib/train-tracker/estimate.rb
|
52
|
+
- lib/train-tracker/train-tracker.rb
|
53
|
+
- LICENSE
|
54
|
+
- Rakefile
|
55
|
+
- README.md
|
56
|
+
- spec/spec_helper.rb
|
57
|
+
homepage:
|
58
|
+
licenses:
|
59
|
+
- MIT
|
60
|
+
post_install_message:
|
61
|
+
rdoc_options: []
|
62
|
+
require_paths:
|
63
|
+
- lib
|
64
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
71
|
+
none: false
|
72
|
+
requirements:
|
73
|
+
- - ! '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
requirements: []
|
77
|
+
rubyforge_project:
|
78
|
+
rubygems_version: 1.8.24
|
79
|
+
signing_key:
|
80
|
+
specification_version: 3
|
81
|
+
summary: An easy way to access the Chicago Transit Authority API via the Ruby programming
|
82
|
+
language
|
83
|
+
test_files: []
|