Comments (2)
And that will probably speed read_gtfs()
up significantly as well.
from gtfstools.
Fixed that in d920ba4.
Now time columns are read as strings andconverted to seconds after midnight (as int) when needed.
This significantly speed GTFS reading and writing.
Here are some timings:
microbenchmark::microbenchmark(
gtfs <- read_gtfs(data_path),
gtfs_tidy <- tidytransit::read_gtfs(data_path),
gtfs_2gps <- gtfs2gps::read_gtfs(data_path),
times = 5L
)
#> Unit: milliseconds
#> expr min lq mean median uq max neval
#> gtfs <- read_gtfs(data_path) 747.7385 787.6492 798.1753 807.7225 813.6713 834.0952 5
#> gtfs_tidy <- tidytransit::read_gtfs(data_path) 1680.2482 1913.6716 2174.9585 2017.0233 2036.0840 3227.7655 5
#> gtfs_2gps <- gtfs2gps::read_gtfs(data_path) 1968.6259 1970.1558 2278.7080 1996.7162 2523.9983 2934.0436 5
tmp_dir <- tempdir()
tmp_file1 <- tempfile(pattern = "gtfs", tmpdir = tmp_dir, fileext = ".zip")
tmp_file2 <- tempfile(pattern = "gtfs", tmpdir = tmp_dir, fileext = ".zip")
tmp_file3 <- tempfile(pattern = "gtfs", tmpdir = tempdir(), fileext = ".zip")
microbenchmark::microbenchmark(
write_gtfs(gtfs, tmp_file1),
tidytransit::write_gtfs(gtfs_tidy, tmp_file2),
gtfs2gps::write_gtfs(gtfs_2gps, tmp_file3),
times = 5L
)
#> Unit: seconds
#> expr min lq mean median uq max neval
#> write_gtfs(gtfs, tmp_file1) 2.672873 2.678202 3.043181 2.70489 2.801637 4.358303 5
#> tidytransit::write_gtfs(gtfs_tidy, tmp_file2) 3.763208 3.803348 3.882299 3.87548 3.910184 4.059277 5
#> gtfs2gps::write_gtfs(gtfs_2gps, tmp_file3) 2.386184 2.435723 2.536897 2.44019 2.541006 2.881380 5
It may be useful to implement a function such as set_times_to_seconds()
, similar to tidytransit::set_hms_times()
, in the future. Right now every function that requires time calculation (set_trip_speed()
, get_trip_duration()
) needs to convert times to seconds inside it. If a function of this sort exists then we just need to check for the existence of time as seconds columns and use it, if it exists. That'll probably save some time in big GTFS files.
from gtfstools.
Related Issues (20)
- Release gtfstools v1.1.0
- behavior of filter_by_sf with sf::st_crop HOT 2
- function to calculate `shape_dist_traveled` from shape geometry
- validate_gtfs() should also work with gtfs saved as directories
- write gtfs validation vignette
- new parameter `sort_sequence` to shape-related functions HOT 1
- error in `set_trip_speed()` HOT 10
- improving flexibility of filter_by_route_id HOT 1
- `filter_by_*` should take into account when `agency.txt` has only 1 agency and it's not listed in the other tables HOT 1
- Release gtfstools v1.2.0
- adapt `validate_gtfs()` and `merge_gtfs()` to start accepting other types of gtfs objects HOT 1
- New function stop_times_to_frequencies() HOT 4
- Extraction by route_type for extended route types HOT 6
- Foreign key violation after filter_by_sf() HOT 8
- Error when using get_trip_geometry() and get_trip_speed(): sfheaders - error indexing lines HOT 3
- After processing saves round shape_distances in exponential notation HOT 7
- function copy_gtfs_without_field HOT 1
- Deprecate `full_trips` in `filter_by_stop_id()` for v2.0.0
- Superseed `filter_by_sf()` with `filter_by_spatial_extent()` and create `crop_gtfs()` HOT 1
- Extended GTFS Route Types are mentioned in docs, but throw an error HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gtfstools.