ipeaGIT / gtfs2gps

Convert GTFS data into a data.table with GPS-like records in R
https://ipeagit.github.io/gtfs2gps/
Other
69 stars 10 forks source link

gtfs2gps error for GTFS frequencies #235

Closed Joaobazzo closed 2 years ago

Joaobazzo commented 2 years ago

We have made several updates in the function update_dt(). However, when the GTFS is frequency type, we are still having some bugs, specially because updates_freq() uses the parameter lag to update timestamps.

library(gtfs2gps) # devtools::install_github("ipeaGIT/gtfs2gps")
spo <- read_gtfs(system.file("extdata/saopaulo.zip", package = "gtfs2gps"))
#> Unzipped the following files to /tmp/Rtmp1m9r0i/gtfsio:
#>   * agency.txt
#>   * calendar.txt
#>   * frequencies.txt
#>   * routes.txt
#>   * shapes.txt
#>   * stop_times.txt
#>   * stops.txt
#>   * trips.txt
#> Reading agency.txt
#> Reading calendar.txt
#> Reading frequencies.txt
#> Reading routes.txt
#> Reading shapes.txt
#> Reading stop_times.txt
#> Reading stops.txt
#> Reading trips.txt
spo_gos <- gtfs2gps(spo)
#> Converting shapes to sf objects
#> Processing the data
#> 
#> Attaching package: 'data.table'
#> The following object is masked from 'package:purrr':
#> 
#>     transpose
#> Linking to GEOS 3.8.0, GDAL 3.0.4, PROJ 7.0.0; sf_use_s2() is TRUE
#> 
#> Attaching package: 'magrittr'
#> The following object is masked from 'package:purrr':
#> 
#>     set_names
#> udunits database from /usr/share/xml/udunits/udunits2.xml
#> Some internal bug occurred while processing gtfs data.
#> Please give us a feedback by creating a GitHub issue
#> (https://github.com/ipeaGIT/gtfs2gps/issues/new)
#> and attaching a subset of your data created from the
#> code below:
#> ################################################
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> 
#> $message
#> [1] "cannot coerce type 'closure' to vector of type 'double'"
#> 
#> $call
#> eval(jsub, SDenv, parent.frame())
#> ids <- c('50784', '50785', '51007', '51194', '51338', '51459', '51460', '51461', '51542', '51657', '51939', '51954', '51956', '51982', '51990', '52072', '52085', '52095', '52103', '52104', '52110', '52111', '52112', '52113', '52123', '52124', '52135', '52139', '52145', '52149', '52165', '52166', '52199', '52200', '52230', '52231', '52234', '52235', '52239', '52251', '52253', '52254', '52256', '52259', '52321', '52341', '52349', '52352', '52380', '52421', '52429', '52466', '52554', '52617', '52618', '52642', '52653', '52654', '52664', '52665', '52666', '52667', '52683', '52691', '52693', '52698', '52712', '52716', '52734', '52735', '52736', '52743', '52774', '52809', '52826', '52842', '52843', '52857', '52858', '52863', '52864', '52882', '52896', '52901', '52902', '52913', '52934', '52935', '52936', '52941', '52977', '52980')
#> data <- gtfs2gps::filter_by_shape_id(spo, ids)
#> gtfs2gps::write_gtfs(data, 'shapes_with_error.zip')
#> ################################################
#> 0 out of 92 shapes (0%) were properly processed.
#> 0 out of 92 trips (0%) were properly processed.

Created on 2022-03-02 by the reprex package (v2.0.1)

Joaobazzo commented 2 years ago

the problem was solved using this approach —throughgtfstools

gtfs_raw <- gtfstools::read_gtfs("../../Dropbox/IPEA/gtfs2gps/data-raw/gtfs/gtfs_spo_sptrans_2019-10.zip")
gtfs_raw$`_transparencia_e-SIC_42374_email_05-09-19` <- NULL

gtfs_raw1 <- gtfstools::frequencies_to_stop_times(gtfs = gtfs_raw)

gtfs_raw1$stop_times[,arrival_time := as.ITime(arrival_time)]
gtfs_raw1$stop_times[,departure_time := as.ITime(departure_time)]

gtfs2gps::write_gtfs(gtfs = gtfs_raw1,"article/gtfs_sptrans.zip")