@transportme/load-ptv-gtfs 1.0.9 → 1.1.1
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.
- package/lib/gtfs-parser/GTFSRoute.mjs +20 -2
- package/lib/gtfs-parser/GTFSStop.mjs +15 -1
- package/lib/gtfs-parser/GTFSTrip.mjs +14 -4
- package/package.json +1 -1
- package/test/gtfs-trip-loader.test.mjs +0 -30
- package/test/new-metro-loader-test.test.mjs +168 -0
- package/test/sample-data/new-metro/calendar.txt +13 -0
- package/test/sample-data/new-metro/calendar_dates.txt +1 -0
- package/test/sample-data/new-metro/routes.txt +18 -0
- package/test/sample-data/new-metro/simple_stop_test.txt +6 -0
- package/test/sample-data/new-metro/stop_times.txt +61 -0
- package/test/sample-data/new-metro/stops.txt +139 -0
- package/test/sample-data/new-metro/trips.txt +5 -0
- package/test/gtfs-stop-loader-metro.test.mjs +0 -49
- package/test/sample-data/gtfs-splitting/nov_2024_train_data.txt +0 -6
- package/test/sample-data/trips/stop_times_new.txt +0 -8
- package/test/sample-data/trips/trips_new.txt +0 -2
|
@@ -57,7 +57,7 @@ export default class GTFSRoute {
|
|
|
57
57
|
*/
|
|
58
58
|
static create(data, mode) {
|
|
59
59
|
let { routeGTFSID } = data
|
|
60
|
-
let routeTypes = [ MetroGTFSRoute, SmartrakGTFSRoute, GTFSRoute ]
|
|
60
|
+
let routeTypes = [ NewMetroGTFSRoute, MetroGTFSRoute, SmartrakGTFSRoute, GTFSRoute ]
|
|
61
61
|
for (let type of routeTypes) {
|
|
62
62
|
if (type.canProcess(routeGTFSID, mode)) return new type(data)
|
|
63
63
|
}
|
|
@@ -87,7 +87,7 @@ class SmartrakGTFSRoute extends GTFSRoute {
|
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
/**
|
|
90
|
-
* Used to represent a Metro train route
|
|
90
|
+
* Used to represent a Metro train route on the new data
|
|
91
91
|
*
|
|
92
92
|
* Used for a technicality where the route name (eg Pakenham) is stored in the route number instead.
|
|
93
93
|
*/
|
|
@@ -103,4 +103,22 @@ class MetroGTFSRoute extends GTFSRoute {
|
|
|
103
103
|
return mode === TRANSIT_MODES.metroTrain
|
|
104
104
|
}
|
|
105
105
|
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Used to represent a Metro train route on the new data
|
|
110
|
+
*
|
|
111
|
+
* Required to parse the route ID which is of a slightly different format
|
|
112
|
+
*/
|
|
113
|
+
class NewMetroGTFSRoute extends MetroGTFSRoute {
|
|
114
|
+
|
|
115
|
+
static canProcess(routeGTFSID, mode) {
|
|
116
|
+
return super.canProcess(routeGTFSID, mode) && routeGTFSID.includes(':vic:')
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
parseRouteID(routeGTFSID) {
|
|
120
|
+
let [ _, routeNumber ] = routeGTFSID.match(/02\-(\w{3})/)
|
|
121
|
+
return `2-${routeNumber}`
|
|
122
|
+
}
|
|
123
|
+
|
|
106
124
|
}
|
|
@@ -182,7 +182,7 @@ export class GTFSStop {
|
|
|
182
182
|
}
|
|
183
183
|
|
|
184
184
|
static create(data, suburbs) {
|
|
185
|
-
let types = [ GTFSPlatformStop, GTFSStop ]
|
|
185
|
+
let types = [ GTFSRRBStop, GTFSPlatformStop, GTFSStop ]
|
|
186
186
|
for (let type of types) {
|
|
187
187
|
if (type.canProcess(data)) return new type(data, suburbs)
|
|
188
188
|
}
|
|
@@ -209,4 +209,18 @@ export class GTFSPlatformStop extends GTFSStop {
|
|
|
209
209
|
return data.platform && data.platform.length
|
|
210
210
|
}
|
|
211
211
|
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
export class GTFSRRBStop extends GTFSPlatformStop {
|
|
215
|
+
|
|
216
|
+
constructor(data, suburbs) {
|
|
217
|
+
data.stopName = data.stopName.replace('Rail Replacement Bus Stop', 'Railway Station')
|
|
218
|
+
super(data, suburbs)
|
|
219
|
+
this.platform = 'RRB'
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
static canProcess(data) {
|
|
223
|
+
return super.canProcess(data) && data.platform === 'R-Bus'
|
|
224
|
+
}
|
|
225
|
+
|
|
212
226
|
}
|
|
@@ -136,9 +136,10 @@ export class SmartrakTrip extends GTFSTrip {
|
|
|
136
136
|
/**
|
|
137
137
|
* Used to represent a Metro train trip.
|
|
138
138
|
*
|
|
139
|
-
* Trip IDs are of the form 02-ROUTE--ROUTE_VARIANT-
|
|
139
|
+
* Trip IDs are of the form 02-ROUTE--ROUTE_VARIANT-CALENDAR-TDN. Note that TDNs are alphanumeric
|
|
140
140
|
*
|
|
141
141
|
* Example: 02-BEG--58-T5_n4-3651
|
|
142
|
+
* RRB Example: 02-SUY--13-T2-BS000
|
|
142
143
|
*/
|
|
143
144
|
export class MetroTrip extends GTFSTrip {
|
|
144
145
|
|
|
@@ -147,18 +148,27 @@ export class MetroTrip extends GTFSTrip {
|
|
|
147
148
|
constructor(data) {
|
|
148
149
|
super(data)
|
|
149
150
|
|
|
150
|
-
let runID = data.id.match(/^02-\w{3}-.*-(\w\d{3})$/)
|
|
151
|
+
let runID = data.id.match(/^02-\w{3}-.*-(\w{1,2}\d{3})$/)
|
|
151
152
|
this.#runID = runID[1]
|
|
152
153
|
}
|
|
153
154
|
|
|
154
155
|
static canProcess(data, mode) {
|
|
155
|
-
return mode === TRANSIT_MODES.metroTrain && data.id.match(/^02-\w{3}-.*-(\w\d{3})$/)
|
|
156
|
+
return mode === TRANSIT_MODES.metroTrain && data.id.match(/^02-\w{3}-.*-(\w{1,2}\d{3})$/)
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
getTrainDirection() {
|
|
160
|
+
let runID = this.getRunID()
|
|
161
|
+
return (parseInt(runID[runID.length - 1]) % 2 === 0) ? 'Up' : 'Down'
|
|
156
162
|
}
|
|
157
163
|
|
|
158
164
|
getTripData() {
|
|
165
|
+
let runID = this.getRunID()
|
|
166
|
+
|
|
159
167
|
return {
|
|
160
168
|
...super.getTripData(),
|
|
161
|
-
runID
|
|
169
|
+
runID,
|
|
170
|
+
isRailReplacementBus: runID.length === 5 && runID[0] === 'B',
|
|
171
|
+
direction: this.getTrainDirection()
|
|
162
172
|
}
|
|
163
173
|
}
|
|
164
174
|
|
package/package.json
CHANGED
|
@@ -21,9 +21,6 @@ const stopsFile = path.join(__dirname, 'sample-data', 'trips', 'stops.txt')
|
|
|
21
21
|
const stopTimesFile = path.join(__dirname, 'sample-data', 'trips', 'stop_times.txt')
|
|
22
22
|
const tripsFile = path.join(__dirname, 'sample-data', 'trips', 'trips.txt')
|
|
23
23
|
|
|
24
|
-
const newStopTimesFile = path.join(__dirname, 'sample-data', 'trips', 'stop_times_new.txt')
|
|
25
|
-
const newTripsFile = path.join(__dirname, 'sample-data', 'trips', 'trips_new.txt')
|
|
26
|
-
|
|
27
24
|
describe('The TripLoader class', () => {
|
|
28
25
|
it('Should process the trip and add it to the database', async () => {
|
|
29
26
|
let database = new LokiDatabaseConnection('test-db')
|
|
@@ -112,31 +109,4 @@ describe('The TripLoader class', () => {
|
|
|
112
109
|
|
|
113
110
|
expect(shapeIDMap['2-ALM-vpt-1.1.R']).to.equal('2-ALM')
|
|
114
111
|
})
|
|
115
|
-
|
|
116
|
-
it('It should accept trip IDs in the new format and extract the TDN from there', async () => {
|
|
117
|
-
let database = new LokiDatabaseConnection('test-db')
|
|
118
|
-
let stops = await database.createCollection('stops')
|
|
119
|
-
let routes = await database.createCollection('routes')
|
|
120
|
-
let trips = await database.createCollection('gtfs timetables')
|
|
121
|
-
|
|
122
|
-
let stopLoader = new StopsLoader(stopsFile, suburbs, TRANSIT_MODES.metroTrain, database)
|
|
123
|
-
await stopLoader.loadStops()
|
|
124
|
-
|
|
125
|
-
let routeLoader = new RouteLoader(routesFile, agencyFile, TRANSIT_MODES.metroTrain, database)
|
|
126
|
-
await routeLoader.loadRoutes()
|
|
127
|
-
|
|
128
|
-
let routeIDMap = routeLoader.getRouteIDMap()
|
|
129
|
-
|
|
130
|
-
let tripLoader = new TripLoader({
|
|
131
|
-
tripsFile: newTripsFile, stopTimesFile: newStopTimesFile,
|
|
132
|
-
calendarFile, calendarDatesFile
|
|
133
|
-
}, TRANSIT_MODES.metroTrain, database)
|
|
134
|
-
|
|
135
|
-
await tripLoader.loadTrips({ routeIDMap })
|
|
136
|
-
|
|
137
|
-
let trip = await trips.findDocument({ tripID: '02-ALM--1-T2-2302' })
|
|
138
|
-
|
|
139
|
-
expect(trip).to.not.be.null
|
|
140
|
-
expect(trip.runID).to.equal('2302')
|
|
141
|
-
})
|
|
142
112
|
})
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { LokiDatabaseConnection } from '@transportme/database'
|
|
2
|
+
import StopsLoader from '../lib/loader/StopsLoader.mjs'
|
|
3
|
+
import { TRANSIT_MODES } from '../lib/constants.mjs'
|
|
4
|
+
import path from 'path'
|
|
5
|
+
import url from 'url'
|
|
6
|
+
import { expect } from 'chai'
|
|
7
|
+
import suburbs from './sample-data/suburbs.json' with { type: 'json' }
|
|
8
|
+
import RouteLoader from '../lib/loader/RouteLoader.mjs'
|
|
9
|
+
import TripLoader from '../lib/loader/TripLoader.mjs'
|
|
10
|
+
|
|
11
|
+
const __filename = url.fileURLToPath(import.meta.url)
|
|
12
|
+
const __dirname = path.dirname(__filename)
|
|
13
|
+
|
|
14
|
+
const agencyFile = path.join(__dirname, 'sample-data', 'routes', 'agency.txt')
|
|
15
|
+
|
|
16
|
+
const calendarFile = path.join(__dirname, 'sample-data', 'new-metro', 'calendar.txt')
|
|
17
|
+
const calendarDatesFile = path.join(__dirname, 'sample-data', 'new-metro', 'calendar_dates.txt')
|
|
18
|
+
|
|
19
|
+
const routesFile = path.join(__dirname, 'sample-data', 'new-metro', 'routes.txt')
|
|
20
|
+
|
|
21
|
+
const stopTimesFile = path.join(__dirname, 'sample-data', 'new-metro', 'stop_times.txt')
|
|
22
|
+
const tripsFile = path.join(__dirname, 'sample-data', 'new-metro', 'trips.txt')
|
|
23
|
+
const stopsFile = path.join(__dirname, 'sample-data', 'new-metro', 'stops.txt')
|
|
24
|
+
|
|
25
|
+
const simpleStopsFile = path.join(__dirname, 'sample-data', 'new-metro', 'simple_stop_test.txt')
|
|
26
|
+
|
|
27
|
+
describe('The GTFS Loaders with the new Metro data', () => {
|
|
28
|
+
describe('The stop loader', () => {
|
|
29
|
+
it('Should process the stops and add them to the database', async () => {
|
|
30
|
+
let database = new LokiDatabaseConnection('test-db')
|
|
31
|
+
let stops = await database.createCollection('stops')
|
|
32
|
+
|
|
33
|
+
let loader = new StopsLoader(simpleStopsFile, suburbs, TRANSIT_MODES.metroTrain, database)
|
|
34
|
+
await loader.loadStops()
|
|
35
|
+
|
|
36
|
+
let stop = await stops.findDocument({
|
|
37
|
+
'stopName': 'Camberwell Railway Station'
|
|
38
|
+
})
|
|
39
|
+
|
|
40
|
+
expect(stop).to.not.be.null
|
|
41
|
+
})
|
|
42
|
+
|
|
43
|
+
it('Should label the individual platforms with their platform numbers', async () => {
|
|
44
|
+
let database = new LokiDatabaseConnection('test-db')
|
|
45
|
+
let stops = await database.createCollection('stops')
|
|
46
|
+
|
|
47
|
+
let loader = new StopsLoader(simpleStopsFile, suburbs, TRANSIT_MODES.metroTrain, database)
|
|
48
|
+
await loader.loadStops()
|
|
49
|
+
|
|
50
|
+
let stop = await stops.findDocument({
|
|
51
|
+
'stopName': 'Camberwell Railway Station'
|
|
52
|
+
})
|
|
53
|
+
|
|
54
|
+
let platformIDs = ["11207", "11208", "11209"]
|
|
55
|
+
let platforms = platformIDs.map(id => stop.bays.find(bay => bay.stopGTFSID === id))
|
|
56
|
+
|
|
57
|
+
for (let i = 0; i < platformIDs.length; i++) {
|
|
58
|
+
let platform = platforms[i]
|
|
59
|
+
expect(platform).to.not.be.undefined
|
|
60
|
+
expect(platforms[i].platform).to.equal((i + 1).toString())
|
|
61
|
+
}
|
|
62
|
+
})
|
|
63
|
+
})
|
|
64
|
+
|
|
65
|
+
describe('The route loader', () => {
|
|
66
|
+
it('Should convert the updated route ID format to the legacy format', async () => {
|
|
67
|
+
let database = new LokiDatabaseConnection('test-db')
|
|
68
|
+
let routes = await database.createCollection('routes')
|
|
69
|
+
|
|
70
|
+
let routeLoader = new RouteLoader(routesFile, agencyFile, TRANSIT_MODES.metroTrain, database)
|
|
71
|
+
await routeLoader.loadRoutes()
|
|
72
|
+
|
|
73
|
+
let pakenham = await routes.findDocument({ routeName: 'Pakenham' })
|
|
74
|
+
|
|
75
|
+
expect(pakenham).to.exist
|
|
76
|
+
expect(pakenham.routeGTFSID).to.equal('2-PKM')
|
|
77
|
+
})
|
|
78
|
+
})
|
|
79
|
+
|
|
80
|
+
describe('The trip loader', () => {
|
|
81
|
+
it('It should accept trip IDs in the new format and extract the TDN from there', async () => {
|
|
82
|
+
let database = new LokiDatabaseConnection('test-db')
|
|
83
|
+
let stops = await database.createCollection('stops')
|
|
84
|
+
let routes = await database.createCollection('routes')
|
|
85
|
+
let trips = await database.createCollection('gtfs timetables')
|
|
86
|
+
|
|
87
|
+
let stopLoader = new StopsLoader(stopsFile, suburbs, TRANSIT_MODES.metroTrain, database)
|
|
88
|
+
await stopLoader.loadStops()
|
|
89
|
+
|
|
90
|
+
let routeLoader = new RouteLoader(routesFile, agencyFile, TRANSIT_MODES.metroTrain, database)
|
|
91
|
+
await routeLoader.loadRoutes()
|
|
92
|
+
|
|
93
|
+
let routeIDMap = routeLoader.getRouteIDMap()
|
|
94
|
+
|
|
95
|
+
let tripLoader = new TripLoader({
|
|
96
|
+
tripsFile, stopTimesFile,
|
|
97
|
+
calendarFile, calendarDatesFile
|
|
98
|
+
}, TRANSIT_MODES.metroTrain, database)
|
|
99
|
+
|
|
100
|
+
await tripLoader.loadTrips({ routeIDMap })
|
|
101
|
+
|
|
102
|
+
let trip = await trips.findDocument({ runID: 'C000' })
|
|
103
|
+
|
|
104
|
+
expect(trip).to.not.be.null
|
|
105
|
+
expect(trip.tripID).to.equal('02-PKM--12-T5-C000')
|
|
106
|
+
expect(trip.shapeID).to.equal('2-PKM-vpt-12.20.R')
|
|
107
|
+
expect(trip.routeGTFSID).to.equal('2-PKM')
|
|
108
|
+
expect(trip.block).to.equal('3347')
|
|
109
|
+
expect(trip.isRailReplacementBus).to.be.false
|
|
110
|
+
expect(trip.direction).to.equal('Up')
|
|
111
|
+
|
|
112
|
+
expect(trip.stopTimings[0].stopName).to.equal('East Pakenham Railway Station')
|
|
113
|
+
expect(trip.stopTimings[0].platform).to.equal('1')
|
|
114
|
+
|
|
115
|
+
expect(trip.stopTimings[22].stopName).to.equal('Richmond Railway Station')
|
|
116
|
+
expect(trip.stopTimings[22].platform).to.equal('5')
|
|
117
|
+
|
|
118
|
+
expect(trip.stopTimings[27].stopName).to.equal('Flinders Street Railway Station')
|
|
119
|
+
expect(trip.stopTimings[27].platform).to.equal('7')
|
|
120
|
+
|
|
121
|
+
let nextTrip = await trips.findDocument({ block: '3347', runID: { $ne: 'C000' } })
|
|
122
|
+
expect(nextTrip.runID).to.equal('C005')
|
|
123
|
+
expect(nextTrip.direction).to.equal('Down')
|
|
124
|
+
expect(trip.isRailReplacementBus).to.be.false
|
|
125
|
+
|
|
126
|
+
expect(nextTrip.stopTimings[0].stopName).to.equal('Flinders Street Railway Station')
|
|
127
|
+
expect(nextTrip.stopTimings[0].platform).to.equal('7')
|
|
128
|
+
})
|
|
129
|
+
|
|
130
|
+
it('It identify a rail replacement bus trip and mark it as such', async () => {
|
|
131
|
+
let database = new LokiDatabaseConnection('test-db')
|
|
132
|
+
let stops = await database.createCollection('stops')
|
|
133
|
+
let routes = await database.createCollection('routes')
|
|
134
|
+
let trips = await database.createCollection('gtfs timetables')
|
|
135
|
+
|
|
136
|
+
let stopLoader = new StopsLoader(stopsFile, suburbs, TRANSIT_MODES.metroTrain, database)
|
|
137
|
+
await stopLoader.loadStops()
|
|
138
|
+
|
|
139
|
+
let routeLoader = new RouteLoader(routesFile, agencyFile, TRANSIT_MODES.metroTrain, database)
|
|
140
|
+
await routeLoader.loadRoutes()
|
|
141
|
+
|
|
142
|
+
let routeIDMap = routeLoader.getRouteIDMap()
|
|
143
|
+
|
|
144
|
+
let tripLoader = new TripLoader({
|
|
145
|
+
tripsFile, stopTimesFile,
|
|
146
|
+
calendarFile, calendarDatesFile
|
|
147
|
+
}, TRANSIT_MODES.metroTrain, database)
|
|
148
|
+
|
|
149
|
+
await tripLoader.loadTrips({ routeIDMap })
|
|
150
|
+
|
|
151
|
+
let trip = await trips.findDocument({ runID: 'BL000' })
|
|
152
|
+
|
|
153
|
+
expect(trip).to.not.be.null
|
|
154
|
+
expect(trip.tripID).to.equal('02-LIL--13-T5_w3-BL000')
|
|
155
|
+
expect(trip.shapeID).to.equal('2-LIL-vpt-13.133.R')
|
|
156
|
+
expect(trip.routeGTFSID).to.equal('2-LIL')
|
|
157
|
+
expect(trip.block).to.equal(null)
|
|
158
|
+
expect(trip.isRailReplacementBus).to.be.true
|
|
159
|
+
expect(trip.direction).to.equal('Up')
|
|
160
|
+
|
|
161
|
+
expect(trip.stopTimings[0].stopName).to.equal('Burnley Railway Station')
|
|
162
|
+
expect(trip.stopTimings[0].platform).to.equal('RRB')
|
|
163
|
+
|
|
164
|
+
expect(trip.stopTimings[3].stopName).to.equal('Parliament Railway Station')
|
|
165
|
+
expect(trip.stopTimings[3].platform).to.equal('RRB')
|
|
166
|
+
})
|
|
167
|
+
})
|
|
168
|
+
})
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
service_id,monday,tuesday,wednesday,thursday,friday,saturday,sunday,start_date,end_date
|
|
2
|
+
"T2","0","0","0","0","0","1","0","20250124","20250128"
|
|
3
|
+
"T5","0","1","1","1","0","0","0","20250121","20250123"
|
|
4
|
+
"T5_1","0","1","0","0","0","0","0","20250124","20250128"
|
|
5
|
+
"T5+v6","0","1","1","0","0","0","0","20250121","20250123"
|
|
6
|
+
"T5+v7","0","0","0","1","0","0","0","20250121","20250123"
|
|
7
|
+
"T5+v8","0","0","1","1","0","0","0","20250121","20250123"
|
|
8
|
+
"T5+v9","0","1","0","0","0","0","0","20250121","20250123"
|
|
9
|
+
"T5+w3","0","1","0","0","0","0","0","20250124","20250128"
|
|
10
|
+
"T5+w4","0","1","0","0","0","0","0","20250124","20250128"
|
|
11
|
+
"T6","0","0","0","0","1","0","0","20250124","20250128"
|
|
12
|
+
"UE","1","0","0","0","0","0","0","20250124","20250128"
|
|
13
|
+
"UH","0","0","0","0","0","0","1","20250124","20250128"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
service_id,date,exception_type
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
route_id,agency_id,route_short_name,route_long_name,route_type,route_color,route_text_color
|
|
2
|
+
"aus:vic:vic-02-ALM:","3","Alamein","Alamein - City","2","152C6B","FFFFFF"
|
|
3
|
+
"aus:vic:vic-02-BEG:","3","Belgrave","Belgrave - City","2","152C6B","FFFFFF"
|
|
4
|
+
"aus:vic:vic-02-CBE:","3","Cranbourne","Cranbourne - City","2","279FD5","000000"
|
|
5
|
+
"aus:vic:vic-02-CGB:","3","Craigieburn","Craigieburn - City","2","FFBE00","000000"
|
|
6
|
+
"aus:vic:vic-02-FKN:","3","Frankston","Frankston - City","2","028430","FFFFFF"
|
|
7
|
+
"aus:vic:vic-02-GWY:","3","Glen Waverley","Glen Waverley - City","2","152C6B","FFFFFF"
|
|
8
|
+
"aus:vic:vic-02-HBE:","3","Hurstbridge","Hurstbridge - City","2","BE1014","FFFFFF"
|
|
9
|
+
"aus:vic:vic-02-LIL:","3","Lilydale","Lilydale - City","2","152C6B","FFFFFF"
|
|
10
|
+
"aus:vic:vic-02-MDD:","3","Mernda","Mernda - City","2","BE1014","FFFFFF"
|
|
11
|
+
"aus:vic:vic-02-PKM:","3","Pakenham","Pakenham - City","2","279FD5","000000"
|
|
12
|
+
"aus:vic:vic-02-RCE:","3","Flemington Racecourse","Flemington Racecourse - City","2","95979A","000000"
|
|
13
|
+
"aus:vic:vic-02-SHM:","3","Sandringham","Sandringham - City","2","F178AF","000000"
|
|
14
|
+
"aus:vic:vic-02-STY:","3","Stony Point","Stony Point - Frankston","2","028430","FFFFFF"
|
|
15
|
+
"aus:vic:vic-02-SUY:","3","Sunbury","Sunbury - City","2","FFBE00","000000"
|
|
16
|
+
"aus:vic:vic-02-UFD:","3","Upfield","Upfield - City","2","FFBE00","000000"
|
|
17
|
+
"aus:vic:vic-02-WER:","3","Werribee","Werribee - City","2","028430","FFFFFF"
|
|
18
|
+
"aus:vic:vic-02-WIL:","3","Williamstown","Williamstown - City","2","028430","FFFFFF"
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
stop_id,stop_name,stop_lat,stop_lon,location_type,parent_station,platform_code
|
|
2
|
+
"11207","Camberwell Station","-37.82669176","145.05860302","","Parentvic:rail:CAM","1"
|
|
3
|
+
"11208","Camberwell Station","-37.82661913","145.05857084","","Parentvic:rail:CAM","2"
|
|
4
|
+
"11209","Camberwell Station","-37.82651179","145.05861910","","Parentvic:rail:CAM","3"
|
|
5
|
+
"26130","Camberwell Rail Replacement Bus”,”-37.82633726","145.05841916","","Parentvic:rail:CAM","R-Bus"
|
|
6
|
+
"Parentvic:rail:CAM","Camberwell Railway Station","-37.82656714","145.05869718","1","",""
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
trip_id,arrival_time,departure_time,stop_id,stop_sequence,stop_headsign,pickup_type,drop_off_type,shape_dist_traveled
|
|
2
|
+
"02-LIL--13-T5_w3-BL000","20:59:00","20:59:00","26128","1","","0","0","0.00"
|
|
3
|
+
"02-LIL--13-T5_w3-BL000","21:01:00","21:01:00","26159","2","","0","0","1181.84"
|
|
4
|
+
"02-LIL--13-T5_w3-BL000","21:03:00","21:03:00","26263","3","","0","0","1940.26"
|
|
5
|
+
"02-LIL--13-T5_w3-BL000","21:19:00","21:19:00","26256","4","","0","0","4445.63"
|
|
6
|
+
"02-LIL--13-T5_w3-BL001","20:42:00","20:42:00","26256","1","","0","0","0.00"
|
|
7
|
+
"02-LIL--13-T5_w3-BL001","20:50:00","20:50:00","26263","2","","0","0","3052.95"
|
|
8
|
+
"02-LIL--13-T5_w3-BL001","20:52:00","20:52:00","26159","3","","0","0","4225.49"
|
|
9
|
+
"02-LIL--13-T5_w3-BL001","20:59:00","20:59:00","26128","4","","0","0","5224.08"
|
|
10
|
+
"02-PKM--12-T5-C000","04:05:00","04:05:00","26506","1","","0","0","0.00"
|
|
11
|
+
"02-PKM--12-T5-C000","04:08:00","04:08:00","12172","2","","0","0","1800.28"
|
|
12
|
+
"02-PKM--12-T5-C000","04:12:00","04:12:00","26501","3","","0","0","8913.99"
|
|
13
|
+
"02-PKM--12-T5-C000","04:15:00","04:15:00","12174","4","","0","0","11259.38"
|
|
14
|
+
"02-PKM--12-T5-C000","04:19:00","04:19:00","12176","5","","0","0","15676.19"
|
|
15
|
+
"02-PKM--12-T5-C000","04:22:00","04:22:00","12178","6","","0","0","17945.18"
|
|
16
|
+
"02-PKM--12-T5-C000","04:25:00","04:25:00","12180","7","","0","0","21951.80"
|
|
17
|
+
"02-PKM--12-T5-C000","04:29:00","04:29:00","12182","8","","0","0","25212.04"
|
|
18
|
+
"02-PKM--12-T5-C000","04:35:00","04:35:00","12188","9","","0","0","31456.17"
|
|
19
|
+
"02-PKM--12-T5-C000","04:38:00","04:38:00","12190","10","","0","0","33620.58"
|
|
20
|
+
"02-PKM--12-T5-C000","04:41:00","04:41:00","12192","11","","0","0","35470.82"
|
|
21
|
+
"02-PKM--12-T5-C000","04:42:00","04:42:00","12194","12","","0","0","37045.68"
|
|
22
|
+
"02-PKM--12-T5-C000","04:44:00","04:44:00","13714","13","","0","0","38200.19"
|
|
23
|
+
"02-PKM--12-T5-C000","04:47:00","04:47:00","13716","14","","0","0","40021.68"
|
|
24
|
+
"02-PKM--12-T5-C000","04:49:00","04:49:00","13718","15","","0","0","42120.76"
|
|
25
|
+
"02-PKM--12-T5-C000","04:52:00","04:52:00","13720","16","","0","0","44384.73"
|
|
26
|
+
"02-PKM--12-T5-C000","04:54:00","04:54:00","13722","17","","0","0","46078.81"
|
|
27
|
+
"02-PKM--12-T5-C000","04:56:00","04:56:00","13725","18","","0","0","47391.89"
|
|
28
|
+
"02-PKM--12-T5-C000","04:58:00","04:58:00","13727","19","","0","0","48229.31"
|
|
29
|
+
"02-PKM--12-T5-C000","05:00:00","05:00:00","13729","20","","0","0","49114.70"
|
|
30
|
+
"02-PKM--12-T5-C000","05:03:00","05:03:00","14253","21","","0","0","50852.49"
|
|
31
|
+
"02-PKM--12-T5-C000","05:11:00","05:11:00","14297","26","","0","0","57262.96"
|
|
32
|
+
"02-PKM--12-T5-C000","05:14:00","05:14:00","12257","27","","0","0","59058.45"
|
|
33
|
+
"02-PKM--12-T5-C000","05:17:00","05:17:00","11210","28","","0","0","61181.65"
|
|
34
|
+
"02-PKM--12-T5-C000","05:19:00","05:19:00","10923","29","","0","0","62315.01"
|
|
35
|
+
"02-PKM--12-T5-C000","05:21:00","05:21:00","10921","30","","0","0","62927.23"
|
|
36
|
+
"02-PKM--12-T5-C000","05:23:00","05:23:00","22191","31","","0","0","64077.09"
|
|
37
|
+
"02-PKM--12-T5-C000","05:27:00","05:27:00","11218","32","","0","0","65597.86"
|
|
38
|
+
"02-PKM--12-T5-C005","05:36:00","05:36:00","11218","1","","0","0","0.00"
|
|
39
|
+
"02-PKM--12-T5-C005","05:39:00","05:39:00","12258","2","","0","0","2223.76"
|
|
40
|
+
"02-PKM--12-T5-C005","05:42:00","05:42:00","14298","3","","0","0","4026.45"
|
|
41
|
+
"02-PKM--12-T5-C005","05:50:00","05:50:00","14254","8","","0","0","10379.64"
|
|
42
|
+
"02-PKM--12-T5-C005","05:52:00","05:52:00","13730","9","","0","0","12151.97"
|
|
43
|
+
"02-PKM--12-T5-C005","05:54:00","05:54:00","13728","10","","0","0","13036.36"
|
|
44
|
+
"02-PKM--12-T5-C005","05:56:00","05:56:00","13726","11","","0","0","13872.73"
|
|
45
|
+
"02-PKM--12-T5-C005","05:58:00","05:58:00","13723","12","","0","0","15189.90"
|
|
46
|
+
"02-PKM--12-T5-C005","06:00:00","06:00:00","13721","13","","0","0","16877.40"
|
|
47
|
+
"02-PKM--12-T5-C005","06:03:00","06:03:00","13719","14","","0","0","19146.40"
|
|
48
|
+
"02-PKM--12-T5-C005","06:06:00","06:06:00","13717","15","","0","0","21245.22"
|
|
49
|
+
"02-PKM--12-T5-C005","06:08:00","06:08:00","13715","16","","0","0","23072.19"
|
|
50
|
+
"02-PKM--12-T5-C005","06:10:00","06:10:00","13713","17","","0","0","24225.71"
|
|
51
|
+
"02-PKM--12-T5-C005","06:13:00","06:13:00","12193","18","","0","0","25798.04"
|
|
52
|
+
"02-PKM--12-T5-C005","06:15:00","06:15:00","12191","19","","0","0","27646.75"
|
|
53
|
+
"02-PKM--12-T5-C005","06:18:00","06:18:00","12189","20","","0","0","29817.66"
|
|
54
|
+
"02-PKM--12-T5-C005","06:23:00","06:23:00","12183","21","","0","0","36061.15"
|
|
55
|
+
"02-PKM--12-T5-C005","06:26:00","06:26:00","12181","22","","0","0","39320.83"
|
|
56
|
+
"02-PKM--12-T5-C005","06:30:00","06:30:00","12179","23","","0","0","43327.27"
|
|
57
|
+
"02-PKM--12-T5-C005","06:33:00","06:33:00","12177","24","","0","0","45598.79"
|
|
58
|
+
"02-PKM--12-T5-C005","06:37:00","06:37:00","12175","25","","0","0","50023.30"
|
|
59
|
+
"02-PKM--12-T5-C005","06:40:00","06:40:00","26502","26","","0","0","52360.00"
|
|
60
|
+
"02-PKM--12-T5-C005","06:46:00","06:46:00","12173","27","","0","0","56761.80"
|
|
61
|
+
"02-PKM--12-T5-C005","06:49:00","06:49:00","26507","28","","0","0","58561.26"
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
stop_id,stop_name,stop_lat,stop_lon,location_type,parent_station,platform_code
|
|
2
|
+
"10920","Flagstaff Station","-37.81187992","144.95604277","","Parentvic:rail:FGS","1"
|
|
3
|
+
"10921","Flagstaff Station","-37.81172541","144.95596751","","Parentvic:rail:FGS","2"
|
|
4
|
+
"10922","Melbourne Central Station","-37.80997401","144.96254713","","Parentvic:rail:MCE","1"
|
|
5
|
+
"10923","Melbourne Central Station","-37.80986533","144.96251604","","Parentvic:rail:MCE","2"
|
|
6
|
+
"10924","Parliament Station","-37.81100921","144.97292350","","Parentvic:rail:PAR","1"
|
|
7
|
+
"11210","Parliament Station","-37.81091306","144.97309652","","Parentvic:rail:PAR","2"
|
|
8
|
+
"11212","Flinders Street Station","-37.81851165","144.96483434","","Parentvic:rail:FSS","1"
|
|
9
|
+
"11213","Flinders Street Station","-37.81830668","144.96601006","","Parentvic:rail:FSS","2"
|
|
10
|
+
"11214","Flinders Street Station","-37.81822445","144.96646672","","Parentvic:rail:FSS","3"
|
|
11
|
+
"11215","Flinders Street Station","-37.81828907","144.96655582","","Parentvic:rail:FSS","4"
|
|
12
|
+
"11216","Flinders Street Station","-37.81832588","144.96660025","","Parentvic:rail:FSS","5"
|
|
13
|
+
"11217","Flinders Street Station","-37.81837661","144.96692830","","Parentvic:rail:FSS","6"
|
|
14
|
+
"11218","Flinders Street Station","-37.81849057","144.96674342","","Parentvic:rail:FSS","7"
|
|
15
|
+
"12172","Pakenham Station","-38.08050747","145.48650669","","Parentvic:rail:PKM","1"
|
|
16
|
+
"12173","Pakenham Station","-38.08044499","145.48655358","","Parentvic:rail:PKM","2"
|
|
17
|
+
"12174","Officer Station","-38.06631620","145.41159909","","Parentvic:rail:OFC","1"
|
|
18
|
+
"12175","Officer Station","-38.06624567","145.41171461","","Parentvic:rail:OFC","2"
|
|
19
|
+
"12176","Beaconsfield Station","-38.05112566","145.36650027","","Parentvic:rail:BFD","1"
|
|
20
|
+
"12177","Beaconsfield Station","-38.05107192","145.36652426","","Parentvic:rail:BFD","2"
|
|
21
|
+
"12178","Berwick Station","-38.04022282","145.34535423","","Parentvic:rail:BEW","1"
|
|
22
|
+
"12179","Berwick Station","-38.04014222","145.34539022","","Parentvic:rail:BEW","2"
|
|
23
|
+
"12180","Narre Warren Station","-38.02766369","145.30387021","","Parentvic:rail:NWA","1"
|
|
24
|
+
"12181","Narre Warren Station","-38.02753839","145.30393006","","Parentvic:rail:NWA","2"
|
|
25
|
+
"12182","Hallam Station","-38.01794675","145.26971499","","Parentvic:rail:HLM","1"
|
|
26
|
+
"12183","Hallam Station","-38.01782079","145.26972934","","Parentvic:rail:HLM","2"
|
|
27
|
+
"12187","Dandenong Station","-37.99003808","145.20959841","","Parentvic:rail:DNG","1"
|
|
28
|
+
"12188","Dandenong Station","-37.99016056","145.20994842","","Parentvic:rail:DNG","2"
|
|
29
|
+
"12189","Dandenong Station","-37.99010859","145.21008633","","Parentvic:rail:DNG","3"
|
|
30
|
+
"12190","Yarraman Station","-37.97773178","145.19100970","","Parentvic:rail:YMN","1"
|
|
31
|
+
"12191","Yarraman Station","-37.97769627","145.19104473","","Parentvic:rail:YMN","2"
|
|
32
|
+
"12192","Noble Park Station","-37.96622266","145.17577684","","Parentvic:rail:NPK","1"
|
|
33
|
+
"12193","Noble Park Station","-37.96619634","145.17582303","","Parentvic:rail:NPK","2"
|
|
34
|
+
"12194","Sandown Park Station","-37.95649396","145.16272372","","Parentvic:rail:SNP","1"
|
|
35
|
+
"12195","Flagstaff Station","-37.81193456","144.95607534","","Parentvic:rail:FGS","3"
|
|
36
|
+
"12196","Flagstaff Station","-37.81175303","144.95600083","","Parentvic:rail:FGS","4"
|
|
37
|
+
"12197","Melbourne Central Station","-37.81002865","144.96257971","","Parentvic:rail:MCE","3"
|
|
38
|
+
"12198","Melbourne Central Station","-37.80990097","144.96249234","","Parentvic:rail:MCE","4"
|
|
39
|
+
"12199","Parliament Station","-37.81097201","144.97285637","","Parentvic:rail:PAR","3"
|
|
40
|
+
"12200","Parliament Station","-37.81092148","144.97306221","","Parentvic:rail:PAR","4"
|
|
41
|
+
"12201","Flinders Street Station","-37.81845378","144.96826668","","Parentvic:rail:FSS","13"
|
|
42
|
+
"12202","Flinders Street Station","-37.81840717","144.96817708","","Parentvic:rail:FSS","12"
|
|
43
|
+
"12203","Flinders Street Station","-37.81891371","144.96619788","","Parentvic:rail:FSS","10"
|
|
44
|
+
"12204","Flinders Street Station","-37.81860101","144.96687671","","Parentvic:rail:FSS","9"
|
|
45
|
+
"12205","Flinders Street Station","-37.81855617","144.96688930","","Parentvic:rail:FSS","8"
|
|
46
|
+
"12221","Box Hill Station","-37.81934528","145.12183478","","Parentvic:rail:BOX","2"
|
|
47
|
+
"12222","Box Hill Station","-37.81930042","145.12184728","","Parentvic:rail:BOX","3"
|
|
48
|
+
"12223","Box Hill Station","-37.81918313","145.12183889","","Parentvic:rail:BOX","4"
|
|
49
|
+
"12247","Burnley Station","-37.82774097","145.00811837","","Parentvic:rail:BLY","1"
|
|
50
|
+
"12248","Burnley Station","-37.82768692","145.00811982","","Parentvic:rail:BLY","2"
|
|
51
|
+
"12249","Burnley Station","-37.82759915","145.00825852","","Parentvic:rail:BLY","3"
|
|
52
|
+
"12250","Burnley Station","-37.82755392","145.00824837","","Parentvic:rail:BLY","4"
|
|
53
|
+
"12251","East Richmond Station","-37.82651183","144.99675591","","Parentvic:rail:ERM","1"
|
|
54
|
+
"12252","East Richmond Station","-37.82633303","144.99684028","","Parentvic:rail:ERM","2"
|
|
55
|
+
"12253","Richmond Station","-37.82406640","144.98916470","","Parentvic:rail:RMD","1"
|
|
56
|
+
"12254","Richmond Station","-37.82403938","144.98916544","","Parentvic:rail:RMD","2"
|
|
57
|
+
"12255","Richmond Station","-37.82395008","144.98921331","","Parentvic:rail:RMD","3"
|
|
58
|
+
"12256","Richmond Station","-37.82392305","144.98921404","","Parentvic:rail:RMD","4"
|
|
59
|
+
"12257","Richmond Station","-37.82383356","144.98925055","","Parentvic:rail:RMD","5"
|
|
60
|
+
"12258","Richmond Station","-37.82380712","144.98928535","","Parentvic:rail:RMD","6"
|
|
61
|
+
"12259","Richmond Station","-37.82371743","144.98931051","","Parentvic:rail:RMD","7"
|
|
62
|
+
"12260","Richmond Station","-37.82369060","144.98932260","","Parentvic:rail:RMD","8"
|
|
63
|
+
"12261","Richmond Station","-37.82360091","144.98934775","","Parentvic:rail:RMD","9"
|
|
64
|
+
"12262","Richmond Station","-37.82358348","144.98938231","","Parentvic:rail:RMD","10"
|
|
65
|
+
"13713","Sandown Park Station","-37.95647719","145.16280381","","Parentvic:rail:SNP","2"
|
|
66
|
+
"13714","Springvale Station","-37.94927189","145.15328705","","Parentvic:rail:SPG","1"
|
|
67
|
+
"13715","Springvale Station","-37.94922881","145.15341332","","Parentvic:rail:SPG","2"
|
|
68
|
+
"13716","Westall Station","-37.93804784","145.13814970","","Parentvic:rail:WTL","1"
|
|
69
|
+
"13717","Westall Station","-37.93797703","145.13823114","","Parentvic:rail:WTL","2"
|
|
70
|
+
"13718","Clayton Station","-37.92489719","145.12099534","","Parentvic:rail:CLA","1"
|
|
71
|
+
"13719","Clayton Station","-37.92485269","145.12103061","","Parentvic:rail:CLA","2"
|
|
72
|
+
"13720","Huntingdale Station","-37.91094289","145.10221836","","Parentvic:rail:HUN","1"
|
|
73
|
+
"13721","Huntingdale Station","-37.91086182","145.10222044","","Parentvic:rail:HUN","2"
|
|
74
|
+
"13722","Oakleigh Station","-37.90040762","145.08827283","","Parentvic:rail:OAK","1"
|
|
75
|
+
"13723","Oakleigh Station","-37.90031056","145.08840045","","Parentvic:rail:OAK","2"
|
|
76
|
+
"13725","Hughesdale Station","-37.89402172","145.07576971","","Parentvic:rail:HUG","1"
|
|
77
|
+
"13726","Hughesdale Station","-37.89396786","145.07578248","","Parentvic:rail:HUG","2"
|
|
78
|
+
"13727","Murrumbeena Station","-37.89029026","145.06748618","","Parentvic:rail:MRB","1"
|
|
79
|
+
"13728","Murrumbeena Station","-37.89024560","145.06751009","","Parentvic:rail:MRB","2"
|
|
80
|
+
"13729","Carnegie Station","-37.88633400","145.05872045","","Parentvic:rail:CNE","1"
|
|
81
|
+
"13730","Carnegie Station","-37.88628952","145.05875573","","Parentvic:rail:CNE","2"
|
|
82
|
+
"14251","Caulfield Station","-37.87737007","145.04202690","","Parentvic:rail:CFD","1"
|
|
83
|
+
"14252","Caulfield Station","-37.87752308","145.04255720","","Parentvic:rail:CFD","2"
|
|
84
|
+
"14253","Caulfield Station","-37.87744220","145.04257072","","Parentvic:rail:CFD","3"
|
|
85
|
+
"14254","Caulfield Station","-37.87712353","145.04237450","","Parentvic:rail:CFD","4"
|
|
86
|
+
"14293","South Yarra Station","-37.83791500","144.99218626","","Parentvic:rail:SYR","1"
|
|
87
|
+
"14294","South Yarra Station","-37.83806086","144.99228457","","Parentvic:rail:SYR","2"
|
|
88
|
+
"14295","South Yarra Station","-37.83801660","144.99233122","","Parentvic:rail:SYR","3"
|
|
89
|
+
"14296","South Yarra Station","-37.83799170","144.99245689","","Parentvic:rail:SYR","4"
|
|
90
|
+
"14297","South Yarra Station","-37.83793843","144.99250379","","Parentvic:rail:SYR","5"
|
|
91
|
+
"14298","South Yarra Station","-37.83796759","144.99262799","","Parentvic:rail:SYR","6"
|
|
92
|
+
"22188","Southern Cross Station","-37.81825315","144.95200455","","Parentvic:rail:SSS","9"
|
|
93
|
+
"22189","Southern Cross Station","-37.81853495","144.95214444","","Parentvic:rail:SSS","10"
|
|
94
|
+
"22190","Southern Cross Station","-37.81853100","144.95191735","","Parentvic:rail:SSS","11"
|
|
95
|
+
"22191","Southern Cross Station","-37.81854783","144.95184872","","Parentvic:rail:SSS","12"
|
|
96
|
+
"22192","Southern Cross Station","-37.81866354","144.95176600","","Parentvic:rail:SSS","13"
|
|
97
|
+
"22193","Southern Cross Station","-37.81868957","144.95170848","","Parentvic:rail:SSS","14"
|
|
98
|
+
"26128","Burnley Rail Replacement Bus Stop","-37.82832757","145.00710276","","Parentvic:rail:BLY","R-Bus"
|
|
99
|
+
"26159","East Richmond Rail Replacement Bus Stop","-37.82576035","144.99813959","","Parentvic:rail:ERM","R-Bus"
|
|
100
|
+
"26170","Flinders Street Rail Replacement Bus Stop","-37.81798064","144.96591676","","Parentvic:rail:FSS","R-Bus"
|
|
101
|
+
"26256","Parliament Rail Replacement Bus Stop","-37.81268753","144.97357051","","Parentvic:rail:PAR","R-Bus"
|
|
102
|
+
"26263","Richmond Rail Replacement Bus Stop","-37.82486644","144.98957471","","Parentvic:rail:RMD","R-Bus"
|
|
103
|
+
"26282","Southern Cross Rail Replacement Bus Stop","-37.81743698","144.95326534","","Parentvic:rail:SSS","R-Bus"
|
|
104
|
+
"26501","Cardinia Road Station","-38.07129736","145.43763126","","Parentvic:rail:CDA","1"
|
|
105
|
+
"26502","Cardinia Road Station","-38.07119856","145.43765616","","Parentvic:rail:CDA","2"
|
|
106
|
+
"26506","East Pakenham Station","-38.08430484","145.50648448","","Parentvic:rail:EPH","1"
|
|
107
|
+
"26507","East Pakenham Station","-38.08424220","145.50651996","","Parentvic:rail:EPH","2"
|
|
108
|
+
"26539","Westall Station","-37.93749095","145.13769723","","Parentvic:rail:WTL","3"
|
|
109
|
+
"Parentvic:rail:BEW","Berwick Railway Station","-38.03998037","145.34541666","1","",""
|
|
110
|
+
"Parentvic:rail:BFD","Beaconsfield Railway Station","-38.05083135","145.36607374","1","",""
|
|
111
|
+
"Parentvic:rail:BLY","Burnley Railway Station","-37.82756022","145.00755515","1","",""
|
|
112
|
+
"Parentvic:rail:BOX","Box Hill Railway Station","-37.81922165","145.12142893","1","",""
|
|
113
|
+
"Parentvic:rail:CDA","Cardinia Road Railway Station","-38.07129047","145.43779101","1","",""
|
|
114
|
+
"Parentvic:rail:CFD","Caulfield Railway Station","-37.87745946","145.04252478","1","",""
|
|
115
|
+
"Parentvic:rail:CLA","Clayton Railway Station","-37.92468255","145.12053436","1","",""
|
|
116
|
+
"Parentvic:rail:CNE","Carnegie Railway Station","-37.88624148","145.05857506","1","",""
|
|
117
|
+
"Parentvic:rail:DNG","Dandenong Railway Station","-37.98996792","145.20972537","1","",""
|
|
118
|
+
"Parentvic:rail:EPH","East Pakenham Railway Station ","-38.08441136","145.50635689","1","",""
|
|
119
|
+
"Parentvic:rail:ERM","East Richmond Railway Station","-37.82639995","144.99706569","1","",""
|
|
120
|
+
"Parentvic:rail:FGS","Flagstaff Railway Station","-37.81198150","144.95566511","1","",""
|
|
121
|
+
"Parentvic:rail:FSS","Flinders Street Railway Station","-37.81830513","144.96696435","1","",""
|
|
122
|
+
"Parentvic:rail:HLM","Hallam Railway Station","-38.01774038","145.26977680","1","",""
|
|
123
|
+
"Parentvic:rail:HUG","Hughesdale Railway Station","-37.89488129","145.07763509","1","",""
|
|
124
|
+
"Parentvic:rail:HUN","Huntingdale Railway Station","-37.91101734","145.10236432","1","",""
|
|
125
|
+
"Parentvic:rail:MCE","Melbourne Central Railway Station","-37.80993896","144.96260489","1","",""
|
|
126
|
+
"Parentvic:rail:MRB","Murrumbeena Railway Station","-37.89019832","145.06737487","1","",""
|
|
127
|
+
"Parentvic:rail:NPK","Noble Park Railway Station","-37.96661867","145.17632482","1","",""
|
|
128
|
+
"Parentvic:rail:NWA","Narre Warren Railway Station","-38.02777361","145.30399300","1","",""
|
|
129
|
+
"Parentvic:rail:OAK","Oakleigh Railway Station","-37.90037214","145.08830787","1","",""
|
|
130
|
+
"Parentvic:rail:OFC","Officer Railway Station","-38.06614572","145.41098723","1","",""
|
|
131
|
+
"Parentvic:rail:PAR","Parliament Railway Station","-37.81133700","144.97311900","1","",""
|
|
132
|
+
"Parentvic:rail:PKM","Pakenham Railway Station","-38.08061397","145.48637907","1","",""
|
|
133
|
+
"Parentvic:rail:RMD","Richmond Railway Station","-37.82407446","144.99016426","1","",""
|
|
134
|
+
"Parentvic:rail:SNP","Sandown Park Railway Station","-37.95648655","145.16282634","1","",""
|
|
135
|
+
"Parentvic:rail:SPG","Springvale Railway Station","-37.94950878","145.15345183","1","",""
|
|
136
|
+
"Parentvic:rail:SSS","Southern Cross Railway Station","-37.81866310","144.95277706","1","",""
|
|
137
|
+
"Parentvic:rail:SYR","South Yarra Railway Station","-37.83844935","144.99234221","1","",""
|
|
138
|
+
"Parentvic:rail:WTL","Westall Railway Station","-37.93849121","145.13883263","1","",""
|
|
139
|
+
"Parentvic:rail:YMN","Yarraman Railway Station","-37.97825454","145.19160028","1","",""
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
route_id,service_id,trip_id,shape_id,trip_headsign,direction_id,block_id
|
|
2
|
+
"aus:vic:vic-02-PKM:","T5","02-PKM--12-T5-C000","2-PKM-vpt-12.20.R","Flinders Street via City Loop","1","3347"
|
|
3
|
+
"aus:vic:vic-02-PKM:","T5","02-PKM--12-T5-C005","2-PKM-vpt-12.17.H","East Pakenham","0","3347"
|
|
4
|
+
"aus:vic:vic-02-LIL:","T5+w3","02-LIL--13-T5_w3-BL000","2-LIL-vpt-13.133.R","Parliament","1",""
|
|
5
|
+
"aus:vic:vic-02-LIL:","T5+w3","02-LIL--13-T5_w3-BL001","2-LIL-vpt-13.134.H","Burnley","0",""
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { LokiDatabaseConnection } from '@transportme/database'
|
|
2
|
-
import StopsLoader from '../lib/loader/StopsLoader.mjs'
|
|
3
|
-
import { TRANSIT_MODES } from '../lib/constants.mjs'
|
|
4
|
-
import path from 'path'
|
|
5
|
-
import url from 'url'
|
|
6
|
-
import { expect } from 'chai'
|
|
7
|
-
import suburbs from './sample-data/suburbs.json' with { type: 'json' }
|
|
8
|
-
|
|
9
|
-
const __filename = url.fileURLToPath(import.meta.url)
|
|
10
|
-
const __dirname = path.dirname(__filename)
|
|
11
|
-
|
|
12
|
-
const stopsFile = path.join(__dirname, 'sample-data', 'gtfs-splitting', 'nov_2024_train_data.txt')
|
|
13
|
-
|
|
14
|
-
describe('The GTFS Stops Loader (Testing on the projected Nov 2024 data)', () => {
|
|
15
|
-
it('Should process the stops and add them to the database', async () => {
|
|
16
|
-
let database = new LokiDatabaseConnection('test-db')
|
|
17
|
-
let stops = await database.createCollection('stops')
|
|
18
|
-
|
|
19
|
-
let loader = new StopsLoader(stopsFile, suburbs, TRANSIT_MODES.metroTrain, database)
|
|
20
|
-
await loader.loadStops()
|
|
21
|
-
|
|
22
|
-
let stop = await stops.findDocument({
|
|
23
|
-
'stopName': 'Camberwell Railway Station'
|
|
24
|
-
})
|
|
25
|
-
|
|
26
|
-
expect(stop).to.not.be.null
|
|
27
|
-
})
|
|
28
|
-
|
|
29
|
-
it('Should label the individual platforms with their platform numbers', async () => {
|
|
30
|
-
let database = new LokiDatabaseConnection('test-db')
|
|
31
|
-
let stops = await database.createCollection('stops')
|
|
32
|
-
|
|
33
|
-
let loader = new StopsLoader(stopsFile, suburbs, TRANSIT_MODES.metroTrain, database)
|
|
34
|
-
await loader.loadStops()
|
|
35
|
-
|
|
36
|
-
let stop = await stops.findDocument({
|
|
37
|
-
'stopName': 'Camberwell Railway Station'
|
|
38
|
-
})
|
|
39
|
-
|
|
40
|
-
let platformIDs = ["11207", "11208", "11209"]
|
|
41
|
-
let platforms = platformIDs.map(id => stop.bays.find(bay => bay.stopGTFSID === id))
|
|
42
|
-
|
|
43
|
-
for (let i = 0; i < platformIDs.length; i++) {
|
|
44
|
-
let platform = platforms[i]
|
|
45
|
-
expect(platform).to.not.be.undefined
|
|
46
|
-
expect(platforms[i].platform).to.equal((i + 1).toString())
|
|
47
|
-
}
|
|
48
|
-
})
|
|
49
|
-
})
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
stop_id,stop_name,stop_lat,stop_lon,location_type,parent_station,platform_code
|
|
2
|
-
"11207","Camberwell Station","-37.82672159","145.05877266","","Parentvic:rail:CAM","1"
|
|
3
|
-
"11208","Camberwell Station","-37.82656845","145.05877667","","Parentvic:rail:CAM","2"
|
|
4
|
-
"11209","Camberwell Station","-37.82653224","145.05876626","","Parentvic:rail:CAM","3"
|
|
5
|
-
"26130","Camberwell Rail Replacement Bus”,”-37.82633726","145.05841916","","Parentvic:rail:CAM","B"
|
|
6
|
-
"Parentvic:rail:CAM","Camberwell Station","-37.82656714","145.05869718","1","",""
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
trip_id,arrival_time,departure_time,stop_id,stop_sequence,stop_headsign,pickup_type,drop_off_type,shape_dist_traveled
|
|
2
|
-
"02-ALM--1-T2-2302","04:57:00","04:57:00","19847","1","","0","0","0.00"
|
|
3
|
-
"02-ALM--1-T2-2302","04:58:00","04:58:00","19848","2","","0","0","724.22"
|
|
4
|
-
"02-ALM--1-T2-2302","05:00:00","05:00:00","19849","3","","0","0","1954.65"
|
|
5
|
-
"02-ALM--1-T2-2302","05:02:00","05:02:00","19850","4","","0","0","2902.91"
|
|
6
|
-
"02-ALM--1-T2-2302","05:04:00","05:04:00","19851","5","","0","0","3931.98"
|
|
7
|
-
"02-ALM--1-T2-2302","05:05:00","05:05:00","19852","6","","0","0","4418.97"
|
|
8
|
-
"02-ALM--1-T2-2302","05:08:00","05:08:00","19853","7","","0","0","5923.31"
|