-
Notifications
You must be signed in to change notification settings - Fork 293
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
GBFS V1.1 Add support for e-bikes and geofenced bike return areas #92
Conversation
… areas Tried to decouple geofencing zones from stations as much as possible, while maintaining the ability to link them as that exists in some systems. free_bike_status.json can now be used to determine the number of each type of bike available per station and per geofencing zone. Add geofencing_zone_information.json to list low volatility information relating to geofencing zones, such as their position and which station, if any, they are linked to. Add geofencing_status.json to list transient information relating to geofencing zones, such as whether the zone is allowing returns and the number of bikes it contains. Modify free_bike_status.json to include the bike type, as well as a way to differentiate whether bikes are geofenced at a station, or geofenced in a free floating system.
Good to see that someone is working on improvements based on new developments in bikesharing. I would like to make bike type more general. mechanical bikes and electrical bikes are indeed two types of bikes. But there are several other 'types' of bikes (bikes without gears, bikes with 3 gears, bikes with 8 gears, tandems, cargo bikes, all of these types are already for rent in the Netherlands). Something else I am not sure about is if geofencing_zone_status.json is really needed, because most of the data in this file is derived data. All the data can be derived from https://github.com/NABSA/gbfs/blob/master/gbfs.md#free_bike_statusjson. Only is_returning is maybe interesting because some cities have zones where parking is forbidden, but I think it's better to develop a separate standard for municipalities where they can define those zones (because if you have 5 bike operators in a city you get 5 overlapping zones, if municipality makes those files available the bike operator can use them in their own apps as well). EDIT: There is already a ticket that discusses bike_types. #81 |
@sven4all we have already implemented the feature as described, so if you want additional changes, you will have to open another request yourself. In our context, geofencing_zone_status is needed. You don't need to implement it if you don't need it. |
Hey @dsgermain,
I think you mentioned pinging back when the consuming application is
available ? I'm curious to see how it translates to features.
…On Fri, 27 Apr 2018, 10:29 dsgermain, ***@***.***> wrote:
@sven4all <https://github.com/sven4all> we have already implemented the
feature as described, so if you want additional changes, you will have to
open another request yourself.
In our context, geofencing_zone_status is needed. You don't need to
implement it if you don't need it.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
<#92 (comment)>, or mute
the thread
<https://github.com/notifications/unsubscribe-auth/AAZbi8jrYCYMDNXArFxxtbQP7qwleDOWks5tsytDgaJpZM4Sm2vl>
.
|
@dsgermain Very cool! What's the GBFS endpoint where the new features are available? |
@barbeau it is not released yet (still in a version that is in QA). The first city to have it will probably be Chattanooga in a few weeks. I will ping here once deployed. cc @f8full |
@Chicago is also including the draft v1.1 spec in this pull request as part of their dockless bikeshare program this summer (starting today). Companies haven't deployed, yet, but will also note when it's deployed. |
Digging-in to some of the more detailed specifics of v1.1, it appears that I assume this is because v1.0 required |
@tomschenkjr - there's a discussion going on about clarifying that in #96. In short we would change |
@mplsmitch - thanks! I'll hop over to 96 and discuss in-thread. |
Before v1.1 is released, I wanted to bring up the idea of introducing a version field in the spec, so consumers know when a producer has updated their feed. I started a discussion at #94 if anyone wants to talk further on this (just to keep all the discussion in the same place). |
Still not sure about this proposal. Why should we introduce a separate entity for geofence? geofence for me is another kind of a station, it's not a physical station but a virtual station. Isn't it better to add a field to station that make it possible to distinguish physical and virtual stations? |
Oops! too many tabs open - I'll fix it. Thanks @sven4all
|
### station_status.json | ||
|
||
Field Name | Required | Defines | ||
--------------------- | ----------| ---------- | ||
stations | Yes | Array that contains one object per station in the system as defined below | ||
\- station_id | Yes | Unique identifier of a station (see station_information.json) | ||
\- num_bikes_available | Yes | Number of bikes available for rental | ||
\- num_bikes_available_types | Yes | Array that contains one entry per bike type as defined below (more types can be added) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@dsgermain what you mean by array of entries? Each entry should be an object like [{ 'ebike': 5 }, { 'mechanical': 3 }]
? Can you give an example?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@hkieferling Yes, your example is correct. It would be nice to have a base set (enum) of approved bike types which the vendors can extend if it doesn't fit their model.
@sven4all we want to avoid the client (consumer) having to know which variables are "active" or "valid" within the station feed. If we merge geofencing zones within stations, some variables will be populated/not populated as a function of whether the geofencing zones are active or not. It is cleaner to separate the two concepts so that physical stations, mixed physical/geofencing stations or pure geofencing stations have a clear set of distinct variables. In your counter proposal, how would the client know which variable they can use without having to know the implementation details of the feed? |
@dsgermain hmm, I think that this is in general a 'problem' with GBFS there are a lot of optional fields. But let's have a closer look: while station_information.json consists of the following fields: extra in station_information.json in comparison to geofencing_zone_information.json is short_name, address , cross_street, rental_methods (all those fields are optional, but I don't see any reason why they can't be used with geofences) geofencing_zone_status.json (https://github.com/NABSA/gbfs/blob/f76251ad4c754b62defc42562887724f287b73ea/gbfs.md#geofencing_zone_statusjson) consists completely of data that could be derived from free_bike_status.json (https://github.com/NABSA/gbfs/blob/f76251ad4c754b62defc42562887724f287b73ea/gbfs.md#free_bike_statusjson) and therefor it's in my opinion cleaner to don't include that file at all in the specification. I already started a while ago with making my counter proposal more specific, https://github.com/openbikeshare/gbfs/blob/virtual_location/gbfs.md#station_informationjson (WIP). I would like to hear others opinions as well. |
@sven4all as mentioned, we have hybrid stations which are physical + a geofencing zone around or near them (same station ID). Your proposal does not seem to handle that. BTW, our proposal is already live on our Chattanooga system. |
Ok maybe you could explain hybrid stations better to me (I don't understand them, why would you combine a physical racks with a geofencing zone?). In my proposal you can set is_returning in station_status.json https://github.com/NABSA/gbfs/blob/f76251ad4c754b62defc42562887724f287b73ea/gbfs.md#station_statusjson always to true I think that's exactly the same policy as you describe as hybrid? All bikes that are not in a rack can be put in free_bike_status.json. |
Hello there, I am Evan Siroky and I have been working on improving OpenTripPlanner to be able to plan multi-modal trips with one-way car rentals (Car2Go and ReachNow). In order to make the trip planner properly take note of the service area of the carshare companies, we manually defined some GeoJSON representing the service area. These service area definitions are absolutely critical pieces of information that are required during trip planning purposes to adequately tell the user where a vehicle can be dropped off. It would be great if this PR could be vetted and merged into the specification as soon as possible. I have a few recommendations for improving this existing proposal:
|
Related to @evansiroky's suggested changes above - could we get a show of hands for who has implemented geofenced bike return areas as currently presented in this proposal? And who has implemented a different approach (with a link to that approach)? |
In a branch of OpenTripPlanner yet to be merged into the main branches, we have implemented code to consume data about car rentals that includes a geofence (see here). For now, there is a single url where the response body returned is a single GeoJSON MultiPloygon representing the full extent of the area that dropping off a car is allowed. |
I'm with @MobilityData working for @NABSA. Observing this discussion, it seems like experimental data practices around geofencing and vehicle types are beginning to diverge. @dsgermain Did Chattanooga implement this proposal? @evansiroky Any updates on the OpenTripPlanner implementation? Here are my suggestions to move this forward:
@dsgermain Can you provide a description or example of cases showing why need the above values for the geofenced area and station facility separately, rather than for the aggregate station complex? One process example we might borrow from GTFS is using a Google Doc to hammer out specification changes because it makes commenting and changes easier. This document shows use case examples: http://bit.ly/gtfs-pathways Does anyone have other suggestions or feedback for how to move forward with a consensus specification change? |
In the IBI fork of OpenTripPlanner, we have implemented code to consume GBFS feeds where each "bike" is assumed to be an eScooter. We currently have a test server running with this implementation. On our test server, we are consuming data from 7 companies operating eScooters with a GBFS feed. Of those 7 companies, two of the feeds do appear to have partially implemented this PR and have the On another somewhat related note, we have also implemented a way to manually load two other GeoJSON files to describe areas where a city has regulations of "no eScooter parking" and "no eScooter riding" respectively. Issue #167 hints at the need for a more structured way to obtain that information. I think it makes sense to split up the effort of coming to a consensus on defining vehicle types and geofencing as they are fairly independent topics, although I think both are very important. |
Note that there is an open pull request (openmobilityfoundation/mobility-data-specification#322) on the Mobility Data Specification (MDS) related to geofencing in GBFS. This feature would make it possible for cities to specify and change allowed and disallowed travel zones via the MDS API. Possibilities:
Implications:
Just wanted to establish this link so GBFS and MDS are on a good coordination path… A comparison of open proposals to add geofencing and dockless features to GBFS is here: https://docs.google.com/spreadsheets/d/1mItFXGE0WdubtQBEeEPjil7HUyKt-48cyaoBL-k1pRc/edit. I'll add notes about MDS. |
Additional feedback or questions on the MDS Policy proposal are strongly encouraged! I am working on a presentation covering the background and rationale that's a little less dry. |
The intent was always for the system_regions feed to be able to provide a denormalized place for details about things like geofences, but we hadn't actually gotten to a place where this was defined. It's possible this does not actually cover the use cases we're thinking about, but it's definitely something to explore. |
PR #136 and PR #175 address these issues and represent a heap of input from GBFS consumers and producers. We're hoping we can solidify support around them as the next steps forward. It would be great to get all of your input over there on the solutions that have emerged so far as "minimum viable proposals" that better represents what operators are providing on the ground. That said, I'd like to propose we close this issue and move relevant conversation there. @dsgermain @sven4all @f8full @barbeau @tomschenkjr @mplsmitch @hkieferling @evansiroky @jcn @Karcass |
Decoupled geofencing zones from stations as much as possible, while maintaining the ability to link them as that exists in some systems. Zones need to be decoupled because they can live independently from stations, although in some systems they are intrinsically linked to them. Although some variables are the same between stations and zones, zones have features which are unique to them. If we left zones within stations, it would become confusing to define pure zones (stations that have no docks).
free_bike_status.json can now be used to determine the number of each type of bike available per station and per geofencing zone.
Add geofencing_zone_information.json to list low volatility information relating to geofencing zones, such as their position and which station, if any, they are linked to.
Add geofencing_status.json to list transient information relating to geofencing zones, such as whether the zone is allowing returns and the number of bikes it contains.
Modify free_bike_status.json to include the bike type, as well as a way to differentiate whether bikes are geofenced at a station, or geofenced in a free floating system.
Modify station_status.json to add is_charging_station field to indicate if charging ability is present at this station.