gtfs 4.11.1 → 4.11.3

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.
Files changed (68) hide show
  1. package/.github/workflows/nodejs.yml +1 -1
  2. package/CHANGELOG.md +18 -0
  3. package/README.md +12 -19
  4. package/lib/export.js +46 -32
  5. package/lib/geojson-utils.js +9 -0
  6. package/lib/gtfs/locations.js +32 -0
  7. package/lib/gtfs.js +4 -0
  8. package/lib/import.js +78 -48
  9. package/models/gtfs/agency.js +9 -8
  10. package/models/gtfs/areas.js +3 -2
  11. package/models/gtfs/attributions.js +9 -8
  12. package/models/gtfs/booking-rules.js +11 -10
  13. package/models/gtfs/calendar-dates.js +3 -2
  14. package/models/gtfs/calendar.js +2 -1
  15. package/models/gtfs/fare-attributes.js +4 -3
  16. package/models/gtfs/fare-leg-rules.js +8 -7
  17. package/models/gtfs/fare-media.js +3 -2
  18. package/models/gtfs/fare-products.js +5 -4
  19. package/models/gtfs/fare-rules.js +6 -5
  20. package/models/gtfs/fare-transfer-rules.js +5 -4
  21. package/models/gtfs/feed-info.js +8 -7
  22. package/models/gtfs/frequencies.js +4 -3
  23. package/models/gtfs/levels.js +3 -2
  24. package/models/gtfs/location-group-stops.js +3 -2
  25. package/models/gtfs/location-groups.js +3 -2
  26. package/models/gtfs/locations.js +12 -0
  27. package/models/gtfs/networks.js +3 -2
  28. package/models/gtfs/pathways.js +6 -5
  29. package/models/gtfs/route-networks.js +3 -2
  30. package/models/gtfs/routes.js +10 -9
  31. package/models/gtfs/shapes.js +2 -1
  32. package/models/gtfs/stop-areas.js +3 -2
  33. package/models/gtfs/stop-times.js +11 -10
  34. package/models/gtfs/stops.js +12 -11
  35. package/models/gtfs/timeframes.js +5 -4
  36. package/models/gtfs/transfers.js +7 -6
  37. package/models/gtfs/translations.js +8 -7
  38. package/models/gtfs/trips.js +8 -7
  39. package/models/gtfs-plus/calendar-attributes.js +3 -2
  40. package/models/gtfs-plus/directions.js +3 -2
  41. package/models/gtfs-plus/route-attributes.js +2 -1
  42. package/models/gtfs-plus/stop-attributes.js +5 -4
  43. package/models/gtfs-realtime/service-alert-targets.js +3 -3
  44. package/models/gtfs-realtime/service-alerts.js +5 -5
  45. package/models/gtfs-realtime/stop-time-updates.js +7 -7
  46. package/models/gtfs-realtime/trip-updates.js +8 -8
  47. package/models/gtfs-realtime/vehicle-positions.js +12 -12
  48. package/models/gtfs-ride/board-alight.js +5 -4
  49. package/models/gtfs-ride/ride-feed-info.js +3 -2
  50. package/models/gtfs-ride/rider-trip.js +9 -8
  51. package/models/gtfs-ride/ridership.js +8 -7
  52. package/models/gtfs-ride/trip-capacity.js +4 -3
  53. package/models/models.js +2 -0
  54. package/models/non-standard/timetable-notes-references.js +6 -5
  55. package/models/non-standard/timetable-notes.js +4 -3
  56. package/models/non-standard/timetable-pages.js +4 -3
  57. package/models/non-standard/timetable-stop-order.js +3 -2
  58. package/models/non-standard/timetables.js +10 -9
  59. package/models/non-standard/trips-dated-vehicle-journey.js +4 -3
  60. package/models/ods/deadhead-times.js +6 -5
  61. package/models/ods/deadheads.js +9 -8
  62. package/models/ods/ops-locations.js +5 -4
  63. package/models/ods/run-events.js +7 -6
  64. package/models/ods/runs-pieces.js +5 -4
  65. package/package.json +4 -4
  66. package/test/mocha/export-gtfs.js +5 -2
  67. package/test/mocha/get-locations.js +69 -0
  68. package/test/mocha/import-gtfs.js +4 -1
@@ -1,5 +1,6 @@
1
1
  const model = {
2
2
  filenameBase: 'ride_feed_info',
3
+ filenameExtension: 'txt',
3
4
  nonstandard: true,
4
5
  extension: 'gtfs-ride',
5
6
  schema: [
@@ -27,11 +28,11 @@ const model = {
27
28
  },
28
29
  {
29
30
  name: 'default_currency_type',
30
- type: 'varchar(255)',
31
+ type: 'text',
31
32
  },
32
33
  {
33
34
  name: 'ride_feed_version',
34
- type: 'varchar(255)',
35
+ type: 'text',
35
36
  },
36
37
  ],
37
38
  };
@@ -1,29 +1,30 @@
1
1
  const model = {
2
2
  filenameBase: 'rider_trip',
3
+ filenameExtension: 'txt',
3
4
  nonstandard: true,
4
5
  extension: 'gtfs-ride',
5
6
  schema: [
6
7
  {
7
8
  name: 'rider_id',
8
- type: 'varchar(255)',
9
+ type: 'text',
9
10
  primary: true,
10
11
  prefix: true,
11
12
  },
12
13
  {
13
14
  name: 'agency_id',
14
- type: 'varchar(255)',
15
+ type: 'text',
15
16
  index: true,
16
17
  prefix: true,
17
18
  },
18
19
  {
19
20
  name: 'trip_id',
20
- type: 'varchar(255)',
21
+ type: 'text',
21
22
  index: true,
22
23
  prefix: true,
23
24
  },
24
25
  {
25
26
  name: 'boarding_stop_id',
26
- type: 'varchar(255)',
27
+ type: 'text',
27
28
  index: true,
28
29
  prefix: true,
29
30
  },
@@ -35,7 +36,7 @@ const model = {
35
36
  },
36
37
  {
37
38
  name: 'alighting_stop_id',
38
- type: 'varchar(255)',
39
+ type: 'text',
39
40
  index: true,
40
41
  prefix: true,
41
42
  },
@@ -52,7 +53,7 @@ const model = {
52
53
  },
53
54
  {
54
55
  name: 'boarding_time',
55
- type: 'varchar(255)',
56
+ type: 'text',
56
57
  },
57
58
  {
58
59
  name: 'boarding_timestamp',
@@ -61,7 +62,7 @@ const model = {
61
62
  },
62
63
  {
63
64
  name: 'alighting_time',
64
- type: 'varchar(255)',
65
+ type: 'text',
65
66
  },
66
67
  {
67
68
  name: 'alighting_timestamp',
@@ -76,7 +77,7 @@ const model = {
76
77
  },
77
78
  {
78
79
  name: 'rider_type_description',
79
- type: 'varchar(255)',
80
+ type: 'text',
80
81
  },
81
82
  {
82
83
  name: 'fare_paid',
@@ -1,5 +1,6 @@
1
1
  const model = {
2
2
  filenameBase: 'ridership',
3
+ filenameExtension: 'txt',
3
4
  nonstandard: true,
4
5
  extension: 'gtfs-ride',
5
6
  schema: [
@@ -27,7 +28,7 @@ const model = {
27
28
  },
28
29
  {
29
30
  name: 'ridership_start_time',
30
- type: 'varchar(255)',
31
+ type: 'text',
31
32
  },
32
33
  {
33
34
  name: 'ridership_start_timestamp',
@@ -36,7 +37,7 @@ const model = {
36
37
  },
37
38
  {
38
39
  name: 'ridership_end_time',
39
- type: 'varchar(255)',
40
+ type: 'text',
40
41
  },
41
42
  {
42
43
  name: 'ridership_end_timestamp',
@@ -45,7 +46,7 @@ const model = {
45
46
  },
46
47
  {
47
48
  name: 'service_id',
48
- type: 'varchar(255)',
49
+ type: 'text',
49
50
  index: true,
50
51
  prefix: true,
51
52
  },
@@ -93,13 +94,13 @@ const model = {
93
94
  },
94
95
  {
95
96
  name: 'agency_id',
96
- type: 'varchar(255)',
97
+ type: 'text',
97
98
  index: true,
98
99
  prefix: true,
99
100
  },
100
101
  {
101
102
  name: 'route_id',
102
- type: 'varchar(255)',
103
+ type: 'text',
103
104
  index: true,
104
105
  prefix: true,
105
106
  },
@@ -112,12 +113,12 @@ const model = {
112
113
  },
113
114
  {
114
115
  name: 'trip_id',
115
- type: 'varchar(255)',
116
+ type: 'text',
116
117
  prefix: true,
117
118
  },
118
119
  {
119
120
  name: 'stop_id',
120
- type: 'varchar(255)',
121
+ type: 'text',
121
122
  prefix: true,
122
123
  },
123
124
  ],
@@ -1,17 +1,18 @@
1
1
  const model = {
2
2
  filenameBase: 'trip_capacity',
3
+ filenameExtension: 'txt',
3
4
  nonstandard: true,
4
5
  extension: 'gtfs-ride',
5
6
  schema: [
6
7
  {
7
8
  name: 'agency_id',
8
- type: 'varchar(255)',
9
+ type: 'text',
9
10
  index: true,
10
11
  prefix: true,
11
12
  },
12
13
  {
13
14
  name: 'trip_id',
14
- type: 'varchar(255)',
15
+ type: 'text',
15
16
  index: true,
16
17
  prefix: true,
17
18
  },
@@ -22,7 +23,7 @@ const model = {
22
23
  },
23
24
  {
24
25
  name: 'vehicle_description',
25
- type: 'varchar(255)',
26
+ type: 'text',
26
27
  },
27
28
  {
28
29
  name: 'seated_capacity',
package/models/models.js CHANGED
@@ -15,6 +15,7 @@ import frequencies from '../models/gtfs/frequencies.js';
15
15
  import levels from '../models/gtfs/levels.js';
16
16
  import locationGroups from '../models/gtfs/location-groups.js';
17
17
  import locationGroupStops from '../models/gtfs/location-group-stops.js';
18
+ import locations from '../models/gtfs/locations.js';
18
19
  import networks from '../models/gtfs/networks.js';
19
20
  import pathways from '../models/gtfs/pathways.js';
20
21
  import routeNetworks from '../models/gtfs/route-networks.js';
@@ -76,6 +77,7 @@ const models = [
76
77
  levels,
77
78
  locationGroups,
78
79
  locationGroupStops,
80
+ locations,
79
81
  networks,
80
82
  pathways,
81
83
  routeNetworks,
@@ -1,33 +1,34 @@
1
1
  const model = {
2
2
  filenameBase: 'timetable_notes_references',
3
+ filenameExtension: 'txt',
3
4
  nonstandard: true,
4
5
  schema: [
5
6
  {
6
7
  name: 'note_id',
7
- type: 'varchar(255)',
8
+ type: 'text',
8
9
  prefix: true,
9
10
  },
10
11
  {
11
12
  name: 'timetable_id',
12
- type: 'varchar(255)',
13
+ type: 'text',
13
14
  index: true,
14
15
  prefix: true,
15
16
  },
16
17
  {
17
18
  name: 'route_id',
18
- type: 'varchar(255)',
19
+ type: 'text',
19
20
  index: true,
20
21
  prefix: true,
21
22
  },
22
23
  {
23
24
  name: 'trip_id',
24
- type: 'varchar(255)',
25
+ type: 'text',
25
26
  index: true,
26
27
  prefix: true,
27
28
  },
28
29
  {
29
30
  name: 'stop_id',
30
- type: 'varchar(255)',
31
+ type: 'text',
31
32
  index: true,
32
33
  prefix: true,
33
34
  },
@@ -1,20 +1,21 @@
1
1
  const model = {
2
2
  filenameBase: 'timetable_notes',
3
+ filenameExtension: 'txt',
3
4
  nonstandard: true,
4
5
  schema: [
5
6
  {
6
7
  name: 'note_id',
7
- type: 'varchar(255)',
8
+ type: 'text',
8
9
  primary: true,
9
10
  prefix: true,
10
11
  },
11
12
  {
12
13
  name: 'symbol',
13
- type: 'varchar(255)',
14
+ type: 'text',
14
15
  },
15
16
  {
16
17
  name: 'note',
17
- type: 'varchar(2047)',
18
+ type: 'text',
18
19
  nocase: true,
19
20
  },
20
21
  ],
@@ -1,20 +1,21 @@
1
1
  const model = {
2
2
  filenameBase: 'timetable_pages',
3
+ filenameExtension: 'txt',
3
4
  nonstandard: true,
4
5
  schema: [
5
6
  {
6
7
  name: 'timetable_page_id',
7
- type: 'varchar(255)',
8
+ type: 'text',
8
9
  primary: true,
9
10
  prefix: true,
10
11
  },
11
12
  {
12
13
  name: 'timetable_page_label',
13
- type: 'varchar(255)',
14
+ type: 'text',
14
15
  },
15
16
  {
16
17
  name: 'filename',
17
- type: 'varchar(255)',
18
+ type: 'text',
18
19
  },
19
20
  ],
20
21
  };
@@ -1,5 +1,6 @@
1
1
  const model = {
2
2
  filenameBase: 'timetable_stop_order',
3
+ filenameExtension: 'txt',
3
4
  nonstandard: true,
4
5
  schema: [
5
6
  {
@@ -10,13 +11,13 @@ const model = {
10
11
  },
11
12
  {
12
13
  name: 'timetable_id',
13
- type: 'varchar(255)',
14
+ type: 'text',
14
15
  index: true,
15
16
  prefix: true,
16
17
  },
17
18
  {
18
19
  name: 'stop_id',
19
- type: 'varchar(255)',
20
+ type: 'text',
20
21
  prefix: true,
21
22
  },
22
23
  {
@@ -1,5 +1,6 @@
1
1
  const model = {
2
2
  filenameBase: 'timetables',
3
+ filenameExtension: 'txt',
3
4
  nonstandard: true,
4
5
  schema: [
5
6
  {
@@ -10,12 +11,12 @@ const model = {
10
11
  },
11
12
  {
12
13
  name: 'timetable_id',
13
- type: 'varchar(255)',
14
+ type: 'text',
14
15
  prefix: true,
15
16
  },
16
17
  {
17
18
  name: 'route_id',
18
- type: 'varchar(255)',
19
+ type: 'text',
19
20
  prefix: true,
20
21
  },
21
22
  {
@@ -83,7 +84,7 @@ const model = {
83
84
  },
84
85
  {
85
86
  name: 'start_time',
86
- type: 'varchar(255)',
87
+ type: 'text',
87
88
  },
88
89
  {
89
90
  name: 'start_timestamp',
@@ -91,7 +92,7 @@ const model = {
91
92
  },
92
93
  {
93
94
  name: 'end_time',
94
- type: 'varchar(255)',
95
+ type: 'text',
95
96
  },
96
97
  {
97
98
  name: 'end_timestamp',
@@ -99,21 +100,21 @@ const model = {
99
100
  },
100
101
  {
101
102
  name: 'timetable_label',
102
- type: 'varchar(255)',
103
+ type: 'text',
103
104
  nocase: true,
104
105
  },
105
106
  {
106
107
  name: 'service_notes',
107
- type: 'varchar(255)',
108
+ type: 'text',
108
109
  nocase: true,
109
110
  },
110
111
  {
111
112
  name: 'orientation',
112
- type: 'varchar(255)',
113
+ type: 'text',
113
114
  },
114
115
  {
115
116
  name: 'timetable_page_id',
116
- type: 'varchar(255)',
117
+ type: 'text',
117
118
  },
118
119
  {
119
120
  name: 'timetable_sequence',
@@ -123,7 +124,7 @@ const model = {
123
124
  },
124
125
  {
125
126
  name: 'direction_name',
126
- type: 'varchar(255)',
127
+ type: 'text',
127
128
  },
128
129
  {
129
130
  name: 'include_exceptions',
@@ -1,23 +1,24 @@
1
1
  const model = {
2
2
  filenameBase: 'trips_dated_vehicle_journeys',
3
+ filenameExtension: 'txt',
3
4
  nonstandard: true,
4
5
  schema: [
5
6
  {
6
7
  name: 'trip_id',
7
- type: 'varchar(255)',
8
+ type: 'text',
8
9
  required: true,
9
10
  index: true,
10
11
  prefix: true,
11
12
  },
12
13
  {
13
14
  name: 'operating_day_date',
14
- type: 'varchar(255)',
15
+ type: 'text',
15
16
  index: true,
16
17
  required: true,
17
18
  },
18
19
  {
19
20
  name: 'dated_vehicle_journey_gid',
20
- type: 'varchar(255)',
21
+ type: 'text',
21
22
  required: true,
22
23
  },
23
24
  {
@@ -1,5 +1,6 @@
1
1
  const model = {
2
2
  filenameBase: 'deadhead_times',
3
+ filenameExtension: 'txt',
3
4
  nonstandard: true,
4
5
  extension: 'ods',
5
6
  schema: [
@@ -11,14 +12,14 @@ const model = {
11
12
  },
12
13
  {
13
14
  name: 'deadhead_id',
14
- type: 'varchar(255)',
15
+ type: 'text',
15
16
  required: true,
16
17
  index: true,
17
18
  prefix: true,
18
19
  },
19
20
  {
20
21
  name: 'arrival_time',
21
- type: 'varchar(255)',
22
+ type: 'text',
22
23
  required: true,
23
24
  },
24
25
  {
@@ -28,7 +29,7 @@ const model = {
28
29
  },
29
30
  {
30
31
  name: 'departure_time',
31
- type: 'varchar(255)',
32
+ type: 'text',
32
33
  required: true,
33
34
  },
34
35
  {
@@ -38,12 +39,12 @@ const model = {
38
39
  },
39
40
  {
40
41
  name: 'ops_location_id',
41
- type: 'varchar(255)',
42
+ type: 'text',
42
43
  prefix: true,
43
44
  },
44
45
  {
45
46
  name: 'stop_id',
46
- type: 'varchar(255)',
47
+ type: 'text',
47
48
  prefix: true,
48
49
  },
49
50
  {
@@ -1,55 +1,56 @@
1
1
  const model = {
2
2
  filenameBase: 'deadheads',
3
+ filenameExtension: 'txt',
3
4
  nonstandard: true,
4
5
  extension: 'ods',
5
6
  schema: [
6
7
  {
7
8
  name: 'deadhead_id',
8
- type: 'varchar(255)',
9
+ type: 'text',
9
10
  primary: true,
10
11
  required: true,
11
12
  prefix: true,
12
13
  },
13
14
  {
14
15
  name: 'service_id',
15
- type: 'varchar(255)',
16
+ type: 'text',
16
17
  required: true,
17
18
  prefix: true,
18
19
  },
19
20
  {
20
21
  name: 'block_id',
21
- type: 'varchar(255)',
22
+ type: 'text',
22
23
  required: true,
23
24
  index: true,
24
25
  prefix: true,
25
26
  },
26
27
  {
27
28
  name: 'shape_id',
28
- type: 'varchar(255)',
29
+ type: 'text',
29
30
  index: true,
30
31
  prefix: true,
31
32
  },
32
33
  {
33
34
  name: 'to_trip_id',
34
- type: 'varchar(255)',
35
+ type: 'text',
35
36
  index: true,
36
37
  prefix: true,
37
38
  },
38
39
  {
39
40
  name: 'from_trip_id',
40
- type: 'varchar(255)',
41
+ type: 'text',
41
42
  index: true,
42
43
  prefix: true,
43
44
  },
44
45
  {
45
46
  name: 'to_deadhead_id',
46
- type: 'varchar(255)',
47
+ type: 'text',
47
48
  index: true,
48
49
  prefix: true,
49
50
  },
50
51
  {
51
52
  name: 'from_deadhead_id',
52
- type: 'varchar(255)',
53
+ type: 'text',
53
54
  index: true,
54
55
  prefix: true,
55
56
  },
@@ -1,28 +1,29 @@
1
1
  const model = {
2
2
  filenameBase: 'ops_locations',
3
+ filenameExtension: 'txt',
3
4
  nonstandard: true,
4
5
  extension: 'ods',
5
6
  schema: [
6
7
  {
7
8
  name: 'ops_location_id',
8
- type: 'varchar(255)',
9
+ type: 'text',
9
10
  primary: true,
10
11
  required: true,
11
12
  prefix: true,
12
13
  },
13
14
  {
14
15
  name: 'ops_location_code',
15
- type: 'varchar(255)',
16
+ type: 'text',
16
17
  },
17
18
  {
18
19
  name: 'ops_location_name',
19
- type: 'varchar(255)',
20
+ type: 'text',
20
21
  required: true,
21
22
  nocase: true,
22
23
  },
23
24
  {
24
25
  name: 'ops_location_desc',
25
- type: 'varchar(255)',
26
+ type: 'text',
26
27
  nocase: true,
27
28
  },
28
29
  {
@@ -1,18 +1,19 @@
1
1
  const model = {
2
2
  filenameBase: 'run_event',
3
+ filenameExtension: 'txt',
3
4
  nonstandard: true,
4
5
  extension: 'ods',
5
6
  schema: [
6
7
  {
7
8
  name: 'run_event_id',
8
- type: 'varchar(255)',
9
+ type: 'text',
9
10
  primary: true,
10
11
  required: true,
11
12
  prefix: true,
12
13
  },
13
14
  {
14
15
  name: 'piece_id',
15
- type: 'varchar(255)',
16
+ type: 'text',
16
17
  required: true,
17
18
  prefix: true,
18
19
  },
@@ -25,12 +26,12 @@ const model = {
25
26
  },
26
27
  {
27
28
  name: 'event_name',
28
- type: 'varchar(255)',
29
+ type: 'text',
29
30
  nocase: true,
30
31
  },
31
32
  {
32
33
  name: 'event_time',
33
- type: 'varchar(255)',
34
+ type: 'text',
34
35
  required: true,
35
36
  },
36
37
  {
@@ -48,7 +49,7 @@ const model = {
48
49
  },
49
50
  {
50
51
  name: 'event_from_location_id',
51
- type: 'varchar(255)',
52
+ type: 'text',
52
53
  prefix: true,
53
54
  },
54
55
  {
@@ -60,7 +61,7 @@ const model = {
60
61
  },
61
62
  {
62
63
  name: 'event_to_location_id',
63
- type: 'varchar(255)',
64
+ type: 'text',
64
65
  prefix: true,
65
66
  },
66
67
  ],
@@ -1,16 +1,17 @@
1
1
  const model = {
2
2
  filenameBase: 'runs_pieces',
3
+ filenameExtension: 'txt',
3
4
  nonstandard: true,
4
5
  extension: 'ods',
5
6
  schema: [
6
7
  {
7
8
  name: 'run_id',
8
- type: 'varchar(255)',
9
+ type: 'text',
9
10
  required: true,
10
11
  },
11
12
  {
12
13
  name: 'piece_id',
13
- type: 'varchar(255)',
14
+ type: 'text',
14
15
  primary: true,
15
16
  required: true,
16
17
  },
@@ -24,7 +25,7 @@ const model = {
24
25
  },
25
26
  {
26
27
  name: 'start_trip_id',
27
- type: 'varchar(255)',
28
+ type: 'text',
28
29
  required: true,
29
30
  index: true,
30
31
  },
@@ -43,7 +44,7 @@ const model = {
43
44
  },
44
45
  {
45
46
  name: 'end_trip_id',
46
- type: 'varchar(255)',
47
+ type: 'text',
47
48
  required: true,
48
49
  index: true,
49
50
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gtfs",
3
- "version": "4.11.1",
3
+ "version": "4.11.3",
4
4
  "description": "Import GTFS transit data into SQLite and query routes, stops, times, fares and more",
5
5
  "keywords": [
6
6
  "transit",
@@ -76,7 +76,7 @@
76
76
  "test": "NODE_ENV=test mocha ./test/mocha/**/*.js --timeout 2000"
77
77
  },
78
78
  "dependencies": {
79
- "@turf/helpers": "^6.5.0",
79
+ "@turf/helpers": "^7.0.0",
80
80
  "better-sqlite3": "^11.0.0",
81
81
  "csv-parse": "^5.5.6",
82
82
  "csv-stringify": "^6.5.0",
@@ -98,9 +98,9 @@
98
98
  },
99
99
  "devDependencies": {
100
100
  "husky": "^9.0.11",
101
- "lint-staged": "^15.2.5",
101
+ "lint-staged": "^15.2.7",
102
102
  "mocha": "^10.4.0",
103
- "prettier": "^3.3.1",
103
+ "prettier": "^3.3.2",
104
104
  "should": "^13.2.3"
105
105
  },
106
106
  "engines": {