Conversation
Co-Authored-By: Juan <juanborre@users.noreply.github.com>
Co-Authored-By: Juan <juanborre@users.noreply.github.com>
Co-Authored-By: Juan <juanborre@users.noreply.github.com>
Co-Authored-By: Juan <juanborre@users.noreply.github.com>
…to draft/occupancy_v2
Simplify enum for occupancy, add occupancy_percentage
|
All (the pull request submitter and all commit authors) CLAs are signed, but one or more commits were authored or co-authored by someone other than the pull request submitter. We need to confirm that all authors are ok with their commits being contributed to this project. Please have them confirm that by leaving a comment that contains only Note to project maintainer: There may be cases where the author cannot leave a comment, or the comment is not properly detected as consent. In those cases, you can manually confirm consent of the commit author(s), and set the ℹ️ Googlers: Go here for more info. |
|
To me these are two separate issues. I would even suggest to add: |
|
@googlebot I consent |
|
CLAs look good, thanks! ℹ️ Googlers: Go here for more info. |
|
@skinkie you don't think that having producer independently using 3 values of the enum but not always the same 3 values is a problem? |
|
As a consumer and end user of this data, I think this is good. As an end user (in Sydney), the existing seven values very often were of the nature "precise, but not accurate", i.e., they have all these different cases but what they say rarely matches what a bus looks like inside and what the actually availability of seats or standing room is, or whether the bus was in fact still accepting passengers or not. Limiting the enum cases moves this more towards "less precise, but more accurate". The enum cases were more useful as a data consumer and having more of a "fill state" where it's about a percentage rather than whether the enum string value makes sense, but this PR addresses this by having a percentage. So +1. |
|
(And, agreed, having a separate indicator for "mobility impaired seats available" would be fantastic.) |
|
@gcamp this is a problem, but an implementation / validation detail. |
|
Hi, MobiltyData invited us to discuss about our experience regarding Occupancy from STM.
At the moment, 3 levels would be too restricted, because we could not communicate the situation of physical distancing. I also find that the levels ((NOT_CROWDED, SOME_CROWDING, CROWDED) are ambiguous and can be interpreted differently depending on the client. This is why we decided to be a little more specific. Obviously, all of this could be adjusted if we realize that customers do not fully understand these levels. René-Claude Bouchard |
|
Regarding the pandemic: IMHO it can be mapped to the existing values. In places where the distancing is enforced (they don't let more people to board) then "distancing not possible" == "full", and where it's not enforced, there "distancing not possible" == "crowded" |
|
@flocsy In response to the pandemic, we've implemented in our ITS a ratio system that allows to differenciate between maximal occupancy per vehicle type from desired occupancy. Say a given bus model has 45 seats, but to respect the two meter rule, you want to limit occupancy to 20 seats, our users can set a ratio (in %) of maximal occupancy that will drive the GTFS-RT occupancy status, coupled with our people counter data. In this case, the 45 seat bus would report "standing room only" if 20 people were on the bus at that time. |
|
It seems that opinions vary greatly on changing The original problem points to difficulties for consumers to consistently interpret qualitative uses of At the same time, it has become clear in this thread and issue #223 that the ability to qualitatively describe occupancy levels with Meanwhile, among those who advocate a reduction of the enums, there is not a consistent agreement on how many there should be. @gcamp, @paulswartz, @barbeau, and @stevenmwhite advocate for 3 enums, while Auckland Transport (cc: @jxeeno) and STM (cc: @rcbouchard) use 4. To summarize, it seems that the addition of Does Figuring this out is a dependency for #240, a proposal for providing expected or usual occupancies in static. It should not be adopted with occupancy descriptors that are experimental or contested in GTFS Realtime. We would like consistency between the two so that they are representatively interchangeable, and that descriptors adopted in static do not cement anything that is experimental in GTFS Realtime. Welcoming different opinions! |
|
As an agency. We prefer the occupancy status enum as it directs the data consumers on what we want to publish to the clients, it also leaves a little room for interpretation (i.e. error) which is favorable in the static estimated occupancies. It also allows us to control the value published according to the vehicle size. We prefer a 4 level enum. (Empty, some seats available, standing room only, full) We feel that occupancy percentage leaves the data consumers / clients with the responsibility to understand what 64%, for example, actually means. Since the transit vehicles vary in size, number of seats and standing room. |
|
I think that the standard has to address 2 issues that came up:
What's important is to give enough flexibility to the producer on one hand and enough confidence to interpret it in the correct way for the consumer on the other hand. So maybe the enums should not have a meaning hard coded in their name. Maybe there should be a configuration that the producer publishes with their enums. For example one producer would decide to use 3 enums, another to use 5. So we could call them: occupancy0...occupancyN, where N is given by the producer in the config. The standard would state that occupancy(M) < occupancy(M+1), and that it is recommended that they're "spaced" equally to make it easier to map them on a scale. |
I agree. A good practice would be to use percentage buckets, such as at increments of 20 points (0-20, 20-40, 40-60, 60-80, 80-100). Providing fine-grained percentages would surely be subject to false promises, and would be unnecessary for rider understanding.
Perhaps this could be governed by a best practice instead of making hard changes to the existing
A challenge here is that depending on the seating and standing space available in a given vehicle, the existing @gcamp @barbeau I'm wondering if we could reframe the PR to not deprecate experimental enums that are in use by others, but simply to make official 3 of them? |
|
@scmcca which 3 enums would you make official? |
|
@barbeau Based on the PR for 3 enums, I propose to make official:
We could also advocate (before or after) that Over time, there is the opportunity to reduce this list even further if stakeholders come to find that |
|
@scmcca We agree with your proposal. As for changing names to SEATS_AVAILBLE, we think it works. But for STANDING_AVAILABLE, we think preferable to keep the "only" since standing is by default always available. What we want to communicate by that value is that there is no more seats available. |
|
One of the aspects of percentages that I found thought-provoking: a percentage does not assume information about the type of accommodation available, which is dependent on both the vehicle and the rider's needs/preferences. Is there an opportunity in this enum proposal to be more inclusive of individuals for whom |
This is also the issue I've had with the current enums. Unless your technology is actively reporting on individual seats, you can not guarantee that "only" standing room is available. Many people on transit will stand even if a seat is a available, and thus there is often more people on board than the seats accommodate, and yet there are still seats available. While a percentage does not give information about the types of accommodation available, at least it is universally understood as a scale where There had previously been much discussion about "crowdedness" instead of specific accommodations and that benefits from being an understood scale where Of course, if the technology used is actively tracking the occupancy of seats, that's a different story, but this is very few and far between if used at all. |
|
@stevenmwhite I'm wondering if instead of changing the meaning of enums that are in use and are being advocated for by other stakeholders, that we instead clarify in the spec some guidelines around
|
|
I'd be concerned that officially adopting a subset of the current I think there are 3 primary occupancy use cases that people are discussing:
One option is that we could keep The obvious downside with this approach is that we would have 3 different ways to represent occupancy :(. Although as mentioned above, if producers plan to bucket values in |
I think this would be a good idea. A guideline to help define the percentage and crowding descriptions would be useful for producers and consumers alike. On the other hand, should we also add guidelines indicating that the other enums are not necessarily a linear scale but represent actual communication about the state of the accommodations available and should be used specifically to represent those accommodations? I certainly have no issue keeping something already in and that is helpful to other stakeholders and am not necessarily advocating to get rid of any mention of seats vs standing (these are certainly valuable if they are true!)... it'd probably be good to define their use specific to those accommodations, however, so that it's clear this is not a linear scale and rather represents the state of particular accommodations aboard the vehicle. Right now it seems many producers and consumers are interpreting them as a linear scale and that's what's unclear. |
💯 @stevenmwhite Our posts crossed :). Yes, I think no matter what the outcome is, this needs to be clarified if |
It certainly does not solve the problem wholesale but is a step in the right direction and maybe a viable alternative to adopting all enum values that we still legitimately are not sure about and should therefore remain experimental, or by unviably removing enum values (which received 3 pre-vote -1's). Meanwhile, it seems that we are confident with at least 3 values, so phasing the solution may be okay in this context. Notwithstanding that
This is true but should not matter in the interim. Since
To accomplish this I think we need a positive, rather than negative, framing. Right now the PR is proposing to take experimental enum values away that are in use. Instead, we ought to adopt the ones we are confident about.
Very well said! I'm all for these clarifications. As discussed at length, |
We are indeed using the Why not change the meaning of the different enum values if producers, like us, are already using it as a linear scale? It will make everything clearer and not break the current implementations of the enum. And also work with GTFS-Occupancies (#240). |
The challenge is that the existing @barbeau @stevenmwhite and all. On the topic of disambiguation between intended uses of |
|
Hi everyone. Please find a continuation of the broader realtime occupancy discussion in #223 . Welcoming engagement over there, thanks! |
|
I made a PR on this branch to reform this proposal to add a CrowdLevel enum in place of deprecating values in OccupancyStatus. Inviting reviews and feedback here! |
|
Please see a continuation of this proposal at #261. Thanks! |
|
This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. |
|
This pull request has been closed due to inactivity. Pull requests can always be reopened after they have been closed. See the Specification Amendment Process. |
Update : new thinking available here #212 (comment)
OccupancyStatus was added 6 years ago as an experimental field to the GTFS-rt spec. Multiple producers and consumers have adopted the value but the implementation has currently some problems.
The enum of
occupancy_statushas 7 values, however we've seen that the range of values is not used in practice. We've seen consumer mostly use 3 values to represent the entire range of occupancy. For example :MANY_SEATS_AVAILABLE,FEW_SEATS_AVAILABLEandSTANDING_ROOM_ONLY.EMPTYandNOT_ACCEPTING_PASSENGERS. However, the agency suggest to never display more than 3 textual values for the consumer facing message. More granularity can be provided with colors.FEW_SEATS_AVAILABLE,STANDING_ROOM_ONLY,FULL.For this reason I would suggest to only give 3 values in the enum.
SEATS_AVAILABLE,STANDING_AVAILABLE,FULL. The naming changed slightly to reflect the same 3 values available in SIRI.However, we do lose a lot of granularity of how fine the occupancy value can be provided. To alleviate this problem I would suggest to add a second valueoccupancy_percentageto give a more accurate value of occupancy.It would be percentage value representing the degree of passenger occupancy of the vehicle. The values are represented as an integer without decimals. 0 means 0% and 100 means 100%. The value 100 should represent the total maximum occupancy the vehicle was designed for, including both seated and standing capacity. It is possible that the value goes over 100 if there are currently more passengers than what the vehicle was designed for.It was decided to have both values because they fulfill two different purpose.occupancy_statusis provided to give a understandable value for the user (STANDING_ROOM_ONLYis way more understandable for a user than 50% full).occupancy_percentageis provided to give more granular data.The
occupancy_percentageis now part of a separate PR : #213