Skip to content

Releases: ipeaGIT/gtfstools

gtfstools v1.3.0

07 Oct 19:33
Compare
Choose a tag to compare

New features

  • New function convert_sf_to_shapes().
  • New generic function as_dt_gtfs() with methods for a few different classes
    (tidygtfs, gtfs and list).
  • {gtfstools} functions now accepts GTFS objects created by other packages,
    such as {gtfsio} and {tidytransit}.
  • filter_by_route_type() now accepts Google Transit's extended route
    types
    .
    Thanks @Ge-Rag.
  • convert_shapes_to_sf(), get_trip_geometry(), get_trip_length(),
    get_trip_speed(), get_trip_segment_duration() and
    get_stop_times_patterns() now take an additional argument sort_sequence,
    used to indicate whether shapes/timetables should be ordered by
    shape_pt_sequence/stop_sequence when applying the functions' procedures.
  • download_validator() and validate_gtfs() now support using validator
    v4.1.0 and v4.2.0.
  • New parameters to filter_by_stop_id(): include_children and
    include_parents.

Bug fixes

  • Fixed a bug in convert_to_standard() in which the date fields from
    feed_info would not be converted back to an integer in their standard
    format (YYYYMMDD).
  • Filtering functions now also filter the transfers table based on trip_id
    and route_id. Previously they would filter it based only on stop_id.
    Thanks Daniel Langbein (@langbein-daniel).
  • Fixed a bug in filter_by_route_id() in which feeds with only one agency
    that omitted agency_id in routes and fare_attributes would end up with
    an empty agency table.
  • filter_by_sf() now correctly throws an error when an unsupported function
    is passed to spatial_operation.

Feature deprecation

  • The filter_by_stop_id() behavior of filtering by trips that contain the
    specified stops has been deprecated. For backwards compatibility reasons,
    this behavior is still the default as of the current version and is
    controlled by the parameter full_trips. To actually filter by stop ids (the
    behavior that we now believe is the most appropriate), please use full_trips = FALSE. This behavior will be the default from version 2.0.0 onward. To
    achieve the old behavior, manually subset the stop_times table by stop_id
    and specify the trip_ids included in the output in filter_by_trip_id().
  • filter_by_sf() has been deprecated in favor of
    filter_by_spatial_extent(). For backwards compatibility reasons, usage of
    filter_by_sf() is still allowed as of the curent version, but the function
    will be removed from the package in version 2.0.0.

Notes

  • validate_gtfs() now defaults to run sequentially. Previously it would
    default to run parallelly using all available cores. Heavily inspired by
    Henrik Bengtsson post "Please Avoid detectCores() in your R packages"
    (https://www.jottr.org/2022/12/05/avoid-detectcores/).
  • Improved performance of seconds_to_string() and, consequently, any other
    functions that use it.
  • Improved performance and improved readability of most filtering functions.

gtfstools v1.2.0

24 Nov 13:58
Compare
Choose a tag to compare

New features

  • New validate_gtfs() behavior. Now used to run MobilityData Canonical GTFS
    validator with a feed. The old behavior was marked as deprecated since
    v1.0.0.
  • New function download_validator().
  • New vignette demonstrating how to validate feeds.

Bug fixes

  • Fixed a bug in write_gtfs() that prevented as_dir = TRUE to be used.
  • Fixed a bug in set_trip_speed() that resulted in invalid stop_times tables
    when max(stop_sequence) was higher than the number of stops of a given
    trip. Thanks Alena Stern (@alenastern).
  • Fixed a bug in set_trip_speed() that resulted in the speed of wrong
    trip_ids being updated because of the order that these ids would appear in
    the trips and stop_times tables. Thanks Alena Stern (@alenastern).

gtfstools v1.1.0

25 May 13:27
Compare
Choose a tag to compare

New features

  • New function convert_time_to_seconds().
  • New function filter_by_agency_id().
  • New function filter_by_service_id().
  • New function filter_by_time_of_day().
  • New function filter_by_weekday().
  • New function frequencies_to_stop_times().
  • New function get_children_stops().
  • New function get_stop_times_patterns().
  • New function get_trip_length().
  • New parameter to merge_gtfs(): prefix. The warnings parameter
    was flagged as deprecated.
  • Functions get_parent_station() and get_children_stops now accept
    stop_id = NULL to analyze all stop_ids in the stops table.

Bug fixes

  • Fixed a bug in which get_trip_segment_duration() would list wrong
    segment numbers, not necessarily starting from 1. Now segment numbers
    always range from 1 to N, where N is the total number of segments that
    compose each trip.
  • Fixed a bug in filter_by_{route,service,shape,trip}_id() that
    resulted in the agency table not getting filtered when the specified
    id was character(0).

Notes

  • Performance improvements to get_trip_geometry(),
    get_trip_duration(), get_trip_segment_duration() and
    convert_shapes_to_sf().
  • Stopped ordering points by shape_pt_sequence/stop_sequence in
    get_trip_geometry() and convert_shapes_to_sf(), since the GTFS
    reference says that the stop_times and shapes tables must be
    ordered by point/stop sequence anyway.
  • Removed {lwgeom} from dependencies (Suggests), now that it's not
    required to run get_trip_speed() and set_trip_speed() anymore.
  • Removed the warnings parameter from read_gtfs() and write_gtfs()
    and the optional and extra parameters from write_gtfs(), flagged
    as deprecated on gtfstools v1.0.0.
  • Updated filtering vignette to demonstrate new functions.

gtfstools v1.0.0

16 Nov 11:45
Compare
Choose a tag to compare

New features

  • New function convert_stops_to_sf().
  • New function convert_shapes_to_sf().
  • New function filter_by_route_type().
  • New function filter_by_route_id().
  • New function filter_by_sf().
  • New function filter_by_shape_id().
  • New function filter_by_stop_id().
  • New function filter_by_trip_id().
  • New function get_parent_station().
  • New function remove_duplicates().
  • New parameters to read_gtfs(): fields, skip and encoding. The warnings parameter was flagged as deprecated.
  • New parameters to write_gtfs(): files, standard_only and as_dir. They substitute the previously existent optional and extra, which were flagged as deprecated. The warnings parameter was flagged as deprecated too.
  • New vignette exploring the filtering functions.

Bug fixes

  • get_trip_speed() and set_trip_speed() examples and tests now only run if {lwgeom} is installed. {lwgeom} is an {sf} "soft" dependency required by these functions, and is listed in Suggests. However, package checks would fail not so gracefully if it wasn't installed, which is now fixed.
  • Fixed a bug in which the crs passed to get_trip_geometry() would be assigned to the result without actually reprojecting it.
  • Changed the behaviour of get_trip_geometry() to not raise an error when the 'file' parameter is left untouched and the GTFS object doesn't contain either the shapes or the stop_times table. Closes #29.
  • Fixed a bug that would cause merge_gtfs() to create objects that inherited only from dt_gtfs (ignoring gtfs and list).
  • Fixed a bug in which get_trip_speed() returned NA speeds if the specified trip_id was listed in trips, but not in stop_times.
  • Adjusted set_trip_speed() to stop raising a max()-related warning when none of the specified trip_ids exists.

Notes

  • Some utility functions previously provided by {gtfs2gps} will now be exported by {gtfstools}. Huge thanks to the whole {gtfs2gps} crew (Rafael Pereira @rafapereirabr, Pedro Andrade @pedro-andrade-inpe and João Bazzo @Joaobazzo)!
  • The package now imports {gtfsio}, and many functions now heavily rely on it, such as read_gtfs() and write_gtfs().
  • Internal function string_to_seconds() now runs much faster thanks to Mark Padgham (@mpadge).
  • get_trip_geometry() now runs much faster due to data.table-related optimizations.

Potentially breaking changes

  • Functions no longer validate GTFS objects on usage. validate_gtfs() will be flagged as deprecated as well, since I plan to heavily change its usability and outputs in future versions.
  • write_gtfs() parameters went through major changes - the optional and extra params were flagged as deprecated and substituted by the more general files and standard_only.

v0.1.0

23 Feb 13:14
Compare
Choose a tag to compare
  • Initial CRAN release.