GTFS-Flex for Stadtnavi Herrenberg

https://www.swp.de/suedwesten/staedte/stuttgart/ruftaxi-ergaenzt-bus-und-bahn-26894420.html

GTFS

GTFS

with Flex

generate-herrenberg-gtfs-flex

import

OpenTripPlanner
herrenberg.stadtnavi.de

$ xsv search -s trip_id '^1.T0.50-782-j21-1.1.H$' trips.txt
# trip_id,route_id,service_id,trip_headsign
# 1.T0.50-782-j21-1.1.H,50-782-j21-1,T0#64,Herrenberg Grafenweg

$ xsv search -s route_id '^50-782-j21-1$' routes.txt
# route_id,route_type,route_short_name
# 50-782-j21-1,715,RT782

$ xsv search -s trip_id '^1.T0.50-782-j21-1.1.H$' stop_times.txt
# stop_sequence,stop_id,arrival_time,departure_time,pickup_type,drop_off_type
# 1,de:08115:4512:5:D,23:19:00,23:19:00,0,0
# 2,de:08115:4802:0:3,23:21:00,23:21:00,0,0
# 3,de:08115:3225:0:3,23:23:00,23:23:00,0,0
# 4,de:08115:3233:0:3,23:24:00,23:24:00,0,0
# 5,de:08115:7004:0:3,23:26:00,23:26:00,0,0
# 6,de:08115:7012:0:3,23:27:00,23:27:00,0,0
# 7,de:08115:4801:0:3,23:28:00,23:28:00,0,0
# 8,de:08115:7006:1:3,23:29:00,23:29:00,0,0
# install from GitHub
npm install derhuerst/generate-herrenberg-gtfs-flex#duplicate-stop-times --save-dev

# patch GTFS-Flex into GTFS feed
generate-booking-rules-txt flex-rules.js gtfs/*.txt >gtfs/booking_rules.txt
generate-locations-geojson flex-rules.js gtfs/*.txt >gtfs/locations.geojson
patch-routes-txt flex-rules.js gtfs/*.txt | sponge gtfs/routes.txt
patch-trips-txt flex-rules.js gtfs/*.txt | sponge gtfs/trips.txt
patch-stop_times-txt flex-rules.js gtfs/*.txt | sponge gtfs/stop_times.txt

# or via Docker
docker run -it --rm \
	-v $PWD/gtfs:/gtfs \
    derhuerst/generate-herrenberg-gtfs-flex:duplicate-stop-times
stop_times.txt
booking_rules.txt
locations.geosjon
{
	"id": "herrenberg-300m-de:08115:7006:1:3-flex",
	"type": "Feature",
	"properties": {
		"stop_name": "Herrenberg Grafenweg",
	},
	"geometry": {
		"type": "Polygon",
		"coordinates": [
			[
				[
					8.88609,
					48.60217
				],
				[
					8.8853,
					48.60211
				],
				// …
				[
					8.88609,
					48.60217
				]
			]
		]
	}
}
flex-rules.js
const herrenbergFlex = {
	id: 'herrenberg-citybus-300m',
	radius: .3, // in km, for the generated location area
	pickup_type: pickupTypes.MUST_PHONE_AGENCY,
	drop_off_type: dropOffTypes.MUST_COORDINATE_WITH_DRIVER,
}

const herrenbergFlexRule = (route) => {
	return route.route_short_name === 'RT782'
		? herrenbergFlex
		: null
}
flex-rules.js
const herrenbergFlex = {
	id: 'herrenberg-citybus-300m',
	radius: .3, // in km, for the generated location area
	pickup_type: pickupTypes.MUST_PHONE_AGENCY,
	drop_off_type: dropOffTypes.MUST_COORDINATE_WITH_DRIVER,
	bookingRule: {
		booking_rule_id: 'herrenberg-citybus',
		booking_type: bookingTypes.SAME_DAY,
		prior_notice_duration_min: 30,
		message: 'Anmeldung bis 30min vor Abfahrt.',
		drop_off_message: 'Haustürbedienung beim Absetzen 300m (Luftlinie) um die Haltestelle. Aufpreis 0,80€ direkt an den Taxi-Fahrer.',
		phone_number: '+49 7032 92029',
		info_url: 'https://stadtwerke.herrenberg.de/oepnv-parken/oepnv/weitere-informationen/',
	},
}

const herrenbergFlexRoutes = ['RT779', 'RT780', 'RT782', 'RT783']
const herrenbergFlexRule = (route) => {
	return herrenbergFlexRoutes.includes(route.route_short_name)
		? herrenbergFlex
		: null
}

GTFS-Flex for Stadtnavi Herrenberg

By Jannis R

GTFS-Flex for Stadtnavi Herrenberg

  • 412