-
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
Carsharing extension #350
Carsharing extension #350
Conversation
Add "Datetime" in Fields In free_bike_status.json Add : - "current_range_percent" - "available_until" - "home_station" Change the description of "current_range_meters"
Add : vehicle_description - Make - Model - Color
update the example accordingly
add forgotten field : vehicule equipement
Carsharing extension
In this PR, we have added the To keep the proposal non breaking, we could remove the new field definition and let #351 add it afterward. Concerning |
@fchabouis I don't see I understand that an end user would find |
Hello @mplsmitch , thank you for your feddback ! |
Hello @mplsmitch , there is another reason than the one mentionned by @fchabouis. It is generally not possible to know directly from the vehicle which range the vehicle displays on the dashboard unlike the % of charge of battery. Now, if the range in km is calculated as you propose, the end user may feel deceived if the range actually displayed is very different from the range previously given (for the reasons mentionned previsouly). This being said, this is technical constraint isn't ideal for the users and I hope in the future operators will be able to provide a precise range in km, maybe depending on each user, geography, local temperature, etc. |
@fchabouis I think it's important to remember that the consumers of these data are journey planning and MaaS applications, not end users. For the journey planner it's impossible to match an appropriate vehicle with a user without knowing the estimated vehicle range. I agree that the carshare use case is significantly different from escooters and ebikes but I think the need for range data to support these applications is still there. If the fuel or charge lever is substituted for
There's a lot of data contained in the specification that's used to facilitate journey planning but is never shown to end users. While a journey planner may use |
I disagree. Yes, the range of a vehicle (in km) can vary along the lifespan of the battery, but - for what I understand - this should be modelled by udpating the max_range_meter field (provided that the operator knows how to measure this drop in capacity). Moreover, as mentionned earlier, it is generally impossible for carsharers to provide the current_range_meters (unless calculating current_range_percent * max_range_meters). |
I remember discussing this topic of including range as meters or range as percent a lot in the initial work to add vehicle type definitions. See a comment in the middle of the thread here: #136 (comment). As far as the proposed modifications proposed in this PR, I like that the Maybe one differentiating factor about the car use case, in particular, is that it is likely more common for someone to rent a car and refill the gas tank. This is opposed to the e-scooters and e-bikes short-term rental use case where a vehicle may not have as long of a rental time period and users, therefore, may not recharge/refill the vehicle or even have the ability to do so. And on the trip planner side, lots if not most trip planners provide driving directions without built-in calculations of where to stop to refill/recharge a car. It is assumed that people have a common knowledge that refilling/recharging a vehicle will be required at least a few times if one were to attempt to drive across the US for example. I'm not sure what the best user experience is in terms of having this current range communicated to users, but maybe a good start on that topic is to add a field (perhaps in this PR or elsewhere) that describes whether a vehicle can be recharged/refueled, how long that takes and where reenergizing can happen. Then trip planners would at least be able to better communicate whether journeys could occur that exceed a vehicle's maximum full-energy range. Also, it could help to communicate an expected "average" range per charge/full tank. Perhaps this topic is something that could eventually be in a best practices document for how to produce this value and for how client applications should communicate it to users. |
I agree with both Evan and Mitch points. My 2c for an alternative solution: As a trip planner, knowing maximum range is useful for picking the vehicle around you that can actually make the desired trip. However, for petrol vehicles that can be easily refueled this doesn't really matter and we wouldn't take it into account. Perhaps a simple solution is to make current_range_meters only required for electric propulsion, and optional for other use cases? From experience, many carsharing companies don't know in realtime how much petrol would be in a vehicle. |
I share your analysis of the difference between electric vehicle and ICE vehicles, and I understand your needs as a trip planner. However, operators generally don't know the current_range_meters of electric vehicle unless calculating current_range_percent (provided by the vehicle) / max_range_meters (theorical one, based on WLTP). I have the understanding that a trip planner is much more equipped to make the calculation of the required range to realize a trip, based on km, elevation gain, speed (if highway, if congestion, etc.) and temperature. I speak here about a trip of tens of km, not just a few kilometers that should be better realized by bike, escooter, etc. |
What about giving a
For example, with
This way data producers can avoid deceiving users with false promises, but still have to provide an information about the range of the vehicule they are renting. For vehicles where refueling is not a problem, like gas cars, the |
Communauto supports this proposal. |
gbfs.md
Outdated
\- `station_id` <br/>*(added in v2.1)* | Conditionally REQUIRED | ID | Identifier referencing the `station_id` field in [station_information.json](#station_informationjson). REQUIRED only if the vehicle is currently at a station and the [vehicle_types.json](#vehicle_typesjson) file has been defined. | ||
\- `home_station_id` <br/>*(added in v2.3-RC)* | OPTIONAL | ID | The `station_id` of the station this vehicle must be returned to as defined in [station_information.json](#station_information.json). | ||
\- `pricing_plan_id` <br/>*(added in v2.2)* | OPTIONAL | ID | The `plan_id` of the pricing plan this vehicle is eligible for as described in [system_pricing_plans.json](#system_pricing_plans.json). If this field is defined it supersedes `default_pricing_plan_id` in `vehicle_types.json`. This field SHOULD be used to override `default_pricing_plan_id` in `vehicle_types.json` to define pricing plans for individual vehicles when necessary. | ||
\- `vehicle_equipment`<br/>*(added in vXXX)* | OPTIONAL | Array | Description of vehicle equipment that can be provided by the operator in addition to the accessories already provided in the vehicle (field `vehicle_accessories` of vehicle_type.json) but subject to more frequent updates.<br/><br/>Current valid values are:<ul><li>`child_seat_0` _(Baby seat ("0-10kg"))_</li><li>`child_seat_1` _(Seat or seat extension for small children ("9-18 kg"))_</li><li>`child_seat_4` _(Seat or seat extension for older children ("15-36 kg"))_</li><li>`winter_tires` _(Vehicle has tires for winter weather)_</li><li>`snow_chains`</li></ul> |
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.
I have a question about this. I do not believe it is a big change, so it should not impact the timing of the vote but should be addressed before the vote closes.
For the child seats, I believe it should be presented as an enum, not an array. For readability, the car seat enums should be 'a', 'b', 'c' so that they are not mistaken for the number of child seats in the car. Which raises the question - how would a producer represent if there are multiple child seats?
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.
Currently vehicle_equipment
is an array. So if there are 2 child_seat_0
in the vehicle, I guess you can put the item twice in the array.
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.
@fchabouis Would you be ok with changing the naming from child_seat_0
, child_seat_1
, etc to child_seat_a
, child_seat_b
, etc.? To address my concern about the names being mistaken for the number of child seats?
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.
@heidiguenin The changes have been made, thank you
* URI *(added in v1.1)* - A fully qualified URI that includes the scheme (e.g., `com.example.android://`), and any special characters in the URI MUST be correctly escaped. See the following https://www.w3.org/Addressing/URL/4_URI_Recommentations.html for a description of how to create fully qualified URI values. Note that URIs MAY be URLs. | ||
* URL - A fully qualified URL that includes `http://` or `https://`, and any special characters in the URL MUST be correctly escaped. See the following https://www.w3.org/Addressing/URL/4_URI_Recommentations.html for a description of how to create fully qualified URL values. | ||
* Phone number - Phone number in international formatting (specification [E.164](https://en.wikipedia.org/wiki/E.164)). In particular, the phone number MUST start with a "+". The characters after the "+" MUST be numbers and MUST NOT contain any hyphen, space or parenthesis. |
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.
With #351 open for a vote, I'd suggest removing this one to minimize merge conflicts. (They refer to the same standard.)
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.
Ok, you can just merge #351 first and I will resolve the resulting conflict.
Entur supports this proposal |
+1 from the City of Paris (Direction de la Voirie et des Déplacements) |
Voting on this PR closes in 2 calendar days. Please vote for or against the proposal, and include the organization for which you are voting in your comment. Please note if you can commit to implementing the proposal. |
IODINES supports this proposal. |
gbfs.md
Outdated
\- `max_range_meters` | Conditionally REQUIRED | Non-negative float | If the vehicle has a motor (as indicated by having a value other than `human` in the `propulsion_type` field), this field is REQUIRED. This represents the furthest distance in meters that the vehicle can travel without recharging or refueling when it has the maximum amount of energy potential (for example, a full battery or full tank of gas). | ||
\- `name` | OPTIONAL | String | The public name of this vehicle type. | ||
\- `vehicle_accessories`<br/>*(added in vXXX)* | OPTIONAL | Array | Description of accessories available in the vehicle. These accessories are part of the vehicle and are not supposed to change frequently. Current valid values are:<ul><li>`air_conditioning` _(Vehicle has air condition)_</li><li>`automatic` _(Automatic gear switch)_</li><li>`manual` _(Manual gear switch)_</li><li>`convertible` _(Vehicle is convertible)_</li><li>`cruise_control` _(Vehicle has a cruise control system ("Tempomat"))_</li><li>`doors_2` _(Vehicle has 2 doors)_</li><li>`doors_3` _(Vehicle has 3 doors)_</li><li>`doors_4` _(Vehicle has 4 doors)_</li><li>`doors_5` _(Vehicle has 5 doors)_</li><li>`navigation` _(Vehicle has a built-in navigation system)_</li></ul> | ||
\- `g_CO2_km`<br/>*(added in vXXX)* | OPTIONAL | Non-negative integer | Maximum quantity of CO2, in grams, emitted per kilometer, according to the [WLTP](https://en.wikipedia.org/wiki/Worldwide_Harmonised_Light_Vehicles_Test_Procedure). | ||
\- `vehicle_image`<br/>*(added in vXXX)* | OPTIONAL | URL | URL to an image that would assist the user in identifying the vehicle (e.g. logo, image of vehicle).<br /> Allowed formats: JPEG, JPG, PNG. Minimum resolution of 300 pixels per inch (ppi). |
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.
- Aren't
JPG
andJPEG
the same format, just both file extensions are common? 300 ppi
is not a resolution, as ppi describes the pixel density. Defining an aspect ratio (or multiple allowed) could also be considered.
Note that pixel density is not the same as resolution, where the former describes the amount of detail on a physical surface or device, the latter describes the amount of pixel information regardless of its scale.
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.
- True. We can remove JPG wich is just a possible extension of the JPEG format.
- Would "Minimum density of 300 pixels per inch (ppi)" be correct then ?
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.
- Sounds reasonable.
- That would imho make slightly more sense in a technical sense. However, the ppi are dependent from the viewing device... So stating an actual minimal resolution probably was not a bad idea, that's why I ended up thinking about aspect ratios, as you could only specify something like "The shorter edge SHOULD (or MUST?) have at least x pixels." However, the maximum pixels (of the longer edge?) might also is worth to be specified, otherwise huge files (with very high resolutions) would be allowed by the spec, but probably not desirable.
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.
We could remove the constraint on the image size / resolution for the moment and see if it's necessary to add such details afterwards.
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.
@fchabouis I believe that is the right approach for now. When we added vehicle icons and brand assets in v2.3-RC, we recognized that it was a first step, and other additions might be necessarily in the future, too.
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.
Details on the number of pixels have been removed
Co-authored-by: Daniel <36266644+nbdh@users.noreply.github.com>
+1 from Spin. We don't do car sharing but this is not backwards breaking so we're okay with this proposal. |
+1 from Grenoble-Alpes Métropole (mobilités) |
+1 from Move About. |
This vote has now closed, and it passes! Votes in favor: There were no votes against. We'll update the documentation as discussed, and then we will tag and merge this into v2.3-RC2 in the coming weeks. |
Hello, Thanks to all the people who contributed to the improvement of our initial proposal and all those who voted in favor of this Pull Request. Are there any producers who can produce data on their carsharing offer in GBFS format in accordance with this proposal and reusers who will be able to integrate it into their services before april 2022 ? The transport.data.gouv.fr team will support potential producers and reusers if they have difficulties Thank you in advance, @testower @NicolasFrasie @iodines-team @veddan @fredpetit @ncancelliere @MGidel @cmonagle @PeterCOCarShare @kanagy @evansiroky @nbdh @mplsmitch |
modification of : the definition of electric propulsion the name of the hydrogen propulsion
@mplsmitch thanks for merging ! |
part 1 on changes in MobilityData/gbfs#350
Who we are
Transport.data.gouv.fr is the French national access point for mobility data.
We are opening this PR on our behalf and on behalf of a working group involving the “Association des Acteurs de l’Autopartage” (AAA), a French National Association for carsharing grouping 20+ operators, and Iodines.
What problem does your proposal solve?
This PR aims to extend the current GBFS specification to allow car sharing support.
More details can be found in the issue #338.
Proposal overview
We would like to propose an evolution of the GBFS which allows to model car-sharing data by extending the following files. This evolution is based on the addition of new fields and the modification of existing fields.
vehicle_types.json
New optional fields:
-
rider capacity
-
trunk size
-
C02 emission
-
environmental classification
-
accessories
- ...
Field that has been modified:
addition of new allowed values in
propulsion_type
station_information.json
New optional fields:
-
parking_type
-
parking_hoop
-
contact_phone
Field that has been modified:
description of the field
is_virtual_station
free_bike_status.json
New optional fields:
-
available_until
, a datetime specifying how much time the vehicle is available (for round trip carsharing)-
vehicle_equipment
, accessories present in the vehicle (such as child seats)Field that has been modified:
modification of the description of
current_range_meters
Is this a breaking change?
Which files are affected by this change?
vehicle_types.json
station_information.json
free_bike_status.json