Skip to content
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

Handle route relations #4

Open
xivk opened this issue May 28, 2020 · 0 comments
Open

Handle route relations #4

xivk opened this issue May 28, 2020 · 0 comments
Assignees
Labels
enhancement New feature or request profiles This affects the profiles.

Comments

@xivk
Copy link
Contributor

xivk commented May 28, 2020

Problem

We need to be able to handle route relations and networks:

  • Cycling networks
  • Pedestrian networks
  • Public transport networks.

Other case this could apply to:

  • Low emission zones.
  • A country ID with country specific rules.

These are usually not modeled as part of the edge attributes and have the following issues:

  • An edge can be part of multiple sets.
  • The attributes can be similar but different making copying the attributes to the attributes set problematic:

Workarounds

Copying the attributes:

This could be done using a namespace prefix set1_(key)=(value) for example. This is problematic because these semantics will have to be taken over and used everywhere:

  • Profiles interpreting the edges will need to know about the set prefix.
  • The resulting routes or the part building the route object need to know about this part of they let this internal bookkeeping leak to client applications.
  • The order of the sets is irrelevant and it becomes harder to compare profiles for edges.

Suggested solution:

We add another layer on top of the current attributes and edge has in the form of 'edge sets'. These sets could be used to express general properties about edges that are generally not part of the their attributes. This includes but is not limited to: cycling|foot|transit networks, low emissions zones, country ids

Advantages

  • The data model is clearer, an edge has properties but can be part of a set that is independent on it's own properties (for example a route or 'zone').
  • The attributes or the sets are store in one location (or per tile) and can be update without updating all member edges.
  • No attributes in the edges attribute set that are artificial.

Disadvantages

  • The concept needs to be introduces in Itinero and bleeds through everywhere:
    • The profiles need to implement set membership as a option.
    • The route output needs to become more advanced and include sets.
    • The data model of a tile has to be adapted to be able to store set membership.
    • The data model of cached edge types needs to include set membership.
@xivk xivk self-assigned this May 28, 2020
@xivk xivk added the enhancement New feature or request label May 28, 2020
@xivk xivk changed the title Handle relations Handle route relations Jun 10, 2020
@xivk xivk added the profiles This affects the profiles. label Jun 10, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request profiles This affects the profiles.
Projects
None yet
Development

No branches or pull requests

1 participant