Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[feature] gtfs2ntfs: read route_desc into comments #733

Merged
merged 3 commits into from
Jan 27, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 37 additions & 19 deletions src/gtfs/read.rs
Original file line number Diff line number Diff line change
Expand Up @@ -611,24 +611,24 @@ where
Ok((networks, companies))
}

fn manage_comment_from_stop(
comments: &mut CollectionWithId<objects::Comment>,
stop: &Stop,
) -> CommentLinksT {
let mut comment_links: CommentLinksT = CommentLinksT::default();
if let Some(desc) = &stop.desc {
let comment_id = "stop:".to_string() + &stop.id;
let comment = objects::Comment {
id: comment_id.clone(),
comment_type: objects::CommentType::Information,
label: None,
name: desc.to_string(),
url: None,
};
comments.push(comment).unwrap();
comment_links.insert(comment_id);
}
comment_links
fn generate_stop_comment(stop: &Stop) -> Option<objects::Comment> {
stop.desc.as_ref().map(|desc| objects::Comment {
id: "stop:".to_string() + &stop.id,
comment_type: objects::CommentType::Information,
label: None,
name: desc.to_string(),
url: None,
})
}

fn generate_route_comment(route: &Route) -> Option<objects::Comment> {
route.desc.as_ref().map(|desc| objects::Comment {
id: "route:".to_string() + &route.id,
comment_type: objects::CommentType::Information,
label: None,
name: desc.to_string(),
url: None,
})
}

fn manage_odt_comment_from_stop_time(
Expand Down Expand Up @@ -754,7 +754,13 @@ where
let mut stop_points = vec![];
let mut stop_locations = vec![];
for stop in gtfs_stops {
let comment_links = manage_comment_from_stop(comments, &stop);
let mut comment_links = CommentLinksT::default();
if let Some(comment) = generate_stop_comment(&stop) {
comment_links.insert(comment.id.to_string());
comments
.push(comment)
.expect("Duplicated comment id that shouldn’t be possible");
}
let equipment_id = get_equipment_id_and_populate_equipments(equipments, &stop);
match stop.location_type {
StopLocationType::StopPoint => {
Expand Down Expand Up @@ -1184,6 +1190,18 @@ where
let routes = make_routes(&gtfs_trips, &map_line_routes);
collections.routes = CollectionWithId::new(routes)?;

gtfs_routes_collection.iter().for_each(|(_id, gtfs_route)| {
if let Some(comment) = generate_route_comment(&gtfs_route) {
if let Some(mut route) = collections.routes.get_mut(&gtfs_route.id) {
route.comment_links.insert(comment.id.to_string());
collections
.comments
.push(comment)
.expect("Duplicated comment id that shouldn’t be possible");
}
}
});

let (vehicle_journeys, trip_properties) = make_ntfs_vehicle_journeys(
&gtfs_trips,
&gtfs_routes_collection,
Expand Down
3 changes: 3 additions & 0 deletions tests/fixtures/gtfs2ntfs/routes_comments/input/agency.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
agency_id,agency_name,agency_url,agency_timezone,agency_phone
1,mon agence,http://kisio.org,Europe/Paris,
2,my agency,http://kisio.org,Europe/Paris,0123456789
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
service_id,date,exception_type
service:1,20180101,1
service:1,20180102,1
service:1,20180103,1
service:2,20180105,1
service:2,20180106,1
5 changes: 5 additions & 0 deletions tests/fixtures/gtfs2ntfs/routes_comments/input/routes.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
route_id,route_short_name,route_long_name,line_id,route_type,agency_id,route_desc
route_not_in_trip:1,ma route 1,,line:1,1,1,
route:2,ma route 1,,line:1,1,1,route 2 comment
route:3,ma route 2,,line:2,1,2,
route_not_in_trip:4,ma route 3,,line:2,1,2,
12 changes: 12 additions & 0 deletions tests/fixtures/gtfs2ntfs/routes_comments/input/stop_times.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
trip_id,stop_sequence,stop_id,arrival_time,departure_time,pickup_type,drop_off_type
trip:3,0,stop:31,23:50:00,23:50:00,,
trip:3,1,stop:32,24:03:00,24:05:00,,
trip:3,2,stop:33,24:10:00,24:15:00,,
trip:4,0,stop:11,07:23:00,07:23:00,2,
trip:4,1,stop:22,07:32:00,07:32:00,2,
trip:4,2,stop:33,07:40:00,07:42:00,2,
trip:5,0,stop:51,13:23:00,13:23:00,2,
trip:5,1,stop:52,14:10:00,14:10:00,2,
trip:5,2,stop:53,14:40:00,14:40:00,,2
trip:6,0,stop:61,14:40:00,14:40:00,2,
trip:6,1,stop:61,15:20:00,15:20:00,2,
16 changes: 16 additions & 0 deletions tests/fixtures/gtfs2ntfs/routes_comments/input/stops.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
stop_id,stop_name,stop_lat,stop_lon,location_type,parent_station,stop_desc
stoparea:1,plop,48.844746,2.372987,1,,stoparea:1_comment
stop:11,pouet,48.844746,2.372987,0,stoparea:1,stop:11_comment
stop:12,pouet,48.844746,2.372987,0,stoparea:1,
stop:13,pouet,48.844746,2.372987,0,stoparea:1,
stop:14,pouet,48.844746,2.372987,0,stoparea:1,
stop:21,pouet,48.844746,2.372987,0,stoparea:1,
stop:22,pouet,48.844746,2.372987,0,stoparea:1,
stop:31,pouet,48.844746,2.372987,0,stoparea:1,
stop:32,pouet,48.844746,2.372987,0,stoparea:1,
stop:33,pouet,48.844746,2.372987,0,stoparea:1,
stop:51,pouet,48.844746,2.372987,0,stoparea:1,
stop:52,pouet,48.844746,2.372987,0,stoparea:1,
stop:53,pouet,48.844746,2.372987,0,stoparea:1,
stop:61,pouet,48.844746,2.372987,0,stoparea:1,
stop:62,pouet,48.844746,2.372987,0,stoparea:1,
6 changes: 6 additions & 0 deletions tests/fixtures/gtfs2ntfs/routes_comments/input/trips.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
route_id,service_id,trip_id
route:2,service:1,trip:3
route:2,service:1,trip:4
route:3,service:2,trip:5
route:3,service:2,trip:6
route:3,service:2,with_no_stop_times
3 changes: 3 additions & 0 deletions tests/fixtures/gtfs2ntfs/routes_comments/output/calendar.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
service_id,monday,tuesday,wednesday,thursday,friday,saturday,sunday,start_date,end_date
service:1,1,1,1,0,0,0,0,20180101,20180103
service:2,0,0,0,0,1,1,0,20180105,20180106
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
object_id,object_type,comment_id
route:2,route,route:route:2
stoparea:1,stop_area,stop:stoparea:1
stop:11,stop_point,stop:stop:11
4 changes: 4 additions & 0 deletions tests/fixtures/gtfs2ntfs/routes_comments/output/comments.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
comment_id,comment_type,comment_label,comment_name,comment_url
stop:stoparea:1,information,,stoparea:1_comment,
stop:stop:11,information,,stop:11_comment,
route:route:2,information,,route 2 comment,
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
commercial_mode_id,commercial_mode_name
Metro,Metro
3 changes: 3 additions & 0 deletions tests/fixtures/gtfs2ntfs/routes_comments/output/companies.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
company_id,company_name,company_address,company_url,company_mail,company_phone
1,mon agence,,http://kisio.org,,
2,my agency,,http://kisio.org,,0123456789
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
contributor_id,contributor_name,contributor_license,contributor_website
default_contributor,Default contributor,Unknown license,
2 changes: 2 additions & 0 deletions tests/fixtures/gtfs2ntfs/routes_comments/output/datasets.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
dataset_id,contributor_id,dataset_start_date,dataset_end_date,dataset_type,dataset_extrapolation,dataset_desc,dataset_system
default_dataset,default_contributor,20180101,20180106,,0,,
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
feed_info_param,feed_info_value
feed_creation_date,20190403
feed_creation_time,17:19:00
feed_creation_datetime,2019-04-03T17:19:00+00:00
feed_end_date,20180106
feed_start_date,20180101
ntfs_version,0.11.4
3 changes: 3 additions & 0 deletions tests/fixtures/gtfs2ntfs/routes_comments/output/lines.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
line_id,line_code,line_name,forward_line_name,backward_line_name,line_color,line_text_color,line_sort_order,network_id,commercial_mode_id,geometry_id,line_opening_time,line_closing_time
route:2,ma route 1,,,,,,,1,Metro,,23:50:00,31:40:00
route:3,ma route 2,,,,,,,2,Metro,,13:23:00,15:20:00
3 changes: 3 additions & 0 deletions tests/fixtures/gtfs2ntfs/routes_comments/output/networks.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
network_id,network_name,network_url,network_timezone,network_lang,network_phone,network_address,network_sort_order
1,mon agence,http://kisio.org,Europe/Paris,,,,
2,my agency,http://kisio.org,Europe/Paris,,0123456789,,
17 changes: 17 additions & 0 deletions tests/fixtures/gtfs2ntfs/routes_comments/output/object_codes.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
object_type,object_id,object_system,object_code
stop_area,stoparea:1,source,stoparea:1
stop_point,stop:11,source,stop:11
stop_point,stop:22,source,stop:22
stop_point,stop:31,source,stop:31
stop_point,stop:32,source,stop:32
stop_point,stop:33,source,stop:33
stop_point,stop:51,source,stop:51
stop_point,stop:52,source,stop:52
stop_point,stop:53,source,stop:53
stop_point,stop:61,source,stop:61
network,1,source,1
network,2,source,2
trip,trip:4,source,trip:4
trip,trip:5,source,trip:5
trip,trip:3,source,trip:3
trip,trip:6,source,trip:6
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
physical_mode_id,physical_mode_name,co2_emission
Metro,Metro,3.0
Bike,Bike,0.0
BikeSharingService,BikeSharingService,0.0
Car,Car,184.0
3 changes: 3 additions & 0 deletions tests/fixtures/gtfs2ntfs/routes_comments/output/routes.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
route_id,route_name,direction_type,line_id,geometry_id,destination_id
route:2,ma route 1,forward,route:2,,stoparea:1
route:3,ma route 2,forward,route:3,,stoparea:1
12 changes: 12 additions & 0 deletions tests/fixtures/gtfs2ntfs/routes_comments/output/stop_times.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
stop_id,trip_id,stop_sequence,arrival_time,departure_time,boarding_duration,alighting_duration,pickup_type,drop_off_type,datetime_estimated,local_zone_id,stop_headsign,stop_time_id,stop_time_precision
stop:11,trip:4,0,07:23:00,07:23:00,0,0,2,1,0,,,,0
stop:22,trip:4,1,07:32:00,07:32:00,0,0,2,0,0,,,,0
stop:33,trip:4,2,07:40:00,07:42:00,0,0,1,0,0,,,,0
stop:51,trip:5,0,13:23:00,13:23:00,0,0,2,1,0,,,,0
stop:52,trip:5,1,14:10:00,14:10:00,0,0,2,0,0,,,,0
stop:53,trip:5,2,14:40:00,14:40:00,0,0,1,2,0,,,,0
stop:31,trip:3,0,23:50:00,23:50:00,0,0,0,1,0,,,,0
stop:32,trip:3,1,24:03:00,24:05:00,0,0,0,0,0,,,,0
stop:33,trip:3,2,24:10:00,24:15:00,0,0,1,0,0,,,,0
stop:61,trip:6,0,14:40:00,14:40:00,0,0,2,1,0,,,,0
stop:61,trip:6,1,15:20:00,15:20:00,0,0,1,0,0,,,,0
11 changes: 11 additions & 0 deletions tests/fixtures/gtfs2ntfs/routes_comments/output/stops.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
stop_id,stop_name,stop_code,visible,fare_zone_id,stop_lon,stop_lat,location_type,parent_station,stop_timezone,geometry_id,equipment_id,level_id,platform_code
stop:11,pouet,,1,,2.372987,48.844746,0,stoparea:1,,,,,
stop:22,pouet,,1,,2.372987,48.844746,0,stoparea:1,,,,,
stop:31,pouet,,1,,2.372987,48.844746,0,stoparea:1,,,,,
stop:32,pouet,,1,,2.372987,48.844746,0,stoparea:1,,,,,
stop:33,pouet,,1,,2.372987,48.844746,0,stoparea:1,,,,,
stop:51,pouet,,1,,2.372987,48.844746,0,stoparea:1,,,,,
stop:52,pouet,,1,,2.372987,48.844746,0,stoparea:1,,,,,
stop:53,pouet,,1,,2.372987,48.844746,0,stoparea:1,,,,,
stop:61,pouet,,1,,2.372987,48.844746,0,stoparea:1,,,,,
stoparea:1,plop,,1,,2.372987,48.844746,1,,,,,,
5 changes: 5 additions & 0 deletions tests/fixtures/gtfs2ntfs/routes_comments/output/trips.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
trip_id,route_id,physical_mode_id,dataset_id,service_id,trip_headsign,trip_short_name,block_id,company_id,trip_property_id,geometry_id,journey_pattern_id
trip:4,route:2,Metro,default_dataset,service:1,pouet,,,1,,,
trip:5,route:3,Metro,default_dataset,service:2,pouet,,,2,,,
trip:3,route:2,Metro,default_dataset,service:1,pouet,,,1,,,
trip:6,route:3,Metro,default_dataset,service:2,pouet,,,2,,,
14 changes: 14 additions & 0 deletions tests/gtfs2ntfs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -179,3 +179,17 @@ fn test_minimal_gtfs_frequencies_with_odt_comment() {
);
});
}

#[test]
fn test_minimal_gtfs_with_routes_comments() {
test_in_tmp_dir(|path| {
let input_dir = "./tests/fixtures/gtfs2ntfs/routes_comments/input";
let model = gtfs::read_from_path(input_dir, gtfs::Configuration::default()).unwrap();
ntfs::write(&model, path, get_test_datetime()).unwrap();
compare_output_dir_with_expected(
&path,
None,
"./tests/fixtures/gtfs2ntfs/routes_comments/output",
);
});
}