[PROPOSAL] Adding advisory speeds and redesigning speed_limits with typed speed #556
Draft
Roel Bollens (RoelBollens-TomTom) wants to merge 2 commits into
Draft
[PROPOSAL] Adding advisory speeds and redesigning speed_limits with typed speed #556Roel Bollens (RoelBollens-TomTom) wants to merge 2 commits into
Roel Bollens (RoelBollens-TomTom) wants to merge 2 commits into
Conversation
…limits Signed-off-by: Roel <75250264+RoelBollens-TomTom@users.noreply.github.com>
Victor Schappert (vcschapp)
left a comment
Collaborator
There was a problem hiding this comment.
I like this proposal - it seems like a natural evolution of the schema and the enumerated type has the benefit of further extensibility if needed.
Three questions:
- Is there buy-in from the rest of the transportation group?
- Are you able to make whatever changes are needed to the transportation combobulator (or whatever successor system is generating the transpo data in the Pipeline)?
- This would technically be a major change, are you able to guide it through the major change process?
…nums Signed-off-by: Roel <75250264+RoelBollens-TomTom@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation
We want to express advisory speeds (also known as recommended safe speed, e.g. before sharp curves or on ramps) in Overture. Today
speed_limitsonly models regulatory limits:Advisory speeds don't fit this shape. We could add them through an extension, but that would replicate most of the speed limit structure (speed value, unit, scoping) outside the core schema for something that is conceptually the same.
Proposed change
Each rule gets a required
typeand a single requiredspeed:maximum/minimumreplacemax_speed/min_speed. A speed limit that previously carried both becomes two.advisoryis new: a recommended safe speed.Dynamic speeds are a property of the road rather than a kind of speed limit, so
is_max_speed_variablemoves toroad_flagsas a newdynamic_speedflag:Alongside it we add an
unlimited_speedflag for roads where no regulatory maximum applies (e.g. parts of the German Autobahn), which is currently not expressible at all. Since road flags support geometric scoping, both flags can be limited to a sub-range of the segment. The road flags description is loosened slightly, since flags now cover more than physical characteristics.Scoping of speed limits (
when, geometric ranges) is unchanged. Future kinds of speed limits only need a new enum value rather than a new field.An aside on flag naming
The new flags are called
dynamic_speedandunlimited_speed, nothas_dynamic_speed, which does leave them sitting a bit oddly next tois_bridgeand friends.The
is_prefixes don't feel quite right. A flag isn't a boolean, it's true simply by being in thevalueslist sois_bridgereads like a boolean field that's wandered into a set. The flag should name the thing (bridge,tunnel), not the question.Renaming the existing flags is a further breaking change I didn't fancy smuggling into this PR, so I've left them out of scope in this proposal.
Compatibility
This is a breaking change to the segment schema. Consumers reading
speed_limitsfrom GeoParquet will see a different struct layout and need a one-time migration. The two newroad_flagsvalues are additive.Alternative considered: additive
advisory_speedKeep
min_speed/max_speed/is_max_speed_variableas they are and add an optionaladvisory_speednext to them.