Skip to content

Commit 9c4f4cd

Browse files
committed
code for creating shapes gtfs
1 parent 4f6727d commit 9c4f4cd

1 file changed

Lines changed: 40 additions & 0 deletions

File tree

code/gtfs_swiss.R

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
library(sf)
2+
library(tidyverse)
3+
library(tidytransit)
4+
5+
# city limit
6+
geneve_limit = st_read("original/Ville_de_Genève.shp")
7+
geneve_limit = st_transform(geneve_limit, 4326)
8+
9+
# very large swiss gtfs
10+
swiss_gtfs = read_gtfs("original/gtfs_fp2025_20251002.zip")
11+
summary(swiss_gtfs)
12+
geneve_gtfs = swiss_gtfs |> filter_feed_by_area(geneve_limit) # crop in geneve
13+
14+
15+
# Method 1 - with GTFSwizard ----------------------------------------------
16+
17+
18+
# create shape_id variable when is missing
19+
geneve_gtfs$trips = geneve_gtfs$trips |> mutate(shape_id = NA) # this is the trick!
20+
write_gtfs(geneve_gtfs, "original/geneve_gtfs.zip")
21+
22+
geneve_gtfs_wshapes = GTFSwizard::read_gtfs("original/geneve_gtfs.zip") # create the shapes
23+
summary(geneve_gtfs_wshapes)
24+
GTFSwizard::write_gtfs(geneve_gtfs_wshapes, "original/geneve_gtfs_shapes.zip") # saved GTFS with shapes
25+
26+
# verify shapes
27+
geneve_shapes = tidytransit::shapes_as_sf(geneve_gtfs_wshapes$shapes)
28+
mapview::mapview(geneve_shapes, zcol = "mode")
29+
30+
31+
32+
# Method 2 - from OSM -----------------------------------------------------
33+
library(osmdata)
34+
35+
geneve_transit_osm = opq(bbox = st_bbox(geneve_limit)) |>
36+
add_osm_feature(key = "route", value = "bus")
37+
# add_osm_feature(key = "network") |>
38+
39+
trips_geometry_osm = GTFShift::osm_trips_to_routes(geneve_gtfs_wshapes, geneve_transit_osm)
40+
# not working

0 commit comments

Comments
 (0)