Comments (6)
@dhersz i'm restructing gtfsrouter
to use lots of your great stuff. There is one function which used to live within my extract_gtfs()
function which has now been replaced by gtfsio::import_gtfs()
, and which is still needed, but would maybe be better living here. It is pure C++, and does one of the items listed above:
- implement
set_times_to_seconds()
.
It works just like these two lines - a single line call that is way faster than any R functions to do this. Let me know and i'll happily PR here.
from gtfstools.
Hi @mpadge. This is so good, many thanks!
Just some backstory behind set_times_to_seconds()
: I currently use a string_to_seconds()
functions I wrote based on tidytransit::hms_to_seconds()
(or something along these lines) to convert the time inside functions that require such conversion, such as get_trip_duration()
. Your function is certainly much faster than the one I use right now, so I'll gladly start using it instead.
Now, I wanted to have set_times_to_seconds()
to save some time when repeatedly calculating the duration of trips, or something like this, because right now get_trip_duration()
will always create two new columns arrival_time_secs
and departure_time_secs
via string_to_seconds()
when making such calculations. Therefore, the purpose of set_times_to_seconds()
would be to create such columns beforehand, so the user would only need to make this conversion once, instead of every single time they wanted to calculate durations or speeds (hence requiring a check inside get_trip_duration()
to see if these columns already exist).
Because your function is so much faster than string_to_seconds()
, which was written purely in R, perhaps set_times_to_seconds()
as I first thought of it is not as important right now. So to answer your question, I'd keep rcpp_time_to_seconds()
as a internal function right now and add a wrapper (set_times_to_seconds()
) later.
from gtfstools.
note to self: write tests as you write functions
from gtfstools.
I think this would be a great contribution, @mpadge .
from gtfstools.
Great! It's currently just an internal function that calls directly to the C++ code, so we'll just need to work out whether you might actually want it as some kind of exported and R-wrapped function? I can get a PR together in the meantime regardless, initially with just the internal C++ code, and we can work out where the two lines of R code go:
stop_times [, arrival_time := rcpp_time_to_seconds (arrival_time)]
stop_times [, departure_time := rcpp_time_to_seconds (departure_time)]
from gtfstools.
Closing this in favor of individual issues.
from gtfstools.
Related Issues (20)
- Add `strategy` parameter to `frequencies_to_stop_times()` HOT 1
- 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
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.